Juego campo minado
Clase 14 de 50 • Curso de Programación Básica 2014
Contenido del curso
Clase 14 de 50 • Curso de Programación Básica 2014
Contenido del curso
Farith Comas
Carlos Rojas
Saul Navarro V
Josué Manuel Echandia Asto
Hyrum Palmero
Yehoshua Cabrera Juárez
Eduardo Grajales Villanueva Gr Grajales Villanueva
Juan Javier Arce Tibaduisa
Cesar Anzules
Luis Yanes Murillo
Juan Andres R
Mario Ruano Fernández
Kembert Isaac Nieves Briceño
Emi Garcia
Erick Orlando Velasco Martínez
Deivid Rojas
Germán Restrepo Fernández
Felipe Carrión
Nicolás Bobb
Edgardo Raúl Galletto
Antoly Rasmey
Ricardo Arratia Joglar
Tatiana María Tobón Arteaga
Mario Ruano Fernández
Kembert Isaac Nieves Briceño
Daniel Martín
Oscar
Oscar Daniel Piñeros Hernández
William Nolasco Barrientos
URΔΝΙΟ_235
Giancarlo Vera
Rowinson Eduardo Pineda Pérez
Jesus Daniel
Jhon
Usuario anónimo
Usuario anónimo
jose martinez
Dario nicolas Orazi
Sebastian Suarez
Rowinson Eduardo Pineda Pérez
Este sería un código que genera una matriz que puede ser dimensionada por el usuario, también se podrían elegir cuantas bombas (1) poner aleatoriamente en la matriz e ilustra la matriz final con un document.write :
function aleatorio(minimo, maximo) { var numero = Math.floor(Math.random()*(maximo - minimo + 1) + minimo); return numero; } x = prompt("Valores en x? "); y = prompt("Valores en y? "); alert("Tu matriz es de: " + x + " X " + y); numeroDeBombas = prompt("Cuantas bombas desea poner en el Campo?"); alert("Elegiste " + numeroDeBombas + " bombas!!"); var campo1 = []; campo1.length = x; var cesped = 0; var bomba = 1; var m = 0; for (i = 0; i < x; i++) { campo1[i] = []; for (z = 0; z < y; z++){ if (campo1[i][z] != bomba) { campo1[i][z] = cesped; } } contador = 0; } while (m < numeroDeBombas) { posicionx = aleatorio(0,(x - 1)); posiciony = aleatorio(0,(y - 1)); if (campo1[posicionx][posiciony] != bomba) { campo1[posicionx][posiciony] = bomba; } else if (campo1[posicionx][posiciony] == bomba) { m--; } m++; } for (n = 0; n < x; n++) { for (l = 0; l < y; l++){ document.write(campo1[n][l] + ", "); } document.write("<br>"); }
Espero les sea de utilidad,
Saludos,
Buenísimo!
wooo, que buen código, gracias compañero
Hola aqui les muestro mi Codigo de Campo Minado con Botones, Vidas y Puntajes
<!DOCTYPE html> <html> <head> <meta charset= "utf-8"/> <title>Matrices</title> <script type="text/javascript" src="matriz.js"> </script> <style type="text/css"> html{ color: lightblue; background-color: black; text-align: center; } #vida{color: lightgreen;} #numerobomba{color: yellow} #puntaje{color: orange} </style> </head> <body> <h1 id="titulo">Buscaminas</h1> <h2 id="vida">Vida: 100</h2> <h2 id="numerobomba">Bomba o Cesped</h2> <h2 id="puntaje">Puntaje: 0</h2> <input type="button" id="1" value=" "> <input type="button" id="2" value=" "> <input type="button" id="3" value=" "> <input type="button" id="4" value=" "> <br> <input type="button" id="5" value=" "> <input type="button" id="6" value=" "> <input type="button" id="7" value=" "> <input type="button" id="8" value=" "> <br> <input type="button" id="9" value=" "> <input type="button" id="10" value=" "> <input type="button" id="11" value=" "> <input type="button" id="12" value=" "> <br> <input type="button" id="13" value=" "> <input type="button" id="14" value=" "> <input type="button" id="15" value=" "> <input type="button" id="16" value=" "> <br><br> <input type="button" id="reiniciar" value="Reiniciar"> <script type="text/javascript"> inicio(); </script> </body> </hmtl>
JAVASCRIPT
function inicio () { alert("Estas en un Campo minado\nCada ves que toques una bomba perderas 10 de vida\nCada ves que no toques una bomba ganas 100 puntos\nSI LLEGAS A 1000 puntos Ganas!!!!!!" ) puntaje=0 vida=100 vidai=vida asignar(); paso2(); } function generar(minimo, maximo) { var numero = Math.floor( Math.random() * (maximo - minimo + 1) + minimo ); return numero; } var num=[ , "1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"] var a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, nboton, vida, vivo, vidai,puntaje; var codigo=[ , a1, a2, a3,a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16] nboton=[ ,push1 ,push2,push3,push4,push5,push6,push7,push8,push9,push10,push11,push12,push13,push14,push15,push16] function paso2() { var textovida=document.getElementById("vida"); textovida.textContent="Vida "+vida boton(); } function boton() { for (var i = 1; i <= 16; i++) { var n=i; codigo[i]=document.getElementById(num[i]) var botocito=codigo[i]; botocito.addEventListener("click", nboton[i]) i=n}; } //Botones y Accion de Boton function push1 () {comprobar(0,0)} function push2 () {comprobar(0,1)} function push3 () {comprobar(0,2)} function push4 () {comprobar(0,3)} function push5 () {comprobar(1,0)} function push6 () {comprobar(1,1)} function push7 () {comprobar(1,2)} function push8 () {comprobar(1,3)} function push9 () {comprobar(2,0)} function push10 () {comprobar(2,1)} function push11 () {comprobar(2,2)} function push12 () {comprobar(2,3)} function push13 () {comprobar(3,0)} function push14 () {comprobar(3,1)} function push15 () {comprobar(3,2)} function push16 () {comprobar(3,3)} var textos=["Cesped","Bomba"]; var campo = [[,,,],[,,,],[,,,],[,,,]]; function asignar() { for (var a = 0; a<4 ;a++) { campo[0][a]=generar(0,1) campo[1][a]=generar(0,1) campo[2][a]=generar(0,1) campo[3][a]=generar(0,1)} } function comprobar(n,e) { if (vida>0) { if (puntaje==1000) {ganaste();} else { var posicion=campo[n][e] if (posicion==1) {bomba();} else { nobomba();} asignar(); } } else {perdiste();} } function bomba() { var textovida=document.getElementById("vida"); var textor=document.getElementById("numerobomba"); vida=vida-10 textovida.textContent="Vida "+vida textor.textContent="Bomba" alert("BOOOOOOMMMMMM \nPierdes 10 de Vida") } function perdiste() { var textovida=document.getElementById("vida"); var textor=document.getElementById("numerobomba"); textor.textContent="Perdiste" reiniciar(); } function ganaste() { alert("GANASTE LLEGASTE A 1000 points") reinicio(); } function nobomba() { puntaje=puntaje+100; var textovida=document.getElementById("vida"); var textor=document.getElementById("numerobomba"); var puntajer=document.getElementById("puntaje"); textor.textContent="Cesped" textovida.textContent="Vida "+vida puntajer.textContent="Puntaje "+puntaje } function reiniciar() { var reiniciar=document.getElementById("reiniciar") reiniciar.addEventListener("click",reinicio) } function reinicio() { vida=vidai puntaje=0 var textovida=document.getElementById("vida"); textovida.textContent="Vida "+vida var textor=document.getElementById("numerobomba"); textor.textContent="Bomba o Cesped :)" var puntajer=document.getElementById("puntaje"); puntajer.textContent="Puntaje "+puntaje }
esta genial ese codigo hermano, felicidades.
De lujo
De acuerdo a lo que hemos visto en las clases anteriores. Hice que los valores fueran aleatorios, pero muy, muy, muy legible.
function explosion () { alert("¡¡BOOM!!"); document.write("<h1>¡¡BOOM!! Elegiste un area minada. Perdiste :(</h1>"); } function ganaste () { document.write("Eres un ganador ;)"); } acero = Math.floor(Math.random() * 2); auno = Math.floor(Math.random() * 2); ados = Math.floor(Math.random() * 2); bcero = Math.floor(Math.random() * 2); buno = Math.floor(Math.random() * 2); bdos = Math.floor(Math.random() * 2); ccero = Math.floor(Math.random() * 2); cuno = Math.floor(Math.random() * 2); cdos = Math.floor(Math.random() * 2); var campo = [ [acero, auno, ados], [bcero, buno, bdos], [ccero, cuno, cdos] ]; var textos = ["Cesped", "Bomba"]; var x, y; alert("Estás en un campo minado\n" + "Elige una posición entre el 0 y el 2 para X y para Y"); x = prompt("Posición en X? (Entre 0 y 2)", 0); y = prompt("Posición en Y? (Entre 0 y 2)", 0); if (x <= 2 && y <= 2) { var posicion = campo[x][y]; document.write( "Pisaste " + textos[posicion] + "<br>"); if (posicion == 0) { ganaste(); } else { explosion(); } } else { document.write("¡TE SALISTE DEL CAMPO!") explosion(); }
Hola buena tarde,
una sugerencia con respecto al condicional planteado, es que aparte de determinar que el numero suministrado por el usuario no sea superior al numero que se haya determinado, este caso (2), también se debe agregar que no sea inferior a (0) por que entrarían todos los números negativos y el juego en este caso no hace nada cuando se suministra números así.
Campo minado aleatorio :) (Y)
function aleatorio(minimo, maximo)
{
var numero = Math.floor( Math.random() * (maximo - minimo + 1) + minimo );
return numero;
}
function explosion()
{
alert("BOOM!!");
document.write("<h1> BOOM! Elegiste una area minada :( </h1>");
}
function ganaste()
{
document.write("<h1> Eres un Ganador :) </h1>");
}
var a = aleatorio(0,1);
var campo = [ [ a , a , a ] ,
[ a , a , a ] ,
[ a, a , a ] ];
var textos = ["Cesped", "Bomba"];
var x, y;
alert("Estás en un campo minado\n" +
"Elije una posición entre el 0 y el 2 para X y para Y");
x = prompt("Posición en X? (entre 0 y 2)");
y = prompt("Posición en Y? (entre 0 y 2)");
if(x <= 2 && y <= 2)
{
var posicion = campo[x][y];
if(posicion == 1)
{
explosion();
document.write("<h2>"+"Elegiste " + textos[posicion] +"</h2>"+ "<br />");
}
else
{
ganaste();
document.write("<h2>"+"Elegiste " + textos[posicion] +"</h2>"+ "<br />");
}
}
else
{
document.write("¡Te saliste del campo!");
explosion();
}
Compañero, tu idea de un campo minado aleatorio es buenísima, pero al revisar detenidamente tu código me doy cuenta que al llenar las 9 posiciones con la variable a, al finalizar la matriz tendrá o puros 0 o puros 1, la manera de que realmente cada posición sea aleatoria sería creando 9 variables distintas, una para cada posición, y a cada una de ellas asignarle un valor aleatorio entre 1 y 0. Espero haberme explicado.
Este es mi codigo, hize las opciones aleatorias, agregue un arreglo a la condicion ya que se aceptaban numero negativos y tambien cuando se elige se empieza primero por el eje Y y luego por el X, haci que cambie eso en la posicion para que el usuario realmente este escogiendo las cordenadas (x,y) y no las cordenadas (y,x) al cambiar minas[x][y] a minas[y][x], no se si me hize entender en esta ultima modificacion.
function explosion()
{
alert("Perdiste");
document.write("<h1>Elegiste un area minada </h1>");
}
function noExplosion()
{
alert("Ganaste");
document.write("<h1>Elgiste un area sin minas :D</h1>")
}
function aleatorio(minimo, maximo)
{
var numero = Math.floor( Math.random() * (maximo - minimo + 1) + minimo);
return numero;
}
var numero1 = aleatorio(0,1);
var numero2 = aleatorio(0,1);
var numero3 = aleatorio(0,1);
var numero4 = aleatorio(0,1);
var numero5 = aleatorio(0,1);
var numero6 = aleatorio(0,1);
var numero7 = aleatorio(0,1);
var numero8 = aleatorio(0,1);
var numero9 = aleatorio(0,1);
var minas = [ [ numero1 ,numero2 ,numero3],
[ numero4, numero5, numero6],
[ numero7, numero8, numero9] ];
var x;
var y;
var campo = ["Cesped","Bomba"]
alert("Estas en un campo minado, elige tu posicion:");
x = prompt("Cual es tu posicion en x entre (0,2):",0);
y = prompt("Cual es tu posicion en y entre (0,2):",0);
if (x <= 2 && x >= 0 && y <= 2 && y >= 0)
{
var posicion = minas[y][x]
document.write("<h1>elegiste <h1>" + campo[posicion]);
if (posicion == 1)
{
explosion()
}
else
{
noExplosion()
}
}
else if(x > 2 || y > 2)
{
alert("Te saliste del campo!!!!!")
explosion()
}
else
{
alert("No elegiste una opcion valida");
}
+1 En mi opinión, creo que esta es una interesante mejora del código, mezclando el ejercicio de piedra, papel o tijera con el de campo minado.
Muy bueno!!
buenas ,freddy tengo una duda en esta clase , ¿por que si pongo la variable "posicion" dentro de las condicionales si funciona el else y si lo pongo fuera no?. Gracias
La declaración de una variable depende del ambito, si lo declaras dentro de un bloque, solo puede ser accesible desde ese ámbito
muy buena explicación, y el curso cada ves es mas interesante, es muy simple la estructura del HTML y Javascript es un lenguaje muy sencillo de aprender
El mismo juego asignando valores aleatorios a la matriz que cambian cada vez que se carga.
function aleatorio(minimo, maximo) { var numero = Math.floor( Math.random() * (maximo - minimo + 1) + minimo); return numero; } function explosion() { alert("BOOM!!"); document.write("<h1>BOOM! Elegiste un area minada :(</h1>"); } function ganaste() { document.write("Eres un ganador :)"); } // Definimos la matriz con todos los valores en cero var campo = [ [ 0 , 0 , 0 ] , [ 0 , 0 , 0 ] , [ 0 , 0 , 0 ] ]; // Asignamos valores aleatorios a cada casilla for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { campo[i][j] = aleatorio(0,1); } } var textos = ["Cesped", "Bomba"]; var x, y; alert("Estás en un campo minado\n" + "Elije una posición entre el 0 y el 2 para X y para Y"); x = prompt("Posición en X? (entre 0 y 2)"); y = prompt("Posición en Y? (entre 0 y 2)"); if(x <= 2 && y <= 2) { var posicion = campo[x][y]; document.write("Elegiste " + textos[posicion] + "<br />"); if(posicion == 1) { explosion(); } else { ganaste(); } } else { document.write("¡Te saliste del campo!"); explosion(); }
Tengo una pregunta, como controlo que el usuario en su infinita sabiduría no me introduzca números negativos? Solo lo puedo realizar a través de los elementos de comparación? ( x <= 2 && x > -1 ). Gracias!
if((x <= 2 && x >=0) && (y <= 2 && y >=0))
Y en el caso de que ponga cualquier cosa que no sea un número entero entre en cero y el dos? Habría que filtrar eso también.
Comparto mi aporte Excelente curso cada día aprendiendo mas!
Javascript:
//Se declaran las funciones explosion (Perdistes), ganastes, //paso_infalso (al salir del campo) y aleatorio generando //numeros entre el 0 y el 1 dentro de la matriz. function explosion() { alert("BOOM!!"); document.write("<h1>Caistes en un mina!</h1>"); document.write(textos [posición]); } function ganastes() { document.write("<h1>Sobrevivistes!</h1>"); document.write(textos [posición]); } function paso_infalso() { alert("BOOM!!"); document.write("<h1>Caistes en un mina!</h1>"); document.write("Salistes del campo (Perdiste)"); } function aleatorio(minimo, maximo) { var numero = Math.floor(Math.random() * (maximo - minimo +1) + minimo); return numero; } // Se define la matriz donde: 1 = Bomba. 0 = Zona segura. var campo = [ [ aleatorio(0,1), aleatorio(0,1), aleatorio(0,1)], [ aleatorio(0,1), aleatorio(0,1), aleatorio(0,1)], [ aleatorio(0,1), aleatorio(0,1), aleatorio(0,1)] ]; var textos = ["Elegistes una zona segura te has salvado (Ganastes)","Has activado una mina (Perdiste)"]; var x,y; alert("Estás en un campo minado\n" + "Elije una posición entre el 0 y el 2 para X y para Y"); x = prompt("¿Posición en X? (entre 0 y 2)"); y = prompt("¿Posición en Y? (entre 0 y 2)"); if (x <= 2 && y <= 2) { var posición = campo [x] [y]; if (posición == 1) { explosion(); } else { ganastes(); } } else { paso_infalso(); }
//una forma de elegir al azar las minas es:
function aleatorio(minimo,maximo){
var numero = Math.floor(Math.random()*(maximo - minimo + 1) - minimo);
return numero;
}
function explosion()
{
alert("BOOM!!");
document.write("<h1>BOOM! Elegiste un area minada :(</h1>");
}
function ganaste()
{
document.write("Eres un ganador :)");
}
//1 = Bomba. 0 = No hay bomba
/*var campo = [ [ 1 , 0 , 0 ] ,
[ 0 , 1 , 0 ] ,
[ 1 , 0 , 1 ] ];*/
var i,j;
var campo = new Array(3); // creo campo como un vector de tres dimensiones
alert("pasé la primera definición de array");
for(i = 0; i < 3;i++)
campo[i] = new Array(3); // genero una matriz de 3x3
// ahora genero un campo minado al azar
for(i = 0; i < 3;i++)
for(j = 0; j < 3;j++)
campo[i][j] = aleatorio(0,1); //pongo minas aleatoriamente
var textos = ["Cesped", "Bomba"];
var x, y;
alert("Estás en un campo minado\n" +
"Elije una posición entre el 0 y el 2 para X y para Y");
x = prompt("Posición en X? (entre 0 y 2)");
y = prompt("Posición en Y? (entre 0 y 2)");
if(x <= 2 && y <= 2)
{
var posicion = campo[x][y];
document.write("Elegiste " + textos[posicion] + "<br />");
if(posicion == 1)
{
explosion();
}
else
{
ganaste();
}
}
else
{
document.write("¡Te saliste del campo!");
explosion();
}
**Holas,**Les comparto el código de mi buscaminas... buscaminas.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Buscaminas</title> <script type="text/javascript" src="js/buscaminas.js"></script> </head> <body> <h1 style="text-align: center; font-family: 'Indie Flower', cursive;">Buscaminas!!!</h3> <div style="display: table;margin: 0 auto;"> <table> <tr> <td> <a id="position_0_0" href="#" onclick="jugarBuscaminas(0, 0)"><img src="img/square.png" width="120" height="120"/></a> </td> <td> <a id="position_0_1" href="#" onclick="jugarBuscaminas(0, 1)"><img src="img/square.png" width="120" height="120"/></a> </td> <td> <a id="position_0_2" href="#" onclick="jugarBuscaminas(0, 2)"><img src="img/square.png" width="120" height="120"/></a> </td> </tr> <tr> <td> <a id="position_1_0" href="#" onclick="jugarBuscaminas(1, 0)"><img src="img/square.png" width="120" height="120"/></a> </td> <td> <a id="position_1_1" href="#" onclick="jugarBuscaminas(1, 1)"><img src="img/square.png" width="120" height="120"/></a> </td> <td> <a id="position_1_2" href="#" onclick="jugarBuscaminas(1, 2)"><img src="img/square.png" width="120" height="120"/></a> </td> </tr> <tr> <td> <a id="position_2_0" href="#" onclick="jugarBuscaminas(2, 0);"><img src="img/square.png" width="120" height="120"/></a> </td> <td> <a id="position_2_1" href="#" onclick="jugarBuscaminas(2, 1)"><img src="img/square.png" width="120" height="120"/></a> </td> <td> <a id="position_2_2" href="#" onclick="jugarBuscaminas(2, 2)"><img src="img/square.png" width="120" height="120"/></a> </td> </tr> </table> </div> </body> </html>
buscaminas.js
var buscaminas = [ [randomBuscaminas(0, 1), randomBuscaminas(0, 1), randomBuscaminas(0, 1)], [randomBuscaminas(0, 1), randomBuscaminas(0, 1), randomBuscaminas(0, 1)], [randomBuscaminas(0, 1), randomBuscaminas(0, 1), randomBuscaminas(0, 1)] ]; function randomBuscaminas(minimo, maximo){ var numero = Math.floor( Math.random() * (maximo - minimo + 1) + minimo ); return numero; } function jugarBuscaminas(posicionX, posicionY){ if(buscaminas[posicionX][posicionY] == 0){ document.getElementById("position_" + posicionX + "_" + posicionY).innerHTML = "<a href='#'><img src='img/no_boom.png' height='120' width='120'></a>"; }else{ document.getElementById("position_" + posicionX + "_" + posicionY).innerHTML = "<a href='#'><img src='img/boom.jpg' height='120' width='120'></a>"; } }
Buen aporte! +1
En mi caso no utilicé la etiqueta de tabla, sino que lo hice con div. Y en lugar de usar una imagen .png usé código CSS (gris para el cuadrado, verde para zona limpia y rojo para zona con mina).
Cuando piso área limpia el programa te deja seleccionar otra área. Si es una zona de mina salta un alert("BOOM! Sorry, but you lose");
Ahora quiero conseguir que el navegador se reinicie cuando se pisa mina.
Wow! genial, puedo preguntar como subiste tu codigo en ese formato?
Hago aquí otro pequeño aporte, básicamente le da "vida" al juego, pues las posiciones dejan de ser estáticas y se convierten en aleatorias.
Para aplicarlo, se debe agregar una función con Math.floor, tal cual se enseña en la clase anterior para el uso del juego de Piedra, Papel o Tijera.
function aleatorio(minimo, maximo)
{
var numero = Math.floor( Math.random() * (maximo - minimo + 1) + minimo );
return numero;
}
Posteriormente debe remplazarse nuestro campo minado a base de la anterior función
var campo = [ [aleatorio(0,1),aleatorio(0,1),aleatorio(0,1)],
[aleatorio(0,1),aleatorio(0,1),aleatorio(0,1)],
[aleatorio(0,1),aleatorio(0,1),aleatorio(0,1)] ];
Muy bueno, pero esto podría sacar solo Unos o solo Ceros en toda la matríz, ¿cierto?. ¿Como hacerle para guardar una proporción digamos 70/30 o 60/40 entre minas y cesped?
Me molesta mucho el lenguaje, en ocaciones, hiriente, de este señor. Por ejemplo, cuando dice que los usuarios son una "manada de imbéciles". Qué irrespetuoso tratando de ser "cool".
Cada persona tiene su manera de ser.El por su parte tiene su personalidad que es hablar así directamente , fluidamente y un poco con ese humor grotesco, pero eso hace que la clase sea mas activa y entretenida
Se refiere a que tenemos que hacerlo como si lo fuesen a utilizar gente con una mentalidad de 2 meses, vamos que hay que ponerlo bien clarito.
Hola! Esta es mi versión del 'campo minado'. El código tiene diferencias marcadas con la versión de Freddy. Incluí una opción para que el ganador elija si quiere volver a jugar o no. Espero sus comentarios. Saludos!
//Campo Minado var ejeX = [0, 1, 2]; var ejeY = [0, 1, 2]; alert('Estás en un campo minado!' + '\n' + 'Deberás elegir una valor para cada eje y así determinar las coordenadas de tu posición.'); var opcionX; var opcionY; //Nueva oportunidad para jugar si ganaste function oportunidad(){ var intento = prompt('¿Quieres seguir jugando?' + '\n' + 'si: 0' + '\n' + 'no :1', '0'); if (intento == 0) { posicion(); } else if (intento == 1){ alert('Gracias por participar!'); } } function perdiste(){ alert('Te ubicaste en las coordenadas ' + '(' + opcionX + ',' + opcionY +')' + ' ..BOOM!'); document.write('<h2>Explotaste! Lo sentimos :(</h2>'); } function ganaste(){ alert('Te ubicaste en las coordenadas ' + '(' + opcionX + ',' + opcionY +')' + ' ..WIN!'); document.write('<h2>Ganaste! Felicidades :)</h2>'); oportunidad(); } function posicion(){ opcionX = prompt('Elige un valor para X entre 0 y 2'); opcionY = prompt('Elige un valor para Y entre 0 y 2'); if (opcionX > 2 && opcionY > 2) { perdiste(); } else if (opcionX > 2 && opcionY < 2) { perdiste(); } else if (opcionX < 2 && opcionY > 2) { perdiste(); } else if (opcionX == ejeX[0]) { if (opcionY == ejeY[0]) { perdiste(); } else if (opcionY == ejeY[1]) { ganaste(); } else if (opcionY == ejeY[2]) { perdiste(); } } else if (opcionX == ejeX[1]) { if (opcionY == ejeY[0]) { ganaste(); } else if (opcionY == ejeY[1]) { perdiste(); } else if (opcionY == ejeY[2]) { perdiste(); } } else if (opcionX == ejeX[2]) { if (opcionY == ejeY[0]) { ganaste(); } else if (opcionY == ejeY[1]) { ganaste(); } else if (opcionY == ejeY[2]) { perdiste(); } } } posicion();
Esta muy bien tu iniciativa de hacerlo diferente, pero no es recursivo tiene muchas lineas de código, es redundante haces muchos llamados a las funciones perdiste() y ganaste(). La idea es con menos lineas hacer lo mismo.
//Buenas compañeros este es mi aporte sobre el juego para hacerlo mas interesante espero les guste. function explosion() { alert("BOOM!"); document.write("<h1>BOOM! Elegiste un area minada :(</h1>"); } function ganaste() { document.write("Eres un ganador :)" + "<br />") } var campo = [ [ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 1 , 0 ] , [ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 ] , [ 0 , 0 , 0 , 0 , 1 , 1 , 0 , 1 , 0 , 1 ] , [ 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ] , [ 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 ] , [ 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 , 0 ] , [ 0 , 1 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 1 ] , [ 1 , 0 , 0 , 0 , 1 , 1 , 0 , 1 , 0 , 0 ] , [ 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 0 ] , [ 1 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 1 ] ]; var textos = ["un lugar seguro!", "una bomba!"]; var x, y; alert("estas en un campo minado\n" + "Elige una posición entre el 0 y el 9 para X y para Y"); x = prompt("Posición en X? (entre 0 y 9)", 0); y = prompt("Posición en Y? (entre 0 y 9)", 0); if(x < 10 && y < 10) { var posicion = campo[x][y]; document.write("Elegiste " + textos[posicion] + "<br />"); if(posicion == 1) { explosion(); } else { ganaste(); } } else { document.write("¡Te salistes del campo!"); explosion(); }
No se si estoy equivocado pero realmente estoy confundido , cada vez que el profesor elige un valor del array ,según mis conceptos de secundaria el elige al reves, o sea en el eje x elige valor de Y y en el eje y elige un valor de X , esto realmente me está confundiendo , quisiera que porfavorrrr!!! Me corrijan si estoy mal ya que no puedo avanzar con esa duda !! ... Ejemplo :
101 010 111 En su variable escoge campo(1)(0)
El resultado debería ser 0 pero el segundo cero horizontal de la primera fila, pero el profesor elige cómo dato 0 pero de la fila vertical ... Ayudaaa!!!!
Estamos igual .-.
Acabo de comprobarlo, si están alrevez e inclusive traté de corregirlo porque pensé que el problema se debía a que el orden estaba mal pero probé con todo y nada, siempre el valor de las "X" sigue siendo el de las "Y", y el de las "Y" me da el de las "X".
var x, y; x=prompt("Posición en x (elige 1 o 2)"); y=prompt("Posición en y (elige 1 o 2"); var y, x; y=prompt("Posición en y (elige 1 o 2)"); x=prompt("Posición en x (elige 1 o 2"); var x, y; y=prompt("Posición en y (elige 1 o 2)"); x=prompt("Posición en x (elige 1 o 2"); var y, x; x=prompt("Posición en x (elige 1 o 2)"); y=prompt("Posición en y (elige 1 o 2");
Hola aquí dejo mi código.
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Game</title> <script type="text/javascript" src="./minas.js"></script> </head> <body> <h1>Busca minas XD</h1> <label>Coordenada Y:</label> <input type="number" id="y" value="0"/> <label>Coordenada X:</label> <input type="number" id="x" value="0"/> <button onclick="game()">Lanza tus coordenadas</button> <p id="print"></p> </body> </html>minas.js
var tablero =
[
["1","0","1","0","0"],
["0","0","1","1","0"],
["1","1","1","1","0"],
["0","1","0","0","1"],
["1","1","0","0","0"]
];
function game(){
var a = document.getElementById("y").value;
var b = document.getElementById("x").value;
if(a > 4 || b > 4){
document.getElementById("print").innerHTML = "<h2>¡BOOMMMMM XD!.</h2>";
}
var resultado = tablero[a][b];
if ( resultado == 1 ){
document.getElementById("print").innerHTML = "<h3>Sigue buscando.</h3>";
} else if( resultado == 0 ){
document.getElementById("print").innerHTML = "<h2>Has encontrado una mina. Felicidades has muerto XD.</h2>";
}
}
Hola en base a tu codigo que me parecio interesante ya que no tengo mucho conocimiento en html pero me parecio usar un range en ves de un tipo number y asi no hacer la validacion dentro de minas.js aunque no pude encontrar la forma de mover el "label" por asi decirlo junto con el range espero que no te moleste que te haya robado el codigo gracias por compartirlo
arrays.html
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Game</title> <script type="text/javascript" src="./minas.js"></script> </head> <body> <h1>Busca minas XD</h1> <fieldset> <label for="y">Coordenada Y:</label> <input type="range" id="y" name="y" value="0" min="0" max="4" onchange="document.getElementById('labelrangey').innerHTML = this.value" step="1"/> <div style="padding-left:100px;"> <em id="labelrangey" style="font-style: italic"></em> </div> </fieldset> <br> <fieldset> <label>Coordenada X:</label> <input type="range" id="x" name="x" value="0" min="0" max="4" onchange="document.getElementById('labelrangex').innerHTML = this.value" step="1"/> <div style="padding-left:100px;"> <em id="labelrangex" style="font-style: italic"></em> </div> </fieldset> <br> <br> <button onclick="game()">Lanza tus coordenadas</button> <p id="print"></p> </body> </html>minas.js
var tablero =
[
["1","0","1","0","0"],
["0","0","1","1","0"],
["1","1","1","1","0"],
["0","1","0","0","1"],
["1","1","0","0","0"]
];
function game(){
var a = document.getElementById("y").value;
var b = document.getElementById("x").value;
var resultado = tablero[a][b];
if ( resultado == 1 ){
document.getElementById("print").innerHTML = "<h3>Sigue buscando.</h3>";
} else if( resultado == 0 ){
document.getElementById("print").innerHTML = "<h2>Has encontrado una mina. Felicidades has muerto XD.</h2>";
}
}
Una buena práctica no sería hacer el:
if(posicion == 1)
convertirlo a
if(textos[posicion] == "bomba")
para que sea legible y fácilmente entendible, no?
Correto, pensé exactamente lo mismo. Cuando estemos depurando código no desarrollado por nosotros el caso que tanto habla Freddy del 80/20, es difícil entender que 1 es bomba, en cambio como lo sugieres es mucho más fácil.