Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Brian1511 en 28 Julio 2015, 03:45 am



Título: [Java Script] Arrays Multidimensionales
Publicado por: Brian1511 en 28 Julio 2015, 03:45 am
Hola que tal, bueno anteriormente al parecer habia puesto un post en este foro que no iba, pero es que en este es el unico que me ayudan.

Tengo esta array:

Código
  1. var AttackType = {
  2. Water : {
  3. name: "Water",
  4. bubble: ["Burbujas",0],
  5. waterfall: ["Fuente de Agua",1],
  6. clamp: ["Clamp",2],
  7. hydropump: ["Hidro Ataque",3],
  8. crabhammer: ["Pinzas",4],
  9. watergun: ["Pistola de Agua",5]
  10. bubblebeam: ["Burbuja Explosiva",6]
  11. }
  12. }
  13.  

Se que epara llamar uno solo introdusco:

AttackType.Water.name //Va a ser igual a Water.
Pero como uso un Random para obtener cualquiera de estos datos de esta forma:
Código
  1.    var Random = Math.floor((Math.random() * AttackType.Water.length) + 1)
  2. Pokemon_Attacks[IDPOKEMON][ATTACKSLOT][0]=AttackType.Water[Random].name;
  3. Pokemon_Attacks[IDPOKEMON][ATTACKSLOT][1]=AttackType.Water[Random].id;
  4.  

Y quiero obtener los valores que tiene cada ataque generado aleatorio, ejemplo:

Rnd = 4
Entonces de la lista Attack.Type.Water me tiene que dar el "NOMBRE", ID
en unas variables llamadas
Código
  1. Pokemon_Attacks=[
  2. [
  3. [Ataques del Pokemon1],
  4. [Ataques del Pokemon2],
  5. [Ataques del Pokemon3],
  6. [Ataques del Pokemon4],
  7. [Ataques del Pokemon5],
  8. [Ataques del Pokemon6]
  9. ]];
  10.  

Esto lo tengo controlado pero quiero hacer que se agregue un ataque aleatorio como ya les comente!


Título: Re: [Java Script] Arrays Multidimensionales
Publicado por: engel lex en 28 Julio 2015, 04:11 am
las clases no están hechas para ser elegidas al azar... para eso está el array D: pero aquí un workaround

(te faltó una coma en linea 9)

Código
  1. var conteo = 0;
  2. var azar = 0;
  3. var ataque;
  4. for(ataque in AttackType.Water) conteo++;
  5. var azar = parseInt(Math.random() * conteo);
  6. for(ataque in AttackType.Water){
  7.  if(azar--==0)break;
  8. }
  9. alert(ataque)

no se si quieres eliminar el primero (name:"Water"), pero si es así azar es 1+Math.random() * (conteo-1)

espero que sirva