Cuprins:

Joc Arduino Touch Tic Tac Toe: 6 pași (cu imagini)
Joc Arduino Touch Tic Tac Toe: 6 pași (cu imagini)

Video: Joc Arduino Touch Tic Tac Toe: 6 pași (cu imagini)

Video: Joc Arduino Touch Tic Tac Toe: 6 pași (cu imagini)
Video: Tinkercad - 6th Grade Tic-Tac-Toe Game 2024, Iunie
Anonim
Image
Image
Joc Arduino Touch Tic Tac Toe
Joc Arduino Touch Tic Tac Toe
Joc Arduino Touch Tic Tac Toe
Joc Arduino Touch Tic Tac Toe
Joc Arduino Touch Tic Tac Toe
Joc Arduino Touch Tic Tac Toe

Dragi prieteni, bine ai venit la un alt tutorial Arduino! În acest tutorial detaliat, vom construi un joc Arduino Tic Tac Toe. După cum puteți vedea, folosim un ecran tactil și jucăm împotriva computerului. Un joc simplu precum Tic Tac Toe este o introducere excelentă în programarea jocurilor și inteligența artificială. Chiar dacă nu vom folosi algoritmi de inteligență artificială în acest joc, vom înțelege de ce algoritmii de inteligență artificială sunt necesari în jocurile mai complexe.

Dezvoltarea jocurilor pentru Arduino nu este ușoară și necesită mult timp. Dar putem construi câteva jocuri simple pentru Arduino, deoarece este distractiv și ne va permite să explorăm câteva subiecte de programare mai avansate, cum ar fi Inteligența artificială. Este o experiență minunată de învățare și la final veți avea un joc frumos pentru copii!

Să construim acum acest proiect.

Pasul 1: obțineți toate părțile

Image
Image
2.8
2.8

Părțile necesare pentru construirea acestui proiect sunt următoarele:

Un Arduino Uno ▶

Un ecran tactil de 2,8”▶

Costul proiectului este foarte mic. Este doar 15 $

Înainte de a încerca să construiți acest proiect, vă rugăm să urmăriți videoclipul pe care l-am pregătit despre ecranul tactil. L-am atașat în acest instructable. Vă va ajuta să înțelegeți codul și să calibrați ecranul tactil.

Pasul 2: Ecranul tactil de 2,8 "pentru Arduino

Image
Image
2.8
2.8
2.8
2.8

Am descoperit acest ecran tactil pe banggood.com și am decis să îl cumpăr pentru a încerca să-l folosesc în unele dintre proiectele mele. După cum puteți vedea, ecranul este ieftin, costă aproximativ 11 USD.

Obțineți-l aici ▶

Afișajul oferă o rezoluție de 320x240 pixeli și vine ca un scut care face conexiunea cu Arduino extrem de ușoară. După cum puteți vedea, afișajul folosește aproape toți pinii digitali și analogici ai Arduino Uno. Când folosim acest scut, rămân cu doar 2 pini digitali și 1 pin analogic pentru proiectele noastre. Din fericire, afișajul funcționează bine și cu Arduino Mega, așa că atunci când avem nevoie de mai mulți pini putem folosi Arduino Mega în locul Arduino Uno. Din păcate, acest afișaj nu funcționează cu placa Arduino Due sau cu placa Wemos D1 ESP8266. Un alt avantaj al ecranului este că oferă un slot micro SD care este foarte ușor de utilizat.

Pasul 3: Construirea proiectului și testarea acestuia

Construirea proiectului și testarea acestuia
Construirea proiectului și testarea acestuia
Construirea proiectului și testarea acestuia
Construirea proiectului și testarea acestuia
Construirea proiectului și testarea acestuia
Construirea proiectului și testarea acestuia

După conectarea ecranului la Arduino Uno, putem încărca codul și suntem gata să jucăm.

La început, apăsăm butonul „Start Game” și jocul începe. Arduino joacă primul. Putem apoi să ne jucăm mișcarea prin simpla atingere a ecranului. Arduino își joacă apoi mișcarea și așa mai departe. Jucătorul care reușește să plaseze trei dintre marcajele lor pe un rând orizontal, vertical sau diagonal câștigă jocul. Când jocul s-a terminat, apare ecranul Game Over. Apoi putem apăsa butonul redare din nou pentru a începe jocul din nou.

Arduino este foarte bun la acest joc. Va câștiga majoritatea jocurilor sau, dacă sunteți un jucător foarte bun, jocul se va încheia la egalitate. Am proiectat intenționat acest algoritm pentru a face unele greșeli, pentru a oferi jucătorului uman șansa de a câștiga. Adăugând încă două linii la codul jocului, putem face Arduino imposibil să pierdem jocul. Dar cum poate un cip de 2 $, procesorul Arduino, să învingă creierul uman? Programul pe care l-am dezvoltat este mai inteligent decât creierul uman?

Pasul 4: Algoritmul jocului

Algoritmul jocului
Algoritmul jocului
Algoritmul jocului
Algoritmul jocului

Pentru a răspunde la această întrebare, să analizăm algoritmul pe care l-am implementat.

Computerul joacă întotdeauna primul. Doar această decizie facilitează câștigarea jocului pentru Arduino. Prima mișcare este întotdeauna un colț. A doua mișcare pentru Arduino este, de asemenea, un colț aleatoriu din restul, fără să-i pese deloc de mișcarea jucătorului. Din acest moment, Arduino verifică mai întâi dacă jucătorul poate câștiga în următoarea mutare și blochează această mișcare. Dacă jucătorul nu poate câștiga într-o singură mutare, joacă o mutare de colț dacă este disponibilă sau una aleatorie din restul. Gata, acest algoritm simplu poate învinge jucătorul uman de fiecare dată sau, în cel mai rău caz, jocul va avea ca rezultat o remiză. Acesta nu este cel mai bun algoritm de joc tic tac toe, ci unul dintre cele mai simple.

Acest algoritm poate fi implementat cu ușurință în Arduino, deoarece jocul Tic Tac Toe este foarte simplu și îl putem analiza și rezolva cu ușurință. Dacă proiectăm arborele jocului, putem descoperi câteva strategii câștigătoare și le putem implementa cu ușurință în cod sau putem lăsa CPU să calculeze arborele jocului în timp real și să aleagă singura cea mai bună mișcare. Desigur, algoritmul pe care îl folosim în acest joc este foarte simplu, deoarece jocul este foarte simplu. Dacă încercăm să proiectăm un algoritm câștigător pentru șah, chiar dacă folosim cel mai rapid computer, nu putem calcula arborele jocului într-o mie de ani! Pentru astfel de jocuri, avem nevoie de o altă abordare, avem nevoie de niște algoritmi de inteligență artificială și, desigur, de o putere de procesare imensă. Mai multe despre acest lucru într-un videoclip viitor.

Pasul 5: Codul proiectului

Codul proiectului
Codul proiectului

Să aruncăm o privire rapidă asupra codului proiectului. Avem nevoie de trei biblioteci pentru a compila codul.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Ecran tactil:

După cum puteți vedea, chiar și un joc simplu ca acesta, necesită mai mult de 600 de linii de cod. Codul este complex, așa că nu voi încerca să-l explic într-un scurt tutorial. Vă voi arăta însă implementarea algoritmului pentru mișcările Arduino.

La început, jucăm două corner-uri aleatorii.

<int firstMoves = {0, 2, 6, 8}; // va folosi aceste poziții mai întâi pentru (contor = 0; contor <4; contor ++) // Numărați primele mișcări jucate {if (bord [primulMuie [contor]! = 0) // Prima mișcare este jucată de cineva {se mutăPlayed ++; }} do {if (mută <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (bord [c] == 0) {întârziere (1000); bord [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

Apoi, în fiecare rundă verificăm dacă jucătorul poate câștiga în următoarea mutare.

int checkOpponent ()

{if (board [0] == 1 && board [1] == 1 && board [2] == 0) return 2; else if (board [0] == 1 && board [1] == 0 && board [2] == 1) returnează 1; else if (board [1] == 1 && board [2] == 1 && board [0] == 0) returnează 0; else if (bord [3] == 1 && bord [4] == 1 && bord [5] == 0) returnează 5; else if (bord [4] == 1 && bord [5] == 1 && bord [3] == 0) returnează 3; else if (bord [3] == 1 && bord [4] == 0 && bord [5] == 1) returnează 4; else if (board [1] == 0 && board [4] == 1 && board [7] == 1) returnează 1; altfel returnează 100; }

Dacă da, blocăm acea mișcare, de cele mai multe ori. Nu blocăm toate mișcările pentru a oferi jucătorului uman șansa de a câștiga. Puteți găsi care mișcări nu sunt blocate? După blocarea mișcării, jucăm un colț rămas sau o mișcare aleatorie. Puteți studia codul și vă puteți implementa cu ușurință propriul algoritm imbatabil. Ca întotdeauna, puteți găsi codul proiectului atașat la acest instructable.

NOTĂ: Deoarece Banggood oferă același afișaj cu două drivere de afișare diferite, dacă codul de mai sus nu funcționează, schimbați funcția initDisplay cu următoarele:

void initDisplay ()

{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }

Pasul 6: Gânduri finale și îmbunătățiri

Gânduri finale și îmbunătățiri
Gânduri finale și îmbunătățiri

După cum puteți vedea, chiar și cu un Arduino Uno, putem construi un algoritm imbatabil pentru jocuri simple. Acest proiect este minunat, deoarece este ușor de construit și, în același timp, o introducere excelentă în inteligența artificială și programarea jocurilor. Voi încerca să construiesc câteva proiecte mai avansate cu Inteligență Artificială în viitor folosind Raspberry Pi mai puternic, așa că rămâneți la curent! Mi-ar plăcea să vă aud părerea despre acest proiect.

Vă rugăm să publicați comentariile dvs. mai jos și nu uitați să vă place instructabilul dacă vi se pare interesant. Mulțumiri!

Recomandat: