I made some edits to include the word "possible" more. I'm not sure I didn't make it more confusing. Need to look again another day. --MF, 6/13/18
PG: I haven't thought deeply (haven't even read carefully!) but would want to check carefully to make sure this is /developmentally/ helpful. Maybe it already is.
BH: Super important: Make the empty squares have the square number.
En esta página, programará su proyecto Tic Tac Toe para detectar y reportar victorias y empates.
Para programar una forma de detectar una ganancia, necesitamos determinar qué cuenta como una ganancia. Guardaremos cada posible triple ganador como una lista de tres números de posición (un triple). Por ejemplo, este triple ganador podría representarse como porque la ganancia está en las posiciones 3rd, 5th y 7th:
A continuación, crearemos una lista para almacenar todos los posibles triples ganadores para que podamos compararla con el estado actual del juego almacenado por tablero.
Necesitamos una forma de averiguar si realmente ha ocurrido un triple ganador. Podemos usar map
para verificar cada posición en un triple para ver si algún jugador ha ganado con ese triple.
Aprendiste sobre map
en Unidad 3 Práctica de laboratorio 2, página 5: Transformación de todos los elementos de la lista.
Map
aplica la función del anillo gris a cada elemento de la lista de entrada e informa una lista de todos los resultados.
Recuerde que la ranura de entrada en blanco en la función dentro del anillo gris es donde va un elemento de la lista cada vez que se realiza la función.
map
work here?
Esta expresión map
funciona de la misma manera que el ejemplo anterior de join
, pero es un poco más complejo de pensar. Como antes, map
inserta cada elemento de la lista en el espacio en blanco de la función dentro del anillo gris e informa una lista de los resultados.
Pero aquí, la función en el anillo gris es elemento () de (
tablero)
, por lo que map
comprueba elementos 1, 2 y 3 de la lista almacenada en la variable tablero, y reporta una lista de lo que está en esas tres posiciones (X, O o Vacío).
Si no puede ver lo que hay dentro de la variable tablero, asegúrese de que su casilla esté marcada en la paleta Variables y expanda su observador para ver los elementos de la lista como se muestra en la imagen a continuación.
{1, 2, 3}
no es el triple en el que x ganó el juego, reemplace la lista en la expresión map
con el ganando el triple y haga clic en la expresión de nuevo.status of triple
con el triple ganador. Solucione cualquier error.
Acabas de construir un bloque que marcará un triple para mostrar si algún jugador ha elegido los tres cuadrados. Ahora, construirá un bloque, estado de todos los triples ganadores
para realizar la misma verificación para todos los triples que hacen una ganancia. Luego, usará ese bloque para verificar si alguno de los triples ganadores en realidad contiene tres movimientos del mismo jugador.
Por ejemplo, el jugador O ha ganado este juego y el bloque status of all winner triples
contiene el estado de cada triple. La computadora puede usar este bloque para buscar un triple ganador que tenga todo X o todo O.
map
junto con algunos de los otros bloques que ha creado para construir el bloque estado de todos los triples ganadores
. Debe informar el estado de todos los triples ganadores como una lista de listas, como se muestra arriba.map
.
map
piensa:
won?
.
Póngalo en palabras: ¿Qué es lo que quiere comprobar?
¿Hay algún bloque que pueda ser útil para eso?
Haga clic para obtener otra pista.
true
si y solo si ese jugador ha ganado el juego. La definición de un juego empatado es que no hay más casillas vacías y ningún jugador ha ganado.
This hint won't work when we change "Empty" to numbers. -bh
I don't want to do that until we need it--in U5. --MF, 6/8/18
One reason to do it from the beginning is that as it is now, the student has to remember where in the program it assumes "Empty," otherwise the project won't work. --bh
Puedes trabajar en este proyecto más en Unidad 5 Projecto Opcional: Tic-Tac-Toe.