Sommario:

Arduino Touch Tic Tac Toe gioco: 6 passaggi (con immagini)
Arduino Touch Tic Tac Toe gioco: 6 passaggi (con immagini)

Video: Arduino Touch Tic Tac Toe gioco: 6 passaggi (con immagini)

Video: Arduino Touch Tic Tac Toe gioco: 6 passaggi (con immagini)
Video: Biggest! Arduino Game - Sensor based Tic-Tac-Toe using Arduino mega 2024, Dicembre
Anonim
Image
Image
Arduino Touch Tic Tac Toe gioco
Arduino Touch Tic Tac Toe gioco
Arduino Touch Tic Tac Toe gioco
Arduino Touch Tic Tac Toe gioco
Arduino Touch Tic Tac Toe gioco
Arduino Touch Tic Tac Toe gioco

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

Image
Image
Il 2.8
Il 2.8

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

Image
Image
Il 2.8
Il 2.8
Il 2.8
Il 2.8

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

Costruire il progetto e testarlo
Costruire il progetto e testarlo
Costruire il progetto e testarlo
Costruire il progetto e testarlo
Costruire il progetto e testarlo
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

L'algoritmo del gioco
L'algoritmo del gioco
L'algoritmo del gioco
L'algoritmo del 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

Codice del Progetto
Codice del Progetto

Diamo una rapida occhiata al codice del progetto. Abbiamo bisogno di tre librerie per compilare il codice.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. 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

Considerazioni finali e miglioramenti
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: