Diferencia entre revisiones de «Usuario:Lmorillas/modulo programacion/python/juego tres en raya/ayudas 3 raya»

De WikiEducator
Saltar a: navegación, buscar
(¿Cómo sé que un jugador ha ganado?)
 
(3 revisiones intermedias por el mismo usuario no mostrado)
Línea 6: Línea 6:
 
==¿Cómo representamos las posiciones del tablero? ==
 
==¿Cómo representamos las posiciones del tablero? ==
 
http://inventwithpython.com/images/10-2.png
 
http://inventwithpython.com/images/10-2.png
 +
 
¿Una lista de 10 elementos, despreciando el primero (índice 0)?
 
¿Una lista de 10 elementos, despreciando el primero (índice 0)?
  
Línea 20: Línea 21:
 
  # la posición 0 no se usa para facilitar el proceso
 
  # la posición 0 no se usa para facilitar el proceso
 
  tablero =  [' ', 'O', 'O', 'O', ' ', 'X', ' ', 'X', ' ', ' ']
 
  tablero =  [' ', 'O', 'O', 'O', ' ', 'X', ' ', 'X', ' ', ' ']
 +
 +
== ¿Cómo sé si una casilla está libre? ==
 +
No tiene ni '''O''', ni '''X''' en esa posición. Los movimientos legales son siempre a casillas libres.
 +
 +
== ¿Cómo sé que un jugador ha ganado? ==
 +
Sabemos cuáles son las posiciones ganadoras. Las podemos guardar en una lista. Si tenemos en cuenta la representación de datos anterior:
 +
<source lang="python">
 +
posiciones_ganadoras = [
 +
    [1, 2, 3],
 +
    [4, 5, 6],
 +
    # completa la lista ... 
 +
]
 +
</source>
 +
 +
== ¿Cuándo hay tablas? ==
 +
No ha ganado ningún jugador y no quedan casillas libres:
 +
' ' not in tablero
 +
== Enseñando a jugar al ordenador ... ==
 +
El ordenador tiene que:
 +
* Ganar, si puede hacer 3 en raya
 +
* Evitar que el contrincante haga 3 en raya
 +
* Elegir la mejor posición: centro, esquinas y resto

Última revisión de 23:39 4 nov 2011


Un diagrama

http://inventwithpython.com/images/10-1.png

¿Cómo representamos las posiciones del tablero?

http://inventwithpython.com/images/10-2.png

¿Una lista de 10 elementos, despreciando el primero (índice 0)?

Ejemplo: un estado del tablero y su representación

----------- 
 X |   |
----------- 
   | X |
----------- 
 O | O | O
-----------
# la posición 0 no se usa para facilitar el proceso
tablero =  [' ', 'O', 'O', 'O', ' ', 'X', ' ', 'X', ' ', ' ']

¿Cómo sé si una casilla está libre?

No tiene ni O, ni X en esa posición. Los movimientos legales son siempre a casillas libres.

¿Cómo sé que un jugador ha ganado?

Sabemos cuáles son las posiciones ganadoras. Las podemos guardar en una lista. Si tenemos en cuenta la representación de datos anterior:

posiciones_ganadoras = [
    [1, 2, 3],
    [4, 5, 6],
    # completa la lista ...   
]

¿Cuándo hay tablas?

No ha ganado ningún jugador y no quedan casillas libres:

' ' not in tablero

Enseñando a jugar al ordenador ...

El ordenador tiene que:

  • Ganar, si puede hacer 3 en raya
  • Evitar que el contrincante haga 3 en raya
  • Elegir la mejor posición: centro, esquinas y resto