Sommario:
- Passaggio 1: ottenere tutte le parti
- Passaggio 2: il display touch a colori da 2,8" per Arduino
- Passaggio 3: costruire il progetto e testarlo
- Passaggio 4: l'algoritmo di gioco
- Fase 5: Codice del Progetto
- Passaggio 6: considerazioni finali e miglioramenti
Video: Arduino Touch Tic Tac Toe gioco: 6 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Cari amici benvenuti in un altro tutorial di Arduino! In questo tutorial dettagliato costruiremo un gioco Arduino Tic Tac Toe. Come puoi vedere, stiamo usando un touch screen e stiamo giocando contro il computer. Un gioco semplice come Tic Tac Toe è un'ottima introduzione alla programmazione di giochi e all'intelligenza artificiale. Anche se non utilizzeremo alcun algoritmo di intelligenza artificiale in questo gioco, capiremo perché gli algoritmi di intelligenza artificiale sono necessari in giochi più complessi.
Sviluppare giochi per Arduino non è facile e richiede molto tempo. Ma possiamo costruire alcuni semplici giochi per Arduino perché è divertente e ci permetterà di esplorare alcuni argomenti di programmazione più avanzati, come l'intelligenza artificiale. È una grande esperienza di apprendimento e alla fine avrai un bel gioco per i bambini!
Ora costruiamo questo progetto.
Passaggio 1: ottenere tutte le parti
Le parti necessarie per realizzare questo progetto sono le seguenti:
Un Arduino Uno ▶
Un touch screen da 2,8" ▶
Il costo del progetto è molto basso. Sono solo 15$
Prima di provare a costruire questo progetto, guarda il video che ho preparato sul display touch. L'ho allegato in questo istruibile. Ti aiuterà a capire il codice e a calibrare il touch screen.
Passaggio 2: il display touch a colori da 2,8" per Arduino
Ho scoperto questo touch screen su banggood.com e ho deciso di acquistarlo per provare ad usarlo in alcuni dei miei progetti. Come puoi vedere il display è economico, costa circa $ 11.
Scaricalo qui ▶
Il display offre una risoluzione di 320x240 pixel e si presenta come uno scudo che rende estremamente facile la connessione con Arduino. Come puoi vedere, il display utilizza quasi tutti i pin digitali e analogici di Arduino Uno. Quando si utilizza questo shield ci rimangono solo 2 pin digitali e 1 pin analogico per i nostri progetti. Fortunatamente, il display funziona bene anche con Arduino Mega, quindi quando abbiamo bisogno di più pin possiamo usare Arduino Mega invece di Arduino Uno. Sfortunatamente questo display non funziona con Arduino Due o la scheda Wemos D1 ESP8266. Un altro vantaggio dello scudo è che offre uno slot micro SD che è molto facile da usare.
Passaggio 3: costruire il progetto e testarlo
Dopo aver collegato lo schermo ad Arduino Uno, possiamo caricare il codice e siamo pronti per giocare.
All'inizio, premiamo il pulsante "Inizia partita" e il gioco inizia. L'Arduino suona per primo. Possiamo quindi giocare la nostra mossa semplicemente toccando lo schermo. L'Arduino quindi esegue la sua mossa e così via. Il giocatore che riesce a piazzare tre dei suoi segni in una riga orizzontale, verticale o diagonale vince la partita. Quando il gioco è finito, appare la schermata Game Over. Possiamo quindi premere il pulsante Riproduci per ricominciare il gioco.
L'Arduino è molto bravo in questo gioco. Vincerà la maggior parte delle partite, o se sei un ottimo giocatore la partita finirà in parità. Ho progettato intenzionalmente questo algoritmo per commettere alcuni errori al fine di dare al giocatore umano la possibilità di vincere. Aggiungendo altre due righe al codice del gioco, possiamo rendere impossibile ad Arduino di perdere la partita. Ma come può un chip da 2$, la CPU Arduino, battere il cervello umano? Il programma che abbiamo sviluppato è più intelligente del cervello umano?
Passaggio 4: l'algoritmo di gioco
Per rispondere a questa domanda, diamo un'occhiata all'algoritmo che ho implementato.
Il computer gioca sempre per primo. Questa decisione da sola rende il gioco molto più facile da vincere per Arduino. La prima mossa è sempre un angolo. La seconda mossa per Arduino è anche un angolo casuale del rimanente senza preoccuparsi affatto della mossa del giocatore. Da questo punto in poi, Arduino prima controlla se il giocatore può vincere nella mossa successiva e blocca quella mossa. Se il giocatore non può vincere in una singola mossa, gioca una mossa d'angolo se disponibile o una casuale tra le rimanenti. Questo è tutto, questo semplice algoritmo può battere il giocatore umano ogni volta o, nel peggiore dei casi, il gioco risulterà in un pareggio. Questo non è il miglior algoritmo di gioco tic tac toe, ma uno dei più semplici.
Questo algoritmo può essere implementato facilmente in Arduino, perché il gioco Tic Tac Toe è molto semplice e possiamo facilmente analizzarlo e risolverlo. Se progettiamo l'albero di gioco possiamo scoprire alcune strategie vincenti e implementarle facilmente nel codice oppure possiamo lasciare che la CPU calcoli l'albero di gioco in tempo reale e scelga da sola la mossa migliore. Naturalmente, l'algoritmo che usiamo in questo gioco è molto semplice, perché il gioco è molto semplice. Se proviamo a progettare un algoritmo vincente per gli scacchi, anche se usiamo il computer più veloce non possiamo calcolare l'albero del gioco tra mille anni! Per giochi come questo, abbiamo bisogno di un altro approccio, abbiamo bisogno di alcuni algoritmi di intelligenza artificiale e, naturalmente, di un'enorme potenza di elaborazione. Maggiori informazioni su questo in un video futuro.
Fase 5: Codice del Progetto
Diamo una rapida occhiata al codice del progetto. Abbiamo bisogno di tre librerie per compilare il codice.
- Adafruit TFTLCD:
- Adafruit GFX:
- Touchscreen:
Come puoi vedere, anche un gioco semplice come questo richiede più di 600 righe di codice. Il codice è complesso, quindi non cercherò di spiegarlo in un breve tutorial. Tuttavia, ti mostrerò l'implementazione dell'algoritmo per le mosse di Arduino.
All'inizio, giochiamo due angoli casuali.
<int firstMoves={0, 2, 6, 8}; // userà queste posizioni per prime for(counter=0;counter<4;counter++) //Conta le prime mosse giocate { if(board[firstMoves[counter]!=0) // La prima mossa è giocata da qualcuno { movePlayed++; } } do{ if(mosse<=2) { int randomMove =random(4); int c=firstMoves[randomMove]; if (scheda[c]==0) { ritardo(1000); tavola[c]=2; Serial.print(firstMoves[randomMove]); Serial.println(); drawCpuMove(firstMoves[randomMove]); b=1; } }
Successivamente, in ogni round controlliamo se il giocatore può vincere nella mossa successiva.
int checkavversario()
{ if(board[0]==1 && board[1]==1 && board[2]==0) return 2; else if(board[0]==1 && board[1]==0 && board[2]==1) return 1; else if (scheda[1]==1 && scheda [2]==1 && scheda[0]==0) return 0; else if (board[3]==1 && board[4]==1 && board[5]==0) return 5; else if (board[4]==1 && board[5]==1&& board[3]==0) return 3; else if (board[3]==1 && board[4]==0&& board[5]==1) return 4; else if (board[1]==0 && board[4]==1&& board[7]==1) return 1; altrimenti restituisce 100; }
Se sì, blocchiamo quella mossa, la maggior parte delle volte. Non blocchiamo tutte le mosse per dare al giocatore umano la possibilità di vincere. Riesci a trovare quali mosse non sono bloccate? Dopo aver bloccato la mossa, giochiamo un angolo rimanente o una mossa casuale. Puoi studiare il codice e implementare facilmente il tuo algoritmo imbattibile. Come sempre potete trovare il codice del progetto allegato a questo instructable.
NOTA: poiché Banggood offre lo stesso display con due driver di visualizzazione diversi, se il codice precedente non funziona, modificare la funzione initDisplay come segue:
void initDisplay()
{ tft.reset(); tft.begin(0x9341); tft.setRotation(3); }
Passaggio 6: considerazioni finali e miglioramenti
Come puoi vedere, anche con un Arduino Uno, possiamo costruire un algoritmo imbattibile per giochi semplici. Questo progetto è fantastico, perché è facile da costruire e allo stesso tempo è un'ottima introduzione all'intelligenza artificiale e alla programmazione di giochi. Cercherò di costruire alcuni progetti più avanzati con l'intelligenza artificiale in futuro utilizzando il più potente Raspberry Pi, quindi resta sintonizzato! Mi piacerebbe sentire la tua opinione su questo progetto.
Per favore pubblica i tuoi commenti qui sotto e non dimenticare di mettere mi piace all'istruibile se lo trovi interessante. Grazie!
Consigliato:
Gioco Tic Tac Toe in pitone: 4 passaggi
Python Tic Tac Toe Game: python tic tac toe gioco questo gioco è realizzato in python che è un linguaggio informatico ho usato un editor python chiamato: pycharm puoi anche usare il normale editor di codice python anche
Microbit Tic Tac Toe gioco: 4 passaggi (con immagini)
Microbit Tic Tac Toe Game: per questo progetto, il mio collega di lavoro - @descartez e io abbiamo creato un fantastico gioco tic tac toe utilizzando la funzionalità radio di microbits. Se non hai mai sentito parlare di microbit prima, sono un fantastico microcontrollore progettato per insegnare la programmazione ai bambini. Essi
Gioco 3D4x: 3D 4x4x4 Tic-Tac-Toe: 5 passaggi (con immagini)
Gioco 3D4x: 3D 4x4x4 Tic-Tac-Toe: sei stanco di giocare allo stesso, vecchio, noioso tris bidimensionale?? Bene, abbiamo la soluzione per te! Tris in 3 dimensioni!!! Per 2 giocatori, in questo cubo 4x4x4, ottieni 4 LED di fila (in qualsiasi direzione) e vinci! Tu lo fai. tu pia
Come creare un gioco Tic Tac Toe usando Swift con Xcode: 5 passaggi
Come creare un gioco Tic Tac Toe usando Swift con Xcode: In questo tutorial su Swift ti mostrerò come creare un'app Tic Tac Toe. Questa app è estremamente semplice ed è un ottimo progetto per qualsiasi principiante. Suddividerò il tutorial in tre passaggi: 1. Creazione degli oggetti2. Collegamento di oggetti nel codice3. Il c
Gioco interattivo Tic-Tac Toe controllato con Arduino: 6 passaggi
Gioco interattivo Tic-Tac-Toe controllato con Arduino: l'obiettivo del progetto Physical Tic-Tac-Toe è quello di spostare un gioco ben noto nel regno fisico. In origine, il gioco è giocato da due giocatori su un pezzo di carta, mettendo a turno i simboli "X" e "O". La nostra idea era di esaminare il comportamento dei giocatori