Mejorar este código JS (SIMPLE)

  • Autor Autor finihs
  • Fecha de inicio Fecha de inicio
F

finihs

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola me pidieron mejorar este codigo lo he mejorado bastante colocando arrays y demas ya que no tenia, que le faltaria para que quedara mas legible y practico , necesito que sea lo mas legible posible lo he mejorado bastante pero me dicen que aun hay forma de hacerlo mas corto y practico ... gracias :encouragement::encouragement:
PHP:
var opciones = ["piedra","papel","tijeras"];
//crea un numero aleatorio 
function random(minimo,maximo){
	var aleatorio = Math.floor (Math.random() * (maximo - minimo + 1) + minimo );
	return aleatorio;
}	
// opcion del usuario
var ou;
//opcion de javascript
var oj = random(0,2);
//pide los datos al usario (0,1,2)
var ou = prompt ("Elije estas jugando a piedra papel o tijeras \n piedra : 0 \n papel : 1 \n tijeras : 2",0);
//mensaje de que opcion elijio el usuario
alert ("Elejiste " + opciones[ou]);
//mensaje de que opcion elijio el javascript
alert ("JavaScript elijio " + opciones[oj]);

// si elijes piedra
if (opciones[ou] == "piedra"){
	if (opciones[oj] == "piedra"){
		alert ("empate");
	}
	else if (opciones[oj] =="papel")
	{
		alert ("perdiste");
	}
	else if (opciones[oj] =="tijeras")
	{
		alert ("ganaste");
	}
							}
// fin piedra 
// si elijes papel 
if(opciones[ou] == "papel"){
	if (opciones[oj] == "piedra"){
		alert ("ganaste");
	}
	else if (opciones[oj] =="papel")
	{
		alert ("empate");
	}
	else if (opciones[oj] =="tijeras")
	{
		alert ("perdiste");
	} }
//fin papel
//si elijes tijeras 
if  (opciones[ou] == "tijeras"){
	if (opciones[oj] == "piedra"){
		alert ("perdiste");
	}
	else if (opciones[oj] =="papel")
	{
		alert ("ganaste");
	}
	else if (opciones[oj] =="tijeras")
	{
		alert ("empate");
	}
							}
//fin tijeras
 
Desde mi punto de vista, sí que se puede optimizar más. Date cuenta que repites la misma regla tres veces, además, la función random() desde mi punto de vista, sobra, lo podrías hacer directamente ya que no necesitarás invocarlo en reiteradas ocasiones.
 
PHP:
var opciones = ["piedra","papel","tijeras"];
//crea un numero aleatorio 
function random(minimo,maximo){
    var aleatorio = Math.floor (Math.random() * (maximo - minimo + 1) + minimo );
    return aleatorio;
}    
// opcion del usuario
var ou;
//opcion de javascript
var oj = random(0,2);
//pide los datos al usario (0,1,2)
var ou = prompt ("Elije estas jugando a piedra papel o tijeras \n piedra : 0 \n papel : 1 \n tijeras : 2",0);
//mensaje de que opcion elijio el usuario
alert ("Elejiste " + opciones[ou]);
//mensaje de que opcion elijio el javascript
alert ("JavaScript elijio " + opciones[oj]);

validador(opciones[ou], opciones[oj]);


function validador(jugador,computador){
var ganar,perder;
if(jugador == "tijeras"){
ganar = "papel";
perder = "piedra";
}else if(jugador == "papel"){
ganar = "piedra";
perder = "tijeras";
}else if(jugador == "piedra"){
ganar = "tijeras";
perder = "papel";
}



if(jugador == computador){
 alert ("empate");
}else if (jugador == ganar){
alert ("ganaste");
}else if(jugador == perder){
alert ("perdiste");
}


}
//fin tijeras
 
Insertar CODE, HTML o PHP:
// Generalmente en JavaScript no es necesario definir las variables

javascript = Math.floor(Math.random() * 3); // Opción JavaScript

do usuario = prompt ("Elige\npiedra: 0\npapel: 1\ntijera: 2");
while (usuario == ""); /* Opción del usuario, si no escribe nada la alerta vuelve a aparecer hasta que realmente escoja.

Por si no entendes esto te comento que no es necesario colocar las llaves puesto que si estas no existen el bucle o condicional concluye en el ; esto no aplica a funciones ni a casos donde necesites ejecutar más de de una sentencia (obvio)

por ejemplo:
if (algo) {
	otro algo
} else {
	otro algo
}

es igual a:
if (algo) otro algo;
else otro algo;

y si es un resultado asignado a una variable (condicional ternario por si querés buscarlo): 
dia (hoy == "lunes") ? true : false;
*/

usuario = parseInt(usuario); // Convierte lo que el usuario ingreso a un numero entero, podrías escribir los cases del switch entre comillas para ahorrarte esta linea

parse = ["piedra", "papel", "tijera"]; // Asocia un numero con un "objeto"

alert ("Elegiste: "+parse[usuario]+", JavaScript eligió: "+parse[javascript]+"."); // Muestra lo elegido. Elegir es con G, elija con J

switch (usuario) {
	case 0:
		if (javascript == 0) alert ("Empate.");
		else if (javascript == 1) alert ("Perdiste.");
		else alert ("Ganaste.");
		break;

	case 1:
		if (javascript == 0) alert ("Ganaste.");
		else if (javascript == 1) alert ("Empate.");
		else alert ("Perdiste.");
		break;

	case 2:
		if (javascript == 0) alert ("Perdiste.");
		else if (javascript == 1) alert ("Ganaste.");
		else alert ("Empate.");
		break;
} // Si bien podría hacerlo con anidados como veo que estas iniciandote en esto mezclo un switch y condicionales para que te vayas familiarizando
 
A mi el código más óptimo que se me ocurre es este:

Insertar CODE, HTML o PHP:
var opciones = ["piedra","papel","tijeras"]; 
//crea un numero aleatorio  
function random(minimo,maximo){ 
    var aleatorio = Math.floor (Math.random() * (maximo - minimo + 1) + minimo ); 
    return aleatorio; 
}     
// opcion del usuario 
var ou; 
//opcion de javascript 
var oj = random(0,2); 
//pide los datos al usario (0,1,2) 
var ou = prompt("Elije estas jugando a piedra papel o tijeras \n piedra : 0 \n papel : 1 \n tijeras : 2",0); 
//mensaje de que opcion elijio el usuario 
console.log ("Elejiste " + opciones[ou]); 
//mensaje de que opcion elijio el javascript 
console.log ("JavaScript elijio " + opciones[oj]); 

// Resolucion
if (oj == ou){
    console.log ("empate"); 
}
else if(oj == (ou + 1) || (oj == 2 && ou == 0)){
    console.log ("perdiste"); 
}
else{
    console.log ("ganaste"); 
}
 
Atrás
Arriba