Paso 4: El código
Se necesita un mago de Micro (no importa que versión) y la biblioteca de microM que puede descargarse desde aquí: https://sites.google.com/site/daguproducts/home/arduino-libraries
Si lo prefiere que puede usar otra placa Arduino. Usted probablemente necesitará un protoboard y puente los cables para conectar un receptor de infrarrojos y sus servos. Usted puede preferir utilizar múltiples protocolos IR la biblioteca de Ken Shirriff que se puede encontrar aquí: http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
Como puedes ver he analizado mi código en secciones lógicas y ponerlos en diferentes pestañas. Esto hace mucho más fácil de editar el código.
[TicTacToe] esta primera ficha es el código principal. Tiene la función Setup() donde se realiza la inicialización y la función Loop() donde se juega el juego. La función Loop() consisten en 3 secciones.
- Selección de modo - el programa busca nuevos comandos IR y cambia modos si es necesario.
- Los jugadores mueven - cuando es tu turno esta sección le permite hacer su jugada.
- Robots se mueven - dependiendo del nivel de dificultad, diferentes estrategias son seleccionados aquí.
Después de un movimiento se ha hecho es mostrado en el monitor serie. El robot a continuación comprueba si cualquier más movimientos se pueden hacer y si alguien ha ganado.
[IOpins.h] esta ficha es diagrama de cableado. Si desea cambiar un servo del perno que se conecta a entonces sólo cambia el número de pin aquí. Como el IR receptor es cableado a D4 no aparecen.
[Constants.h] esta ficha contiene constantes que se utilizan dentro del programa. Códigos de receptores de infrarrojos y valores preestablecidos para los servos de mecanismo de sujeción y pernos se definen aquí. Como robot será diferente a la mía, usted necesitará cambiar estos valores para adaptarse a. Todos los valores son en μs para el uso con el comando writeMicroseconds() .
[Calibrar] esta función se utiliza para enseñar al robot donde cada posición en el tablero. Inicialmente todas las posiciones son iguales a ambos servos del brazo en la posición central. Como enseñar el brazo, nuevas posiciones se guardan en los procesadores de EEPROM por lo incluso si se apaga el robot no olvidará lo que enseñó.
[eepromFunctions] cuando el programa ejecuta primero la EEPROM es leer para que el robot sabrá las posiciones del tablero. Cuando calibra el robot las nuevas posiciones se escriben en la EEPROM para que cuando la energía está apagada el robot no olvidará las posiciones.
[DisplayGrid] el juego se muestra en el monitor serial para propósitos de depuración y permite jugar Tic Tac Toe contra el mago Micro utilizando sólo una televisión remota. El robot sólo es necesario para impresionar a tus amigos y familiares y hacer el juego más divertido para jugar. 0 representa una posición vacía. Las bolas de robots están representadas con 1. Sus bolas están representados por 2.
[MoveArm] como el nombre sugiere, esta función mueve el brazo desde una posición en el tablero a otro. mi código descompone el movimiento en pasos pequeños para que el brazo se mueve lenta y suavemente. Movimientos más grandes se dividen en pasos más para que todos los movimientos ocurren en aproximadamente la misma velocidad.
[CheckForWin] después de que cada uno mueva la Junta se comprueba para ver si hay un ganador. 3 de la misma se comprueban todas las filas, columnas y diagonales.
[ClearBoard] al final del juego robot recoge todas las bolas y los pone en su canal. El robot se basa en memoria para determinar si la bola pertenece al jugador o el robot y devuelve la bola al canal correcto. El mecanismo de pasador plantea las bolas lo suficientemente altas para la muñeca para recogerlos y luego baja otra vez las bolas para que el brazo pueda moverse libremente.
[RandomMove] en el nivel más fácil, todos los movimientos de robots son al azar. Este modo está diseñado para enseñar a los niños el juego por primera vez. Un movimiento al azar es también utilizado por el robot cuando otras estrategias no. Para hacer juego menos predicable (más agradable), cuando que los robots a su vez a iniciar un juego el robot empezará con un movimiento al azar.
[BlockPlayer] esta función es utilizado por el robot a mirar sus movimientos y determinar si usted está a punto de ganar. Si el robot detecta que tienes dos bolas en línea con la tercera posición está libre entonces colocará la bola en la posición libre para bloquear te. Esta función no se utiliza en el nivel más fácil que está diseñado para enseñar a los niños cómo jugar.
[MakeLine] esta función es similar a [BlockPlayer], excepto que se utiliza por el robot para obtener 3 en una fila. Esta función no se utiliza en los niveles más fáciles.
[SecondMove] como un juego de Tic Tac Toe no tiene muchos movimientos, el segundo paso es a menudo donde su estrategia se entran en juego. El robot utiliza esto en el nivel más difícil para tratar de golpearte. Lo admito, esta parte del código podría ser mejorada. No soy bueno en juegos de estrategia.