Terminando el juego

Ahora viene la parte más interesante, la que nos va a permitir desarollar el juego es sí.
Debemos analizar cúantas situaciones distintas se pueden dar.
En  python, la operación resto simplificaba mucho las cosas.
Pero al trasladar esto a Gambas, el resultado terminaba siendo caótico.
Había que buscar otro camino. Una estructura de decisión sería lo más adecuado, pero ¿cúantas combinaciones hay?
Si por cada elección del usuario hay 5 posibles de la computadora. Estos nos da 25 combinaciones posibles, de las
cuales sólo 5 marcan empate. Ufff. Nos quedan aún 20 situaciones diferentes.
Primero ,los empates. Esta es la más fácil. Si computadora y jugador eligen la misma opción, no hay ganador.
Sencillo. Con una sentencia condicional if fácilmente solucionamos esto. Pero, y, ¿para los otro 20 casos?
Sería una locura usar veinte sentencias condicionales, una para cada situación. Vamos a simplificar.
Por cada opción elegida por el jugador hay dos a las que vence y dos que lo derrotan.Usemos pues, solo las que vence.
Aún así son 10 condiciones diferentes a analizar. Podemos achicar aún más, agrupando vencedoras por pares, usando los  operadores lógicos, en este caso el and para concatenar sentencias y el or, que nos devuelve True en caso de que cualquiera de las dos condiciones sean verdaderas.
Así reducimos a cinco las condiciones, seis si sumamos la de empate, con lo que reducimos de 25 a sólo seis las condiciones a analizar.
Si es empate,el ciclo se cierra ahí. Si no, se va moviendo por lás demas hasta encontrar una cuya resultado sea True, si nunguna lo es,se
activa la sentencia por defecto, que le da el punto a la computadora. Veamos el código:

Public Sub jugar()

Dim jugador As String

modalidad()

elige()
jugador = ComboBox1.Current.Text
label2.text = jugador
label3.text = compu
If jugador = compu Then
label1.text = “No hay ganador”
Else If
jugador = “Spock” And (compu = “tijera” Or compu = “piedra”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else If
jugador = “lagarto” And (compu = “papel” Or compu = “Spock”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else If
jugador = “tijera” And (compu = “papel” Or compu = “lagarto”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else If
jugador = “piedra” And (compu = “tijera” Or compu = “lagarto”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else If
jugador = “papel” And (compu = “piedra” Or compu = “Spock”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else
label1.text = “computadora gana”
puntaje_compu = puntaje_compu + 1
End If
Label5.Text = puntaje_jugador
Label7.text = puntaje_compu
If puntaje_compu = puntaje_final Then
Message(“La computadora ha ganado, trata de nuevo”)
btntirada.Enabled = False
ComboBox1.Enabled = False
Else If
puntaje_jugador = puntaje_final Then
Message(“Has ganado,dame la revancha”)
btntirada.Enabled = False
ComboBox1.Enabled = False
Endif

End

Finalmente, comparamos el puntaje de cada uno con el puntaje final, en cuanto uno lo alcance se muestra el mensaje adecuado y
se bloquean el btntirada y el combobox , hasta que el usuario presione nuevo juego.
Se le prodrían agregar más cosas, como guardar cúantas partidas gana cada uno , hacerlo para jugar en red, etc. Pero la
idea de este programa era migrar de un lenguaje a otro (Python a Gambas) y mantener el blog en funcionamiento mientras el
curso de python sigue en curso.  Y hacer algo sencillo a la vez que diferente. Si visitan el foro de Gambas podrán ver el
Balckjakc realizado por un compañero forista, también basado en el desarrollo del curso mencionado en el primer post.
Para terminar, una captura de pantalla del programa en tiempo de diseño y en tiempo de ejecución.

diseño ejecucion

Y como siempre, el enlace al código fuente.
Hasta otro proyecto.

codigo fuente aquí

Anuncios
Esta entrada fue publicada en programación y etiquetada , , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s