Cov txheej txheem:

Tic Tac Toe ntawm Arduino Nrog AI (Minimax Algorithm): 3 Cov Kauj Ruam
Tic Tac Toe ntawm Arduino Nrog AI (Minimax Algorithm): 3 Cov Kauj Ruam

Video: Tic Tac Toe ntawm Arduino Nrog AI (Minimax Algorithm): 3 Cov Kauj Ruam

Video: Tic Tac Toe ntawm Arduino Nrog AI (Minimax Algorithm): 3 Cov Kauj Ruam
Video: Aero2D: Tic Tac Toe 2024, Kaum ib hlis
Anonim
Image
Image
Tsim thiab Ua Si
Tsim thiab Ua Si

Hauv Cov Lus Qhia no Kuv yuav qhia koj yuav tsim Tic Tac Toe game nrog AI siv Arduino li cas. Koj tuaj yeem ua si tawm tsam Arduino lossis saib Arduino ua si tawm tsam nws tus kheej.

Kuv tab tom siv cov txheej txheem hu ua "minimax algorithm", uas tuaj yeem siv tsis tau tsuas yog tsim AI rau Tic Tac Toe, tab sis kuj tseem muaj ntau yam ntawm lwm yam kev ua si zoo li Plaub hauv Kab, tus lej kos lossis txawm tias chess. Kev ua si zoo li chess yog qhov nyuaj heev thiab xav tau ntau qhov ua kom zoo dua ntawm cov txheej txheem. Rau peb Tic Tac Toe game, peb tuaj yeem siv qhov yooj yim tshaj plaws ntawm cov txheej txheem, uas tseem yog qhov zoo nkauj heev. Qhov tseeb, AI zoo heev uas nws tsis tuaj yeem kov yeej Arduino!

Qhov kev ua si yog yooj yim los tsim. Koj tsuas yog xav tau ob peb yam thiab kos duab uas kuv tau sau. Kuv kuj tau ntxiv cov lus piav qhia ntxaws ntxiv ntawm cov txheej txheem, yog tias koj xav nkag siab tias nws ua haujlwm li cas.

Kauj ruam 1: Tsim thiab Ua Si

Txhawm rau tsim Tic Tac Toe game koj yuav xav tau cov hauv qab no:

  • Ib Arduino Uno
  • 9 WS2812 RGB LEDs
  • 9 laub khawm
  • qee cov xaim thiab jumper cables

Txhim kho cov khoom raws li qhia hauv Fritzing sketch. Tom qab ntawd xa cov cai rau koj Arduino.

Los ntawm lub neej ntawd, Arduino siv thawj zaug tig. Txhawm rau ua tej yam me ntsis ntxim nyiam, thawj qhov kev txav yog xaiv los ntawm kev xaiv. Tom qab thawj qhov kev txav mus los, Arduino siv qhov minimax algorithm los txiav txim siab qhov ua tau zoo tshaj plaws. Koj pib qhov kev ua si tshiab los ntawm kev teeb tsa Arduino.

Koj tuaj yeem saib Arduino "xav" los ntawm kev qhib Serial Monitor. Rau txhua qhov tuaj yeem txav mus los, cov txheej txheem suav nrog qhov ntsuas uas qhia tias qhov kev txav no yuav ua rau yeej (tus nqi 10) lossis poob (tus nqi -10) rau Arduino lossis kos (tus nqi 0).

Koj tseem tuaj yeem saib Arduino ua si tawm tsam nws tus kheej los ntawm kev tsis suav nrog kab "#define DEMO_MODE" thaum pib ntawm daim duab. Yog tias koj xa cov duab hloov pauv, Arduino ua thawj qhov txav mus thiab tom qab ntawd siv qhov tsawg tshaj plaws qhov kev txiav txim siab los txiav txim siab qhov txav mus zoo tshaj plaws rau txhua tus neeg ua si hauv txhua qhov tig.

Nco ntsoov tias koj tsis tuaj yeem yeej tawm tsam Arduino. Txhua qhov kev ua si yuav xaus nrog kev kos lossis koj swb, yog tias koj ua yuam kev. Qhov no yog vim tias cov txheej txheem ib txwm xaiv qhov ua tau zoo tshaj plaws. Raws li koj yuav paub, kev ua si ntawm Tic Tac Toe yuav ib txwm xaus hauv kev kos yog tias ob tus neeg ua si tsis ua yuam kev. Hauv hom demo, txhua qhov kev ua si xaus hauv kev kos vim tias, raws li peb txhua tus paub, khoos phis tawj yeej tsis ua yuam kev;-)

Kauj Ruam 2: Minimax Algorithm

Minimax Algorithm
Minimax Algorithm

Lub algorithm muaj ob ntu: kev tshuaj xyuas kev ua haujlwm thiab kev tshawb fawb lub tswv yim. Kev ntsuam xyuas muaj nuj nqi yog ua haujlwm uas muab tus lej lej rau cov haujlwm. Yog tias txoj haujlwm yog txoj haujlwm zaum kawg (piv txwv li, txoj haujlwm qhov twg tus neeg ua si xiav lossis tus neeg ua si liab tau yeej lossis qhov twg tsis muaj tus neeg uas ua ntawv yeej), kev tshuaj xyuas kev ua haujlwm yog yooj yim heev: Cia peb hais Arduino ua si xiav thiab tib neeg cov neeg ua si liab. Yog tias txoj haujlwm yog txoj haujlwm yeej rau xiav, txoj haujlwm muab tus nqi 10 rau txoj haujlwm ntawd; yog tias nws yog txoj haujlwm yeej rau liab, txoj haujlwm muab tus nqi ntawm -10 rau txoj haujlwm; thiab yog tias txoj haujlwm yog kos, txoj haujlwm muab tus nqi 0.

Thaum nws yog Arduino's tig, nws xav xaiv qhov txav mus uas ua kom muaj txiaj ntsig zoo tshaj plaws ntawm qhov kev ntsuas ntsuas, vim tias qhov txiaj ntsig siab tshaj plaws txhais tau tias nws yuav nyiam qhov yeej dhau qhov kos (10 ntau dua 0) thiab pom qhov kos ntau dua qhov poob (0 yog ntau dua -10). Los ntawm kev sib cav sib cav, tus neeg sib tw xav ua si hauv txoj hauv kev uas nws txo qis tus nqi ntawm qhov ntsuas kev ua haujlwm.

Rau txoj haujlwm tsis yog zaum kawg, lub algorithm suav tus nqi ntawm qhov kev ntsuas ntsuas los ntawm kev tshawb nrhiav rov ua haujlwm. Pib los ntawm txoj haujlwm tam sim no, nws hloov pauv simulates txhua qhov kev txav chaw uas cov neeg ua si xiav thiab cov neeg ua si liab tuaj yeem ua tau. Qhov no tuaj yeem pom tau tias yog tsob ntoo, zoo li hauv daim duab. Thaum nws tuaj txog ntawm txoj haujlwm zaum kawg, nws pib thim rov qab, nqa tus nqi ntawm qhov ntsuas kev ua haujlwm los ntawm qib qis dua mus rau qib rov ua dua. Nws muab qhov siab tshaj plaws (yog tias nyob hauv cov kauj ruam rov ua dua nws yog tus neeg sib tw tig) lossis qhov tsawg kawg nkaus (yog tias nyob hauv cov kauj ruam rov ua dua nws yog tus neeg ua si liab tig) ntawm cov txiaj ntsig ntawm kev ntsuas ntsuas los ntawm qib rov ua dua mus rau txoj haujlwm ntawm qib rov ua dua Thaum kawg, thaum lub algorithm tau ua tiav thim rov qab thiab tau los txog ntawm txoj haujlwm tam sim no dua, nws yuav siv qhov kev txav ntawd (lossis ib qho ntawm kev txav) uas muaj qhov ntsuas siab tshaj plaws muaj nuj nqi.

Qhov no yuav hnov me ntsis paub daws teeb, tab sis nws yeej tsis nyuaj li. Xav txog txoj haujlwm uas pom nyob rau sab saud ntawm daim duab. Hauv thawj kauj ruam rov ua dua, muaj peb qhov sib txawv txav xiav tuaj yeem ua tau. Xiav sim ua kom muaj txiaj ntsig zoo tshaj plaws ntawm qhov ntsuas kev ua haujlwm. Rau txhua qhov kev txav mus rau xiav tuaj yeem ua tau, muaj ob txoj kev txav liab tuaj yeem ua tau. Liab sim txo qis tus nqi ntawm qhov kev ntsuas ntsuas. Xav txog qhov txav chaw uas xiav ua si hauv kaum sab xis. Yog tias liab ua si hauv lub npov nruab nrab, liab tau yeej (-10). Yog tias, ntawm qhov tod tes, liab ua yeeb yam hauv nruab nrab lub npov hauv qab, xiav yuav yeej hauv kev txav mus tom ntej (10). Yog li, yog tias xiav ua si hauv lub ces kaum sab xis, liab yuav ua si hauv lub npov nruab nrab, txij li qhov ntawd txo tus nqi ntawm qhov kev ntsuas ntsuas. Piv txwv, yog tias xiav ua si hauv nruab nrab lub npov hauv qab, liab yuav rov ua si hauv lub npov nruab nrab vim tias txo qis qhov kev ntsuas ntsuas. Yog tias, ntawm qhov tod tes, xiav ua si hauv lub npov nruab nrab, nws tsis muaj teeb meem uas txav liab liab, xiav yeej ib txwm yeej (10). Txij li xiav xav ua kom muaj txiaj ntsig zoo tshaj plaws ntawm kev tshuaj xyuas, nws yuav ua si hauv lub npov nruab nrab, vim tias txoj haujlwm ntawd ua rau muaj txiaj ntsig ntau dua ntawm qhov ntsuas kev ua haujlwm (10) dua li ob qhov kev txav mus (-10).

Kauj Ruam 3: Troubleshooting thiab Cov Kauj Ruam Ntxiv

Yog tias koj thawb lub pob thiab lub LED sib txawv dua li qhov sib thooj rau lub teeb teeb, tej zaum koj yuav tau txais cov xov hlau ntawm tus pin A0-A2 lossis 4-6 sib xyaw, lossis koj txuas cov LED hauv qhov kev txiav txim tsis raug.

Tsis tas li nco ntsoov tias cov txheej txheem tsis tas yuav xaiv ib qho kev txav uas yuav cia Arduino yeej sai li sai tau. Qhov tseeb, Kuv tau siv qee lub sij hawm debug qhov txheej txheem vim tias Arduino tsis xaiv qhov txav mus uas yuav yog qhov yeej yeej. Nws coj kuv qee lub sijhawm txog thaum kuv paub tias nws tau xaiv qhov kev txav uas tau lees tias nws yuav yeej ib qho kev txav tom qab. Yog tias koj xav tau, koj tuaj yeem sim hloov kho cov txheej txheem kom nws ib txwm nyiam qhov kev txav mus rau tom qab yeej.

Qhov ua tau txuas ntxiv ntawm txoj haujlwm no yuav yog siv cov txheej txheem los tsim AI rau 4x4 lossis txawm tias 5x5 Tic Tac Toe. Txawm li cas los xij, nco ntsoov tias tus lej ntawm txoj haujlwm algorithm xav tau los tshuaj xyuas nce sai heev. Koj yuav tsum nrhiav txoj hauv kev los ua qhov kev ntsuas ntsuas ua haujlwm zoo dua qub los ntawm kev txiav txim siab qhov tseem ceeb rau txoj haujlwm uas tsis yog qhov kawg, raws li qhov muaj peev xwm ua tau txoj haujlwm yog qhov zoo lossis tsis zoo rau tus neeg uas ua ntawv nug. Koj kuj tseem tuaj yeem sim ua qhov kev tshawb fawb ntau dua los ntawm kev txwv qhov rov ua dua thaum ntxov yog tias kev txav mus los tsis tsim nyog rau kev tshawb fawb ntxiv dua li kev txav mus los.

Arduino yog tej zaum tsis yog lub platform zoo tshaj plaws rau kev txuas ntxiv vim tias nws muaj lub cim xeeb txwv. Recursion cia cov pawg loj tuaj thaum lub sijhawm ua haujlwm, thiab yog tias pawg teeb tsa ntau dhau, nws tuaj yeem ua rau lub cim xeeb tsis zoo, ua rau muaj kev sib tsoo lossis ua tsis zoo. Kuv xaiv Arduino rau txoj haujlwm no feem ntau vim kuv xav pom tias nws tuaj yeem ua tiav thiab rau lub hom phiaj kev kawm, tsis yog vim nws yog qhov kev xaiv zoo tshaj plaws rau cov teeb meem no.

Pom zoo: