També la intenció és generar un array dels nombres aleatoris que s'han generat per fer les cartes.
No acaba de funcionar, on hi ha l'error? Què milloraries?
for (var n= 0; n<=12; n=n+1){
var nn= Math.random()
baraja[baraja.length]= {palo:"cors"+n, valor: nn};
yaya[yaya.length]=baraja[n].valor
}
for (var m= 0; m<=12; m=m+1){
var mm= Math.random()
baraja[baraja.length]= {palo:"diamants"+m, valor: mm};
yaya[yaya.length]=baraja[m].valor}
Millores que podem fer al codi perquè sigui més bo de llegir:
1. Sagnar el codi,
Significa que tot el que va dins un parell de claus ho tabulam(feim que les línies comencin a una columna més interior) i així veim clarament què es el que està dins aquest bloc
for (var n= 0; n<=12; n=n+1){
var nn= Math.random()
baraja[baraja.length]= {palo:"cors"+n, valor: nn};
yaya[yaya.length]=baraja[n].valor
}
2. Vigilar el nom de les variables, arrays
Què s'hi deu emmagatzemar dins yaya?
Per la descripció que vos he fet de la intenció del codi al principi, hi emmagatzemam tots els nombres aleatoris que s'ha assignat a les cartes.
Pensau que el codi ha de ser bo de mantenir(ho pot haver de modificar una altra persona i ho ha d'entendre fàcilment, o tu mateix després de passat un any)
No descriu millor el contingut del array el nom nomAleatoris o nombresAleatoris encara que sigui més llarg?
Nota
Pensau que quan un programa es passa a codi executable, mitjançant el procés de compilació, aquests noms que hem assignat al codi font es converteixen en una adreça de memòria(per tant a l'hora d'executar un programa el nom de les variables no fa que s'utilitzi més recursos(memòria principal o CPU), en el cas dels llenguatges interpretats com es JavaScript el que fa la tasca d'interpretar el codi és el navegador mitjançant el seu intèrpret de JavaScript, el que no sé és com fan aquesta conversió i si la fan. Segur que deu dependre del motor de JavaScript de cada navegador...El motor de JavaScript que duu el Firefox és el SpiderMonkey escrit amb C/C++(llenguatges compilats)
la variable yaya dins el bucle FOR ja te asignada 13 cartes de cors a les 13 primeres posicions. El segon bucle For torna a asignar a la varible yaya les mateixes posicions de les cartes cors i per tant es repeteixen el valors anteriors.
ResponEliminaUn administrador del blog ha eliminat aquest comentari.
ResponEliminaL'error que he vist en aquest programa és que en el primer bucle, es fiquen les cartes de palo "cors" en les primeres posicions de l'array "baraja" tenint en compte la posició (n), mentres que en el segon bucle, es creen cartes de valor aleatori amb el palo "diamants" i es fiquen dins les següents posicions de l'array "baraja" ,però dins l'array "yaya" es fiquen les primeres posicions de l'array "baraja", ja que es bucle comença també com el primer pel 0 i no pel 12.
ResponEliminaEl error es que la segona vegada que fica les cartes a la variable yaya hi posa per segona vegada les cartes que ha creat en el primer 'for', ja que en el segon 'for' hi fica les cartes en les posicions a partir del 12, ja que les posicions anteriors ja estan ocupades, però al ficar en yaya les cartes utilitzant la posició 'm', com la variable es nova, ficarà les 12 primeres posicions una altra vegada.
ResponEliminaL'autor ha eliminat aquest comentari.
ResponEliminalike!
EliminaL'autor ha eliminat aquest comentari.
ResponEliminaL'autor ha eliminat aquest comentari.
EliminaEl math.random té límit entre 0 i 1, així que podria general qualsevol numero, hauria de declarar un màxim per que només generi un nombre aleatori dins l'array de baraja
ResponEliminaUna vegada es crea una carta, aquesta no s'elimina de l'array baraja, així que podriem trobar cartes repetides de la baraja.
baraja[baraja.length] no existeix, ja que la posició màxima a la que pot arribar és baraja[baraja.length-1].
En el segón bucle fica les cartes a la variable yaya que són els mateixos valors com el que feia el primer bucle
Dejando a un lado que las variables no son muy descriptivas y que el código no esta espaciado, vemos que la primera carta que crea no es el 1c o 1d sino el 0c o 0d. Cuando usa m coge en la baraja el valor de las cartas de corazones en vez de los de diamantes para solucionarlo podriamos sumar 13 en el índice para evitar que use las de corazones
ResponEliminaUn error que he trobat es que el Math.random pot generar nombres entre 0 i 1. Tenim que declarar un màxim per a que el Math.random generi el nombres que hi ha entre aquest.
ResponEliminaEn el segon bucle fica les cartes a la variable yaya amb els mateixos valors que en el primer bucle, ya que "m", té com a màxim 12, igual que "n".
~baraja[baraja.length] no existeix, ja que pa posició màxima que pot
ResponEliminaassolir baraja és baraja.length-1.
~També s'ha declarat una variable dins un for, que sobreescriu el
seu valor cada vegada que es repeteix el bucle.
~No se per què ha concadenat les variables n i m al pal de cada carta.
~S'hauria de declarar un màxim per la funció Math.random(), ja que
tal i com està escrit només pot assignar valors del 0 al 1.
~baraja[baraja.length-1] sempre serà la darrera carta de baraja.
S'hauria d'introduïr un Splice per llevar de baraja la darrera carta i que
el for pogués continuar assignant valors aleatoris a baraja.
~El valor de Math.random() podria repetir-se i causar un error al codi.
~Com que yaya[yaya.length-1] es emprat als dos fors, s'assignen valors
a yaya[yaya.length-1], dins el primer for es sobreescriuen i en arribar al
segon for es tornen a sobreescriure a la mateixa posició.
L'autor ha eliminat aquest comentari.
ResponEliminaLa variable ''baraja'' no está definida con un array por lo que no existe ninguna carta a la que asignarle un valor aleatorio. Del mismo modo ''yaya'' tampoco está definida para almacenar las cartas con los valores aleatorios.
ResponEliminaEn el bucle ''for'' dado que comienza en zero la primera carta del bucle tendrá un valor de 0 que es imposible.
En el segundo bucle ''for'' se utiliza ''yaya'' para almacenar las cartas, copiando de nuveo los mismos valores que en el bucle anterior.
Hay saltos de líneas innecesarios en la línea 5 y 11.
Els "for" comencen a 0 i la primera carta de cada "palo" té el nombre 0 (cors0, diamants0), que no existeix a una baralla de cartes, i arriba fins a 12 i no a 13. A més, al segon "for" es fiquen els valors a "yaya", però com s'utilitza la variable "m" es tornen a escriure els mateixos valors de l'anterior "palo" i queden 13 valors repetits en lloc dels 13 nous. El que jo faria és posar:
ResponEliminayaya[yaya.length]=baraja[yaya.length].valor