Imparare a scrivere codice può essere un lungo viaggio. Non solo devi trovare risorse per aiutarti a imparare, ma devi anche trovare idee per progetti entusiasmanti che mantengano la tua istruzione in carreggiata.

I videogiochi offrono una grande opportunità per programmare qualcosa che puoi divertirti. E possono anche insegnarti i fondamenti di cui hai bisogno per essere un buon programmatore. Questo articolo esplora un progetto di videogiochi Arduino portatile fai-da-te per iniziare.

Cosa stiamo facendo e perché?

Prima di addentrarci nella parte guida di questo articolo, ha senso esplorare cosa stiamo realizzando e perché l'abbiamo scelto per questo progetto. Diverse sfide derivano dalla creazione di giochi per dispositivi come Arduinos.

  • Spazio di archiviazione: la maggior parte Schede Arduino venire con pochissima RAM o memoria flash. Questo non solo pone un limite alla quantità di codice che possono eseguire, ma presenta anche sfide quando si tratta di lavorare con le variabili.
  • Potenza di elaborazione: l'Arduino che abbiamo utilizzato ha una CPU a basso consumo, quindi è impossibile creare applicazioni affamate di risorse per esso.
    instagram viewer
  • Componenti limitati: gli Arduino hanno molti pin disponibili, ma molti componenti ne richiedono più di uno. Questo ci limita quando si tratta di controlli e output di visualizzazione.

Con queste sfide in mente, abbiamo deciso di creare un dispositivo portatile che esegue un gioco molto semplice basato sulla reazione. Potresti facilmente creare altri giochi per l'hardware con cui stiamo lavorando e ti incoraggiamo a essere creativo.

Il gioco in sé è molto semplice. Sullo schermo vengono visualizzati tre blocchi, due delineati e uno pieno, ciascuno con un pulsante fisico corrispondente in basso. Il giocatore deve premere il pulsante giusto ad ogni round per continuare a giocare e se preme il pulsante sbagliato o scade il tempo il gioco finisce. Ogni pressione di pulsante riuscita assegna punti. Il gioco aumenta lentamente la sua difficoltà riducendo il tempo di reazione a disposizione.

Cablaggio del display OLED, Arduino e pulsanti

Il primo passaggio di questo processo è il cablaggio del gioco portatile. Come puoi vedere nello schema elettrico sopra, non devi fare molte connessioni per iniziare e puoi persino usare una breadboard per questo progetto.

Abbiamo già pubblicato una guida per aiutarti collegare i pulsanti a un Arduino. I nostri Progetto Arduino Aquarium Monitor ti mostra come utilizzare un display OLED con un microcontrollore come questo. Pertanto, ci concentreremo sul codice per questo progetto per il resto di questo articolo.

Codice di gioco per palmare Arduino

Una formattazione corretta e strutture di file ordinate sono molto importanti sia per i programmatori principianti che per quelli veterani. Ti ringrazierai per aver dedicato del tempo a organizzare il tuo codice in modo ordinato se mai dovessi ripassarlo.

Il codice utilizza un file INO principale per costituire la base del nostro progetto. C'è anche un file C++ per controllare il nostro display, un file C++ per eseguire il codice del gioco principale e un file della libreria Arduino per connetterlo tutto insieme.

Di seguito approfondiremo questo codice, ma ti invitiamo a dare un'occhiata al codice commentato nel ns Progetto Arduino Handheld Game su GitHub. Ti aiuterà a farvi riferimento insieme a questo articolo.

Il file della libreria (library.h)

Il nostro file di libreria svolge un ruolo cruciale, collegando insieme i nostri altri file di progetto in modo che possano funzionare come un'unica applicazione. Questo file contiene dichiarazioni per includere la libreria Arduino.h e tutte le funzioni all'interno del nostro codice di gioco che devono funzionare tra i nostri file. Senza questo, il nostro codice semplicemente non funzionerebbe.

Il file INO principale (main.ino)

Come molti progetti Arduino, questo è iniziato con il modello predefinito fornito dall'IDE Arduino. Quel modello lo dà impostare e ciclo continuo funzioni che usiamo per chiamare funzioni negli altri nostri file. Questo file ha anche una dichiarazione per includere il file library.h.

La funzione di configurazione è ideale per inizializzare il display e i pulsanti, poiché viene eseguita solo una volta quando Arduino viene ripristinato o acceso. Per questo, chiamiamo la funzione disSetup() nel nostro file di visualizzazione e la funzione butSetup() nel nostro file di gioco.

La nostra funzione loop() è ancora più semplice della funzione setup(), con una sola chiamata alla funzione gameState() che si trova nel nostro file di gioco. Lo esploreremo più in dettaglio più avanti nell'articolo.

Il file del codice di visualizzazione (display.cpp)

Stiamo utilizzando un display OLED SSD1306 per questo progetto, anche se puoi utilizzare un diverso tipo di display se modifichi il codice di conseguenza. Questo file inizia con l'inclusione del file della libreria, libreria.h. Include quindi le dichiarazioni per le librerie SPI, Wire, Adafruit_GX e Adafruit_SSD1306. Successivamente, definisce alcune costanti per fornire le impostazioni per la visualizzazione.

La prima funzione, disinstallazione, inizializza il display e mostra una schermata iniziale del logo. Quindi cancella il display dopo aver atteso circa 2 secondi. Il nostro file principale, main.ino, chiama disSetup nel suo impostare funzione.

Il resto delle funzioni in questo file, ad eccezione di timerBar(), formano le diverse schermate viste durante il gioco. Il file di gioco, gioco.cpp, chiama ciascuna di queste funzioni.

  • startGame(): questa funzione controlla la prima schermata che vede il giocatore. Chiede semplicemente se sono pronti mentre chiamano il switchInstance funzione trovata nel file di gioco.
  • StartingGame(): una volta che il giocatore inizia il gioco, questa schermata mostra un breve conto alla rovescia. Quindi cambia lo stato del gioco in modo che corrisponda.
  • inGame(): questa è la più complessa delle nostre funzioni di visualizzazione, utilizzando tre variabili per caricare ogni round del gioco. Inizia con un'istruzione if che determina quale delle tre tessere riempire, seguita dalla visualizzazione delle tessere e del livello e del punteggio del giocatore.
  • timerBar(): questa funzione utilizza una variabile per visualizzare una barra del timer nella parte inferiore dello schermo. Mostra al giocatore quanto tempo ha a disposizione per ogni round.
  • successScreen(): questa è una semplice funzione che mostra un messaggio ogni volta che il giocatore completa con successo un round.
  • endGame(): questa funzione finale mostra una schermata di game over con il punteggio del giocatore e l'opzione per ricominciare il gioco.

Il file del codice di gioco (game.cpp)

Infine, come ultimo file da esplorare, è il momento di guardare il codice del gioco. Questo file, come gli altri, inizia con l'inclusione del file library.h. Contiene anche un lungo elenco di diverse variabili intere che utilizziamo durante il gioco.

Troverai la funzione butSetup() prima di ogni altra cosa. La funzione setup() nel nostro file principale chiama butSetup. Questa funzione utilizza le variabili per impostare i nostri pulsanti come input che possiamo leggere in seguito.

  • switchInstance(): questa funzione consente di passare da un'istanza all'altra del gioco, dalla schermata iniziale alle schermate di gioco e game over. Riceve una variabile per dirgli a quale stato di gioco passare. Un'istruzione if attende la pressione di un pulsante per avviare il gioco dallo stato startGame(). Un'altra istruzione if fa ripartire il gioco dallo stato endGame().
  • gameState(): questa funzione imposta la difficoltà del gioco in base al punteggio del giocatore e chiama la funzione corretta a seconda dello stato del gioco. Inizia con una serie di istruzioni if ​​che impostano le variabili in base al punteggio del giocatore, seguite da più istruzioni if ​​per controllare l'istanza corrente.
  • tileSelector(): questa funzione genera un numero casuale compreso tra 0 e 2 che indica al gioco quale delle tre tessere riempire in un dato momento.
  • theGame(): questa funzione è probabilmente la più importante di tutte. Chiama il tileSelector e in gioco funzioni, selezionando una nuova tessera e visualizzandola sullo schermo. Successivamente, troverai un ciclo for che funge da timer per ogni round. Contiene una serie di istruzioni if ​​che rilevano le pressioni dei pulsanti e determinano se sono corrette.

Costruisci il tuo gioco Arduino portatile

Questo articolo è un complemento del codice del progetto trovato su GitHub. Puoi trovare maggiori informazioni sulle righe di codice specifiche che abbiamo utilizzato nei commenti in quei file. Ma puoi anche caricarlo semplicemente sul tuo Arduino e goderti il ​​divertimento.

La creatività è fondamentale nel mondo dello sviluppo di giochi e ti incoraggiamo a lavorare sulle tue idee di gioco insieme a questa.

I 10 migliori progetti radio Arduino

Leggi Avanti

CondividereTwittaCondividereE-mail

Argomenti correlati

  • Programmazione
  • Fai da te
  • Idee per progetti fai-da-te
  • Tutorial per progetti fai-da-te
  • Arduino
  • Programmazione

Circa l'autore

Samuel L. Garbetto (41 articoli pubblicati)

Samuel è uno scrittore di tecnologia con sede nel Regno Unito con una passione per tutto ciò che è fai-da-te. Avendo avviato attività nei settori dello sviluppo web e della stampa 3D, oltre a lavorare come scrittore per molti anni, Samuel offre una visione unica del mondo della tecnologia. Concentrandosi principalmente su progetti tecnologici fai-da-te, non ama altro che condividere idee divertenti ed eccitanti che puoi provare a casa. Al di fuori del lavoro, di solito si può trovare Samuel in bicicletta, giocare ai videogiochi per PC o tentare disperatamente di comunicare con il suo granchio domestico.

Altro da Samuel L. Garbetto

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti