Tic-Tac-Toe Robot (4 / 7 steg)
Steg 4: Koden
Behöver du en mikro trollkarl (ingen spelar roll vilken version) och microM biblioteket som kan laddas ner från här: https://sites.google.com/site/daguproducts/home/arduino-libraries
Om du föredrar kan du använda en annan Arduino ombord. Du kommer förmodligen behöva ett bakbord och hopparen kablar att ansluta en IR-mottagare och servon. Du kanske föredrar att använda Ken Shirriff flera protokoll IR bibliotek som kan hittas här: http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
Som ni ser har jag fördelade min kod i logiska avsnitt och sätta dem i olika flikar. Detta gör det mycket enklare att redigera din kod.
[TicTacToe] denna första fliken är din huvudsakliga kod. Det har din Setup() funktion där alla dina initieringen är klar och Loop() funktion där spelet spelas. Funktionen Loop() består av 3 sektioner.
- Val av läge - programmet ser ut för någon ny IR-kommandon och ändrar lägen om det behövs.
- Spelare flytta - när det är din tur i det här avsnittet kan du göra ditt drag.
- Robotar flytta - beroende på svårighetsgraden, olika strategier är vald här.
Efter en övergång har gjorts det visas på den seriella bildskärmen. Roboten kontrollerar sedan om någon fler förflyttningar kan göras och om någon har vunnit.
[IOpins.h] på den här fliken är du kopplingsschema. Om du vill ändra förbinds vilket stift ett servo för att sedan bara ändra pin-kod här. Som IR är-mottagaren hårdkodade att D4 det inte anges.
[Constants.h] på den här fliken innehåller konstanter som används i programmet. IR-mottagare koder och förinställda värden för gripdon och pins mekanism servon definieras här. Som du robot kommer att skilja sig från mig kommer att du behöva ändra dessa värden som passar. All värden är i µS för användning med kommandot writeMicroseconds() .
[Kalibrera] denna funktion används för att undervisa roboten där varje position i styrelsen är. Inledningsvis alla positioner är lika med både arm servon att vara i mittläget. Som du lär armen, sparas nya positioner i processorer EEPROM så att även om makt är avstängd roboten inte kommer att glömma vad du lärt.
[eepromFunctions] när programmet körs första gången EEPROM läses så att roboten vet placerar av styrelsen. När du kalibrerar roboten skrivs nya positioner till EEPROM så att när strömmen är avstängd roboten inte kommer att glömma ståndpunkterna.
[DisplayGrid] spelet visas på serial monitorn för felsökning ändamål och låter dig spela luffarschack mot Micro magikern använder bara en TV remote. Roboten endast behövs för att imponera på dina vänner och familj och gör spelet roligare att spela. 0 representerar en tom position. Robotar bollar är representerade med 1. Dina bollar representeras av en 2.
[MoveArm] som namnet antyder, denna funktion flyttar arm från en position i styrelsen till en annan. min kod bryter flytten ner till små steg så att armen rör sig långsamt och smidigt. Större drag är uppdelade i fler steg så att alla flyttar hända ungefär med samma hastighet.
[CheckForWin] efter varje flytta styrelsen kontrolleras för att se om det finns en vinnare. Alla rader, kolumner och diagonaler kontrolleras för 3 av samma.
[ClearBoard] i slutet av spelet till roboten samlar alla bollar och sätter dem tillbaka i deras ränna. Roboten använder minne för att avgöra om bollen tillhör spelaren eller robot och returnerar bollen till rätt hålan. Pin mekanism höjer bollar högt nog för gripdon att samla in dem och sedan sänker bollar igen så att armen kan röra sig fritt.
[RandomMove] på den enklaste nivån, alla robotar drag är slumpmässiga. Detta läge är avsett för att lära barn spelet för första gången. En random flytta används också av roboten när andra strategier misslyckas. För att göra spelet mindre predicable (roligare), när det är robotarna för att starta ett spel börjar roboten med en random flytta.
[BlockPlayer] den här funktionen används av roboten att titta på dina rörelser och avgöra om du kommer att vinna. Om roboten upptäcker du har två bollar i en linje med tredje positionen att vara gratis då det kommer att placera sin boll gratis möjlighet att blockera dig. Denna funktion används inte i den enklaste nivån som är avsedd för att lära barn hur man spelar.
[MakeLine] den här funktionen liknar [BlockPlayer] Förutom att den används av roboten för att få 3 i rad. Denna funktion används inte i de enklaste nivåerna.
[SecondMove] som ett spel av Tic Tac Toe inte har många flyttar, andra flytten är ofta där din strategi kommer in i bilden. Roboten använder detta i den svåraste nivån att försöka slå dig. Jag erkänner, denna del av koden kan förbättras. Jag är inte bra på strategispel.