Comunidad de diseño web y desarrollo en internet online

Arrays y Bucles ayuda necesito

Citar            
MensajeEscrito el 21 Jul 2005 11:46 pm
Hola, vereis, estoy con otro ejercicio, y tengo medio codigo escrito, pero como esto de actionscript no consiste en copiar tal cual si no en entender lo que copias me surgen dudas.
Vereis este es el codigo (no esta terminado aun asi que no funciona)

/

Código :

/array de palabras
wordlist=new Array("computer", "office", "coffee", "flash", "animal", "america", "panel", "window", "import", "number", "string", "cake", "object", "movie", "utena");
//array para las letras
lettersNeeded=new Array(10);
lettersGuessed=new Array(10);
//paramos linea de tiempo,ahorcado_mc, y ocultamos interface_mc
stop();
//ahorcado_mc.stop();
interface_mc._visible=false;
//ordenes para el play_mc
playgame_btn.onRelease=function(){
   ahorcado_mc.gotoAndStop("Play");
   interface_mc._visible=true;
   playgame_btn._visible=false;
//usa un numero aleatorio
randomnumber=Math.round(Math.random()*(wordlist._length-1));
selectedword=wordlist[randomnumber];


Bien lo que me interesa esta relacionado con estas lineas

Código :

Array("computer", "office", "coffee", "flash", "animal", "america", "panel", "window", "import", "number", "string", "cake", "object", "movie", "utena");
randomnumber=Math.round(Math.random()*(wordlist._length-1));
selectedword=wordlist[randomnumber];

que no son otras que la segunda, la penultima y la ultima respectivamente.
La parte que no entiendo basicamente esta en la penultima y en la ultima parte de esta, es decir

Código :

(wordlist._length-1));

por ello he intentado para llegar a comprender hacer un bucle por mi cuenta para que me muestre como exactamente muestra la informacion esta linea(creo tener una idea pero quiero verlo)
Este es mi codigo

Código :

WORD=wordlist._lenght-1
   selec=wordlist[WORD]
   for(i=0;i<15;i++){
      trace(selec);   
      }

Repito que lo que quiero con este codigo es que me muestre el contenido del array con la condicion que he guardado en "WORD".
No debe de estar bien por que me sale undefined en todos y me deberia salir lo que contiene el array wordlist.
¿Sabeis como puedo mostrar "WORD"?.
Gracias

Por neoarcangel

39 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Jul 2005 02:50 am
es:

Código :

WORD=wordlist.lenght-1 

no:

Código :

WORD=wordlist._lenght-1 

el _ sobra :wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 22 Jul 2005 03:55 pm
Ok, de acuerdo, ahora parece que funciona pero...¿para que se le resta 1 al tamaño original del array? y ¿por que a esta linea

Código :

randomnumber=Math.round(Math.random()*(wordlist._length-1));


se la multiplica por Math.random?

Por neoarcangel

39 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Jul 2005 04:21 pm
ok insisto es wordlist.length no wordlist._length

y Math.random retorna un valor entre 0 y 1, la razon de que se multiplique es para el length-1 es para llegue a un valor comprendido entre 0 y el maximo del vector(que es lenght-1)

Debes tener en cuenta que length retorna cuantos elementos hay en un array, no la maxima posicion te explico mejor esto:

Código :

wordlist=new Array("1", "2", "3", "4", "5", "6", "7l", "8", "9", "10", "11", "12", "13", "14", "15");

si hacemos un length de wordlist nos devolvera 15 porque el array contiene 15 elementos, pero para acceder a "15" tendriamos que hacer wordlist[14] es decir length-1 porque actionscript empieza los valores del array desde 0 hasta length-1 :wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 23 Jul 2005 01:22 am
lo de math.random entendido, lo que hace el length tambien, y creo que lo del "wordlist.length-1" tambien, ya que como bien dices ( ya a mi se me habia pasado completamente) son 14 elementos contando desde el 0, pero ¿y que pasaria si lo dejasemos en "wordlist.length" a secas?.
Supongo que daria algun error pero ¿por que?.
Lo digo mas que nada por que muchas personas que estan empezando en esto de actionscript, al hacer un ejercicio semejante la mayoria se dejaria el menos 1, entonces ¿que es lo que falla si no lo pones?.

Por neoarcangel

39 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Jul 2005 02:46 am
Ok al parecer no entendiste bien lo del length, vuelvo a explicarte, si tenemos un vector de 5 elementos, algo asi:

Código :

vector=new Array("Maria", "Pedro", "neoarcangel", "Jose", "Maikel");


Entonces, la manera de acceder a cada uno de los elementos seria así:

Código :

trace(vector[0]); //escribiria Maria
trace(vector[1]); //escribiria Pedro
trace(vector[2]); //escribiria neorarcangel
trace(vector[3]); //escribiria Jose
trace(vector[4]); //escribiria Maikel


Pero cuantos elementos hay en el vector 5 cierto?
length retorna la cantidad de elementos que hay en el vector, por lo que si hacemos vector[vector.length] estariamos accediendo a vector[5] y esta posición no existe y nos imprimiría nuestro gran undefined :lol: , por eso hacemos length-1 que estariamos accediendo a una posicion válida la cual sería para nuestro ejemplo vector[4] esto seria igual a vector[vector.length-1] y nos imprimiria Maikel :D

Ahora si vamos a generar un numero aleatorio debemos hacerlo hasta vector.length-1 por lo antes explicado cierto, ahora dijimos que Math.random() retorna un numeroN de la manera que: 0<=N<1, cuando a N lo multiplicamos por vector.length-1 y redondeamos el valor Math.round(//numero a redondear) estariamos generando un numero entre 0<= N < vector.length-1, que en nuestro ejemplo seria entre 0<= N < 4, OJO < no <=, es decir 0,1,2,3 porque nunca llega a 1, asi que en tu ejemplo el numero aleatorio nunca llega a el ultimo valor de tu vector, puedes ponerle vector.length para que llegue al último valor del vector :D

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 23 Jul 2005 04:09 am
Lo cual quiere decir, que necesitas echarle una leida a estos tutoriales (en ese orden)

http://www.cristalab.com/tutoriales/101/fundamentos_de_la_programacion

http://www.cristalab.com/tutoriales/78/guia_definitiva_para_novatos_de_flash

http://www.cristalab.com/tutoriales/93/tutorial_basico_de_programacion_en_flash_mx

http://www.cristalab.com/tutoriales/51/tutorial_de_programacion_orientada_a_objetos_en_actionscript_2.0

Antes de continuar, así entenderas mejor lo que haces... ;) suerte

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 23 Jul 2005 04:49 am
Opino lo mismo que Sephirot y OJO en ese orden que él te lo da, sino comprendes uno leelo de nuevo hasta que lo comprendas para pasar al siguiente :wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 23 Jul 2005 01:55 pm
Ok, gracias, entendido ¡¡¡¡por fin!!!! te agradezco mucho el tiempo que has invertido en las explicaciones.
En cuanto a sephirot, ya me los habia leido todos, pero igual no en ese orden, no obstante volvere a hacerlo, a ver si puedo extraerle todo el jugo al AS.
Pero claro, y es la situacion en la que estoy, por muchos tutoriales que te leas siempre hay ejercicios que combinan elementos de forma que no lo hacen en los tutoriales, quiero decir que cada ejercicio es un mundo, y hay que intentar aprender conforme a cada ejercicio.
Por eso tambien pido algo de paciencia ya que aprender un lenguaje de programacion por ti mismo sin ninguna ayuda, cuesta bastante, y la mejor manera de aprender es preguntar sobre tus errores e intentar corregirlos
De todos modos agradezco el apunte.
Saludos

Por neoarcangel

39 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.