Foros del Web » Programando para Internet » Javascript »

un pequeño juego javascript, necesito ayuda...porfavor

Estas en el tema de un pequeño juego javascript, necesito ayuda...porfavor en el foro de Javascript en Foros del Web. La aplicacion esta ,consiste en mostrar al usuario una serie de 10 numeros entre el 1 y el 100. estos seran seleccionados de forma aleatoria. ...
  #1 (permalink)  
Antiguo 04/12/2010, 07:37
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
un pequeño juego javascript, necesito ayuda...porfavor

La aplicacion esta ,consiste en mostrar al usuario una serie de 10 numeros entre el 1 y el 100. estos seran seleccionados de forma aleatoria. posteriormente el usuario debera reconstruir la serie introduciendo los numeros en el orden adecuado. estos se introduciran mediante la funcion prompt. la pantalla solo mostrara dos botones: jugar y comprobar aciertos.


ejemplo: el usuario pulsa jugar. mostraremos los diez numeros de una sola vez, y tras un periodo de 5 segundos. estos desaparecen. a continuacion se le solicitan los numeros al usaurio. finamlmente este pulsa comprobar resultado para visualizar el numero de aciertos.


mi duda: nose como guardar los 10 numeros aleatorios en un arai y compararlo para ver si esta en el roden correcto mediante el promt....esto es lo que llevo, nose me da bien programar....

Código:
<html>
<head>
<title>mi pequeña aplicacion</title>
</head>
<body>
 
<script type="text/javascript">

  // array 

  //almacena el array 10 numeros
var arai2 = new Array(); 
var arai1 = new Array(); 
// Genera 100 numeros aleatorios y te los mete en una caja
function genNumero() {
  var i;
  var impi=document.getElementById("ale");
  
  for(i = 0; i < 10; i++) {
    
            arai1[i] = Math.round (Math.random()*100);
     }
 impi.innerHTML=arai1;  
 
   
  }

function guardarAleatorio() {
   for (i=0; i<arai1.length; i++) {
      arai1[i] = arai2[i];
   }
}




function tiempo () {
setTimeout(' refresh(); insertar(); ', 5000);




}


function insertar(){
var numero = prompt("Introduce el orden correcto:");
}


function refresh()      //refresca la pagina
{
  
    window.location.reload( false );
}



</script>

</script>
 



<p id="ale">     </p>

<form>


<br><br>
  <input type="button" value="Jugar"
         onclick="genNumero(); tiempo();";>
</form>
  #2 (permalink)  
Antiguo 04/12/2010, 07:58
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

Yo lo haría así:
Código Javascript:
Ver original
  1. var arai1 = [], arai2 = []; // [] equivale a new Array()
  2. function genNumero(){
  3.   var i, impi=document.getElementById("ale");
  4.   for(i = 0; i < 10; i++) {
  5.    arai1[i] = Math.round (Math.random()*100);
  6.   }
  7.   impi.innerHTML=arai1.join();
  8.   /*
  9.      join() sirve para mostrar los valores
  10.      que tiene guardados un array
  11.      puedes poner un separador especial,
  12.      por ejemplo 'Hola-mundo', que sería join('-')
  13.      si no pones nada saldrá una coma
  14.   */
  15. }
  16. funcion guardar(str){
  17.  var nums = str.split(',');
  18.  for(i=0;act=nums[i];i++){
  19.   arai2[i] = act;
  20.  }
  21.  return arai2;
  22. }
  23. function borrar() {
  24.  setTimeout('document.getElementById("ale").innerHTML=""; insertar();', 5000);
  25. }
  26. function insertar(){
  27.  guardar(prompt("Introduce el orden correcto separando los números con comas:", ''));
  28. }
  29. function comprobar(){
  30.  if(arai1.join()==arai2.join())
  31.   alert('Correcto');
  32.  else{
  33.   alert('Incorrecto')
  34.   insertar();
  35.  }
  36. }
PD: Tienes dos </script>
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 04/12/2010, 08:31
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

graciass crono, pero al implementar tu codigo no me imprime los 10 numeros aleatorios creado....nose si es por el join(), o la funcion insertar...



Código:
<html>
<head>
<title>JavaScript </title>
</head>
<body>
 
<script type="text/javascript">

var arai1 = [], arai2 = []; // [] equivale a new Array()

function genNumero(){
  var i, impi=document.getElementById("ale");
  for(i = 0; i < 10; i++) {
   arai1[i] = Math.round (Math.random()*100); 
  }
  
impi.innerHTML=arai1.join('_'); 
  /* 
     join() sirve para mostrar los valores 
     que tiene guardados un array
     puedes poner un separador especial,
     por ejemplo 'Hola-mundo', que sería join('-')
     si no pones nada saldrá una coma
  */

funcion guardar(str){
 var nums = str.split(',');
 for(i=0;act=nums[i];i++){
  arai2[i] = act;
 }
 return arai2;
}
function borrar() {
 setTimeout('document.getElementById("ale").innerHTML=""; insertar();', 5000);
}
function insertar(){
 guardar(prompt("Introduce el orden correcto separando los números con comas:", ''));
}
function comprobar(){
 if(arai1.join()==arai2.join())
  alert('Correcto');
 else{
  alert('Incorrecto')
  insertar();
 }
}

</script>

<p id="ale">     </p>

<form>



<br><br>
  <input type="button" value="Jugar"
         onclick="genNumero(); borrar();";>

<input type="button" value="Comprobar resultado"
         onclick="comprobar();";>
</form>



</body>

</html>
  #4 (permalink)  
Antiguo 04/12/2010, 09:22
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

es por un error de tipeo funcion guardar(str)
  #5 (permalink)  
Antiguo 04/12/2010, 09:30
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

hmm es verdad esta mal puesto, pero de todas formas no me imprime los 10 numeros aleatorios por pantalla, el boton esta bien puesto algo va mal en genNumero() y nose cuales llevo 1 horas, pero no encuentro
  #6 (permalink)  
Antiguo 04/12/2010, 09:49
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

vale ya se porque no va

me falta } cerrar llave en la funcion genNumero()....pero el programa no va ya que ni muestra los 10 numeros aleatorios ni espera lso 5 segundos para que apareciera el prompt


function join() { [native code] } ...me sale esto por pantalla
  #7 (permalink)  
Antiguo 04/12/2010, 09:53
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

vale arreglado impi.innerHTML=arai1.join() (habia que poner parentesis para que lo separe por coma) , el problema ahora es la funcion borrar no bora la pantalla......vamos que me estoy volviendo loco.....y lo de comprobar no se como implemetarlo al boton comprobar resultado y ver los numeros de errores
  #8 (permalink)  
Antiguo 04/12/2010, 10:01
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

ah vale error mio, tenia que haber llamado a la funcion borrar, en el boton jugar..... la aplicacion ya funciona correctamente si introduces el orden completo .....te dice correcto y sino incorrecto......pero quiero que me diga el numero de aciertos que tengo en vez de tener que acertar todo.

hmm seria una comparacion uno por uno del arai??


Código:
<html>
<head>
<title>JavaScript .</title>
</head>

 
<script type="text/javascript">

var arai1 = [], arai2 = []; // [] equivale a new Array()

function genNumero(){
  var i, impi=document.getElementById("ale");
  for(i = 0; i < 10; i++) {
   arai1[i] = Math.round (Math.random()*100); 
  }
  
impi.innerHTML=arai1.join(); 
}
  /* 
     join() sirve para mostrar los valores 
     que tiene guardados un array
     puedes poner un separador especial,
     por ejemplo 'Hola-mundo', que sería join('-')
     si no pones nada saldrá una coma
  */

function guardar(str){
 var nums = str.split(',');
 for(i=0;act=nums[i];i++){
  arai2[i] = act;
 }
 return arai2;
}
function borrar() {
 setTimeout('document.getElementById("ale").innerHTML=""; insertar();', 5000);
}
function insertar(){
 guardar(prompt("Introduce el orden correcto separando los números con comas:", ''));
}
function comprobar(){
 if(arai1.join()==arai2.join())
  alert('Correcto');
 else{
  alert('Incorrecto')
  insertar();
 }
}

function refresh()      //refresca la pagina
{
  
    window.location.reload( false );
}




</script>

<body>

<p id="ale">     </p>

<form>



<br><br>
  <input type="button" value="Jugar"
         onclick="genNumero();  borrar()";>

<input type="button" value="Comprobar resultado"
         onclick="comprobar();";>
</form>



</body>

</html>

Última edición por sapu01; 04/12/2010 a las 11:57
  #9 (permalink)  
Antiguo 04/12/2010, 12:00
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

aun veo problema en la aplicacion. luego de ordenado me indica incorrecto. sin embargo, si lo ordeno en el mismo orden en que aparece en pantalla me indica correcto. para comprobar que tenga el orden correcto, tienes que ordenar el array principal antes de comprarlo con string introducido por el jugador. para ordenarlo puedes usar la funcion sort pasandole como argumento una funcion que ordene por numero.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #10 (permalink)  
Antiguo 04/12/2010, 12:24
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

zerokilled.....es que la aplicacion pide que se ordenana en el orden correcto ,se trata de que la aplicacion muestre 10 numeros.....y a los 5 segundos desaparece y tu lo tienes que ordenar por el mismo orden .....pero claro esta aplicacion solo funciona si has ordenado todo los nuemros coreectamente , yo quiero que si has ordenado bien los 3 primeros...."me diga tienes 3 aciertos" , o si has puesto bien el primero, y el ultimo numero diga....."tienes 2 aciertos"...

pero mi cabeza no da pa esto nose que algoritmo crear y como compararlo uno por uno el arai1 y arai2....
  #11 (permalink)  
Antiguo 04/12/2010, 12:48
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

claro, entiendo que el jugador es quien tiene que ordenarlo. a lo que me refiero es al momento de compararlo, no al momento de mostrarlo en pantalla. para buscar los aciertos tienes que recorrer ambos arrays y contar cuantas posiciones tienen el mismo valor.

@edit, sera que estoy bien dormido
Cita:
y tu lo tienes que ordenar por el mismo orden
¿tiene que ordenarlo por el mismo orden que aparece en pantalla? en ese caso no tienes que usar sort. solo recorres ambos array y comparas los valores para la misma posicion del array.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 04/12/2010 a las 12:59
  #12 (permalink)  
Antiguo 04/12/2010, 13:14
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

var contador=0;
for (i=0;i<arai1();i++) {
for ( j=0;j<arai2(); j++) {
if(arai1(1)==arai2(1))
contador++;


seria una cosa asi?? o.. estoy mas perdido una aguja en un pajar.
  #13 (permalink)  
Antiguo 04/12/2010, 13:29
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

mas perdido que una aguja en un pajar pero no tanto... veamos. solo necesitas un bucle para recorrer por ambos array. y lo mas importante, la estructura. fijate que los array no son funciones. si pones un par de parentesis seguido de un identificador, javascript entendera que estas invocando una funcion. lo marcado en rojo esta mal.
Código:
var contador=0;
for (i=0;i<arai1();i++) {
for ( j=0;j<arai2(); j++) {
if(arai1(1)==arai2(1))
contador++;
en el condicional del bucle tienes que comparar que el indice (variable i) sea menor que la longitud del array. la longitud del array la obtienes mediante la propiedad length. finalmente, para acceder a los elementos del array, tienes que indicar el indice entre corchetes seguido del identificador.

Código:
for(inicializacion; condicion; iterador){
cuerpo;
}

// ejemplo ;
var a = [true, false];
for(var i = 0; i < a.length; i++){
alert(a[i]);
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #14 (permalink)  
Antiguo 05/12/2010, 03:52
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

var contador=0;
for (i=0;i<arai1.lenght;i++) {
if (arai1[i])==(arai2[i])

contador++;

sigo sin entender como recorrer ambos array con un solo bucle y comparar su posicion y el valor que tiene...hmmm donde meteria la condicion if ...cuando la posicion y el valor coincide, y el contador de aciertos??
  #15 (permalink)  
Antiguo 05/12/2010, 04:09
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

vas más o menos bien, salvo dos detalles. el más sencillo, la propiedad de longitud del array esta mal escrita. el segundo, y no por ello menos importante, tienes error de sintaxis. las sintaxis son un formato bien rígido. es decir, las sentencias tienen una forma particular de escribirse. fijate como se escribe un condicional if.

Código:
// sipnosis 1 ;
if( condicion ){
bloque de codigo
}

// sipnosis 2 ;
if( condicion ) expresion;
en tu código, fijate que tienes pareado mal los paréntesis. de hecho, le cambia el significado a la sentencia. javascript entiende lo siguiente.
Código:
if (arai1[i]){
==(arai2[i])
} 
las llaves en rojo lo agregue para ilustrar qué es lo que javascript ve. la linea en verde genera error porque la expresión no esta bien escrita. de todos modos, casi ya lo tienes hecho, solo tienes que eliminar los dos paréntesis dentro de la condición.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #16 (permalink)  
Antiguo 05/12/2010, 04:21
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

si, estoy de acuerdo, un error de sintaxis por tdoa parte...me esta volviendo loco con javascript....y no voy sobrao codigo C...



var contador=0;
for (i=0;i<arai1.lenght;i++) {
if (arai1[1]==arai2[1])
contador++;
else {
contador--;
}
if (arai1[2]==arai2[2])
contador++;
else {
contador--;
}

en la condicion if deberia poner en los valores i EL NUMERO de la posicion no? para que pueda comparar ?
  #17 (permalink)  
Antiguo 05/12/2010, 04:30
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

es correcto, vendria siendo la variable i que se define en el bucle for, tal como lo tenias antes. de lo contrario no tiene gracia siempre verificar la misma posicion en cada ciclo. por otro lado, no veo el sentido de por que restar uno a contador en else. cuando los valores del array no son iguales el contador resta uno produciendo asi un valor impreciso. por ejemplo, imagina que de 10 numeros solo 1 fue introducido en el orden correcto. ¿que valor tendria contador? el mensaje final apareceria como "tienes -9 aciertos". por tanto, la clausula else no deberia incluirla.

@edit,
sobre el tema de la comparacion de los arrays, la logica es la siguiente. asumiendo que ambos arrays tienen la misma longitud, solo tienes que recorrer un array. para determinar que el orden tenga el mismo valor tienes que comparar ambos array indicando los mismo elementos o pocisiones. es decir, cada indice va pareado. para ello, solo tienes que utilizar la misma variable de iteracion en el indice del array.
Código:
var array_a = [true, false, null];
var array_b = [0, 1, 2];
for(var iterator = 0; // iniciacion del iterador ;
iterator < array_a.length; // se lee la longitud de un solo array ;
iterator++ // modificacion del iterador ;
) if(array_a[iterator] == array_b[iterator]); // fijate que se usa la misma variable iterador en ambos array ;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 05/12/2010 a las 04:39
  #18 (permalink)  
Antiguo 05/12/2010, 04:39
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

ah es verdad el bucle for ya recorre el arai entero sin que yo le diga la posicion......hmm pero
entonces si en un posicion has introducido mal....y en otra bien?? como sabra el contador sumarle o restarle el acierto??


var contador=0;
for (i=0;i<arai1.lenght;i++) {
if (arai1[i]==arai2[i])
contador++;

}
  #19 (permalink)  
Antiguo 05/12/2010, 04:43
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

un poquito de sentido común... no tienes que restarle cuando no hay aciertos puesto que la variable contador esta inicializada con valor cero. al asignarle un valor cero se esta presuponiendo que no hay ningún acierto. logicamente, no puedes hacer ambas operaciones. si vas a restar, se presupone que todos los aciertos son correctos, de modo que la variable habrá que iniciarla con el valor de longitud del array. en cuanto a tu duda mas concreta, el interprete ejecuta la expresion contador++ solo cuando el condicional de if evalua a cierto. por tanto, es la misma expresion (la condicion de if) quien determina si ambos valores son iguales.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 05/12/2010 a las 04:57
  #20 (permalink)  
Antiguo 05/12/2010, 04:56
 
Fecha de Ingreso: diciembre-2010
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: un pequeño juego javascript, necesito ayuda...porfavor

ah vale si, hmm pero al comparar el arai su posicion y valor , si estos coinciden se suma contador++, pero si no coinciden no se hace nada.... , muchas gracias por la ayuda zerokilled....vas a tener que ser muy paciente conmigo....mi profesor ya se ha artao por eso lo pregunto por los foros buscandome la vida...

seria ..

var array_a = [true, false, null];
var array_b = [0, 1, 2];
for(var iterator = 0; // iniciacion del iterador ;
iterator < array_a.length; // se lee la longitud de un solo array ;
iterator++ // modificacion del iterador ;
) if(array_a[iterator] == array_b[iterator]); // fijate que se usa la misma variable iterador en ambos array ;

en mi aplicacion seria:
var arai1 = [];
var arai2 = [];
var acierto=0;
for (i=0;i<arai1.lenght;i++) {
if (arai1[i]==arai2[i])
acierto++;
}

Etiquetas: juegos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:40.