Skip to content

Commit c51ef39

Browse files
authored
Merge pull request mouredev#5817 from Rafacv23/mouredev#34
mouredev#34 - Javascript
2 parents fd145ba + 94a5555 commit c51ef39

File tree

1 file changed

+100
-0
lines changed
  • Roadmap/34 - ÁRBOL GENEALÓGICO LA CASA DEL DRAGÓN/javascript

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/*
2+
Creado por Rafa Canosa
3+
Github: https://github.com/Rafacv23
4+
Website: https://www.rafacanosa.dev
5+
*/
6+
7+
let characters = [] // array donde vamos a ir guardando todos los personajes
8+
9+
function printCharacters() {
10+
if (characters.length === 0) {
11+
console.log("No hay personajes para mostrar.")
12+
return
13+
}
14+
15+
console.log("Lista de Personajes:")
16+
characters.forEach((character, index) => {
17+
console.log(`\nPersonaje ${index + 1}:`)
18+
character.displayInfo()
19+
})
20+
}
21+
22+
class Character {
23+
constructor(name, partner = null, children = [], parents = []) {
24+
this.name = name
25+
this.partner = partner // Solo un partner permitido
26+
this.children = children
27+
this.parents = parents // Lista de padres del personaje
28+
characters.push(this)
29+
}
30+
31+
// Método para establecer un partner
32+
setPartner(partner) {
33+
if (partner instanceof Character) {
34+
if (this.partner === null) {
35+
//si es null significa que no tiene una pareja y le podemos asignar una
36+
this.partner = partner
37+
partner.partner = this // asignamos la pareja a ambos personajes a la vez, para no tener que llamar al método dos veces
38+
console.log(`Ahora ${partner.name} y ${this.name} son pareja`)
39+
} else {
40+
console.error(
41+
`${this.name} ya tiene una pareja, por lo tanto no le podemos asignar otra.`
42+
)
43+
}
44+
} else {
45+
console.error("Partner debe ser una instancia de Character.")
46+
}
47+
}
48+
49+
// Método para agregar un child
50+
addChild(child) {
51+
if (child instanceof Character) {
52+
if (this.children.includes(child)) {
53+
console.error(`${child.name} ya es hijo de ${this.name}`)
54+
} else if (child.parents.length >= 2) {
55+
console.error(`${child.name} ya tiene el máximo de 2 padres`)
56+
} else {
57+
this.children.push(child)
58+
if (!child.parents.includes(this)) {
59+
child.parents.push(this)
60+
}
61+
console.log(`${this.name} ha añadido a ${child.name} como hijo`)
62+
}
63+
} else {
64+
console.error("Child debe ser una instancia de Character.")
65+
}
66+
}
67+
68+
// Método para mostrar la información del personaje
69+
displayInfo() {
70+
console.log(`Name: ${this.name}`)
71+
console.log(`Partner: ${this.partner ? this.partner.name : "Ninguno"}`)
72+
console.log(
73+
`Children: ${
74+
this.children.length >= 1
75+
? this.children.map((c) => c.name).join(", ")
76+
: "Ninguno"
77+
}`
78+
)
79+
console.log(
80+
`Parents: ${
81+
this.parents.length >= 1
82+
? this.parents.map((p) => p.name).join(", ")
83+
: "Ninguno"
84+
}`
85+
)
86+
}
87+
}
88+
89+
const daemon = new Character("Daemon Targaryen")
90+
const laena = new Character("Laena Velaryion")
91+
const baela = new Character("Baela Targaryen")
92+
const rhaena = new Character("Rhaena Targaryen")
93+
94+
daemon.setPartner(laena)
95+
daemon.addChild(baela)
96+
daemon.addChild(rhaena)
97+
laena.addChild(baela)
98+
laena.addChild(rhaena)
99+
100+
printCharacters()

0 commit comments

Comments
 (0)