29/04/2012, 08:37
|
(Desactivado) | | Fecha de Ingreso: noviembre-2002 Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años Puntos: 317 | |
Respuesta: juego en JS No había mirado que éste es tu primer post. Aunque un poco tarde, bienvenido al Foro.
Seguramente estás haciendo un ejercicio. Porque es bastante improbable que intentes poner un juego de poker on line hecho en javascript, aún cuando estés jugando contra la máquina como es tu caso. Entonces aparece otro problema, del que hablamos más tarde; ahora vuelvo un poco al asunto del reparto.
Me doy cuenta de que no vas a utilizar todo el mazo hasta terminarlo, pero no estás sacando 5, ni siquiera es seguro que saques 10, porque pueden ser hasata 20 cartas al azar. Y un método que pruebe hasta encontrar una que no esté repartida, no es muy eficiente.
Si vas a hacer un array con todos los valores, tiene sentido guardar en una variable cada mano según su ítem de naipes y luego compararlos con el array de puntajes. Entonces el ejemplo que puse arriba no sirve, porque la idea era dar las cartas y una vez que están las manos finales capturar sus combinaciones de número y color.
Ahora bien, el gran invento sería asignar un ítem (que seguramente terminará siendo de seudo array asociativo) o un nuevo elemento (que convierte al array en bidimensional) para cada imagen, y que la comparación te de inmediatamente la mano ganadora.
Teniendo en cuenta las reglas del poker, va a ser difícil.
La idea de empezar algo así es que ya tienes el método y decidiste aplicarlo al juego. Hacerlo al revés te obliga a hacer más de una versión y luego comparar el rendimiento de cada una.
Como te avisé más arriba, la primera prueba que yo haría es meter una batería de condicionales anidados.
Si bien el poker no debe tener más de 10 combinaciones (no me acuerdo cómo se juega, no soy afecto a los juegos de cartas) dentro de cada una hay varias posibilidades dependiendo de sus valores y colores. Así que en primer lugar vas a tener que asignar a cada mano usando switch; continue; break (mejor que if; else if; else) un puntaje "interno" para saber cuál es el mejor valor que le puede sacar.
Después, con el mismo método, las vas probando del mayor al menor puntaje del poker, hasta confirmar cual jugador tiene el más alto.
Creo que el mayor es la Escalera Real, así que la primer prueba debe ser si todas las cartas son del mismo palo, y si es así, si la numeración es continuada del 10 al 14; y le asignas el puntaje más alto. Si no es, probarás con la Escalera Común, que siguen siendo del mismo palo, pero empiezan en otro número distinto del 10; y si es le das un punto menos que a la anterior. Si no, pruebas con el Poker ...
También deberías comparar los valores máximos de los naipes en cada mano, por si hay que desempatar; y guardarlos con el puntaje.
Todo esto es más que obvio. Si estás haciendo este ejercicio ya tienes suficiente conocimiento como para saberlo. Quizá estés esperando que alguien lo haga por ti, pero de esa forma no vas a practicar. Si buscas un "socio" para compartir experiencia, va a tener que ser uno que también esté empezando y se quiera meter con algo que es un trabajo de esclavos y que sólo sirve como práctica.
Por otro lado, ¿cómo piensas hacer para que la máquina "decida" cuál puede ser su mejor jugada?. Allí el trabajo de cálculo es tremendo. Y más si no hace trampa, y en verdad ignora qué cartas te tocaron.
Insisto, cuando lo termines me gustaría verlo posteado o linkeado (sí, mejor linkeado) en el Foro.
Mucha suerte con el proyecto. Hay que tener valor para plantearse un trabajo así. (Aquí va un emoticón de sacarse el sombrero, pero no hay.)
P.D.: ¿Y por qué faltan los dieces?. |