Mostrando entradas con la etiqueta juego. Mostrar todas las entradas
Mostrando entradas con la etiqueta juego. Mostrar todas las entradas

miércoles, 20 de julio de 2011

Juego: el que quite la última piedra, pierde

Descargar el fichero: piedras.xlsm


Juguemos en Excel. Podemos programar una macro que nos permita jugar contra el ordenador a un juego que consiste en ir quitando piedras y donde el último que quite es el que pierde.

Al iniciar el juego, el ordenador genera de forma aleatoria un conjunto de piedras que oscilan entre 9 como mínimo y 30 como máximo. Al pulsar sobre el botón denominado 'Nuevo Juego' se generan las piedras iniciales que hay en el montón. Gráficamente, este montón inicial de piedras se muestra mediante celdas de color verde de la fila 9.


Ud. juega contra el ordenador. Se dispone de un montón de piedras. Cada jugador quita 1, 2 o 3 piedras en cada tirada. Comienza quitando Ud.. El último en quitar pierde.

Son varias macros enlazadas las que nos permiten que el juego funcione.
Código:

Private tuquitas, quitadass As Integer
Private mi, tu As Integer
Private n, yoquito As Integer
Sub piedras()
Dim c As Integer
Worksheets("Hoja1").Activate
Range("Q2").ClearContents
Worksheets(2).Range(Cells(9, 3), Cells(39, 32)).Clear
Randomize
n = Int(Rnd * 22 + 9)
Worksheets(2).Range(Cells(9, 3), Cells(9, n + 2)).Interior.Color = RGB(0, 255, 0)
Worksheets(2).Range(Cells(9, 3), Cells(9, n + 2)).Borders.Color = RGB(0, 0, 0)
Range("ah23").Value = n
Range("B9").Value = "Piedras Iniciales"
Range("A1").Select
ActiveWorkbook.Names.Add Name:="jugadas", RefersToR1C1:="=Hoja1!R10C2:R39C2"
Worksheets(2).Range("jugadas").ClearContents
tu = 1: mi = 2
End Sub
Public Sub Quito1()
quitadass = 1
Call quitadas
End Sub
Public Sub Quito2()
quitadass = 2
Call quitadas
End Sub
Public Sub Quito3()
quitadass = 3
Call quitadas
End Sub
Sub maquina()
yoquito = (n - 1) Mod 4
If yoquito = 0 Then
  yoquito = Int(Rnd * 3 + 1)
End If
n = n - yoquito
If n <= 0 Then
  Range("Q2").Value = "TU GANAS. FELICIDADES!!!"
Else
  Worksheets(2).Range("jugadas").Cells(mi, 1).Value = "Maquina quita " & yoquito
  Range("ah23").Value = n
  Call colores("Rojo")
  mi = mi + 2
End If
End Sub
Sub colores(micolor As String)
If micolor = "Amarillo" Then
  Worksheets(2).Range(Cells(9 + tu, 3), Cells(9 + tu, n + 2)).Interior.Color = RGB(255, 255, 0)
  Worksheets(2).Range(Cells(9 + tu, 3), Cells(9 + tu, n + 2)).Borders.Color = RGB(0, 0, 0)
ElseIf micolor = "Rojo" Then
  Worksheets(2).Range(Cells(9 + mi, 3), Cells(9 + mi, n + 2)).Interior.Color = RGB(255, 0, 0)
  Worksheets(2).Range(Cells(9 + mi, 3), Cells(9 + mi, n + 2)).Borders.Color = RGB(0, 0, 0)
End If
End Sub
Sub quitadas()
Worksheets(2).Range("jugadas").Cells(tu, 1).Value = "Tu quitas " & quitadass
n = n - quitadass
If n <= 0 Then
  Range("Q2").Value = "LA MÁQUINA GANA"
Else
  Call colores("Amarillo")
  tu = tu + 2
  Call maquina
End If
End Sub

¿Cuál es la clave del juego?

 Para ganar el juego se ha de .....

Spoiler. Al igual que al hablar de cine o de novelas, en las siguientes líneas desvelaremos el secreto del juego. Este aviso se hace por si usted desea descubrir por sí mismo cómo ganar a la máquina.

Para ganar el juego, se han de quitar en cada tirada un número de piedras tal que las que queden en el montón, menos una, sean múltiplo de cuatro. Esto se puede ver en la celda AI23 donde se utiliza la fórmula siguiente: =RESIDUO(AH23-1;4)

Truco

La celda AI23 oculta su contenido debido a que utiliza tinta blanca sobre fondo blanco. Podemos utilizar un truco mientras jugamos. Se trata de pulsar con el ratón sobre el indicador de columna AI, de esta forma queda seleccionada toda la columna AI, lo cual permite ver ligeramente el contenido de la celda AI23.

¡Espero que disfrutes con el juego de la última piedra!

jueves, 16 de octubre de 2008

Ordenar Abecedario

Descargar el fichero: abecedario.xlsm

Se trata de un juego desarrollado en Excel. Consiste en ordenar afabéticamente 5 letras (ABCDE) que previamente nos dan desordenadas. Existen 10 niveles de dificultad. Lo primero que hemos de hacer es elegir el nivel de dificultad y luego ordenar las letras utilizando los bonotes: 1, 2, 3 y 4, que permuta cada uno de ellos un par de letras contíguas.


En la Hoja 2 disponemos de todas las permutaciones posibles que se pueden llegar a conseguir con las cinco letras. Se encuentran agrupadas según nivel de dificultad. Así el nivel 1 supone que el juego se resuelve pulsando un único botón (1, 2, 3 ó 4). De nivel 1 existen 4 posibles permutaciones (en color amarillo). De nivel 2 existen 9 posibles permutaciones (color rosa). De nivel 3 existen 15 posibles permutaciones (color verde). Y así hasta llegar a nivel 10 en el que la única combinación de letras es: EDCBA.


Para poder hacer operativo el juego se han de utilizar diversas macros. Unas para generar de forma aleatoria la combinación de letras elegida inicialmente. Por ejemplo, si el jugador elige nivel 3, el juego presenta de forma aleatoria una de entre las 15 posibles permutaciones que corresponden a este nivel.La macro 'genera' rellena la columna K de la Hoja 2 con las 120 permutaciones posibles que se obtienen al combinar 5 caracteres.



Las permutaciones en este caso se realizaan con números y no con letras. Posteriormente se transformaran esos números en letras.



Existe otra forma de obtener las 120 permutaciones de 5 letras. Esto se hace en la Hoja 3 utilizando la macro denominada 'MisPermutaciones'. No es un método muy ortodoxo pero funciona. Se basa en exigir que se cumpla que el producto sea el factorial de 5 (5!=120) y que la suma sea 15.






En el siguiente audio se comenta este juego.