Apprendre à écrire du code peut être un long voyage. Non seulement vous devez trouver des ressources pour vous aider à apprendre, mais vous devez également trouver des idées de projets passionnants qui maintiennent votre éducation sur la bonne voie.

Les jeux vidéo offrent une excellente occasion de programmer quelque chose que vous pouvez apprécier. Et ils peuvent également vous enseigner les bases dont vous avez besoin pour être un bon programmeur. Cet article explore un projet de jeu vidéo Arduino portable DIY pour vous aider à démarrer.

Que fabriquons-nous et pourquoi ?

Avant de plonger dans la partie guide de cet article, il est logique d'explorer ce que nous fabriquons et pourquoi nous l'avons choisi pour ce projet. Plusieurs défis viennent avec la création de jeux pour des appareils comme Arduinos.

  • Espace de stockage: le plus Cartes Arduino viennent avec très peu de RAM ou de mémoire flash. Non seulement cela limite la quantité de code qu'ils peuvent exécuter, mais cela présente également des défis lorsqu'il s'agit de travailler avec des variables.
  • instagram viewer
  • Puissance de traitement: L'Arduino que nous avons utilisé a un processeur de faible puissance, il est donc impossible de créer des applications gourmandes en ressources.
  • Composants limités: Les Arduinos ont beaucoup de broches disponibles, mais de nombreux composants en ont besoin de plus d'un. Cela nous limite en ce qui concerne les commandes et les sorties d'affichage.

Avec ces défis à l'esprit, nous avons décidé de créer un appareil portable qui exécute un jeu très simple basé sur la réaction. Vous pourriez facilement créer d'autres jeux pour le matériel avec lequel nous travaillons, et nous vous encourageons à faire preuve de créativité.

Le jeu lui-même est très simple. Trois blocs apparaissent à l'écran, deux soulignés et un rempli, chacun avec un bouton physique correspondant ci-dessous. Le joueur doit appuyer sur le bon bouton à chaque tour pour continuer à jouer, et s'il appuie sur le mauvais bouton ou manque de temps, la partie est terminée. Chaque pression réussie sur un bouton rapporte des points. Le jeu augmente lentement sa difficulté en réduisant le temps de réaction disponible.

Câblage de l'écran OLED, de l'Arduino et des boutons

Le câblage de votre jeu portable est la première étape de ce processus. Comme vous pouvez le voir dans le schéma de circuit ci-dessus, vous n'avez pas besoin d'établir de nombreuses connexions pour commencer, et vous pouvez même utiliser une planche à pain pour ce projet.

Nous avons déjà publié un guide pour vous aider à câbler des boutons poussoirs à un Arduino. Notre Projet de moniteur d'aquarium Arduino vous montre comment utiliser un écran OLED avec un microcontrôleur comme celui-ci. En tant que tel, nous nous concentrerons sur le code de ce projet pour le reste de cet article.

Code de jeu portable Arduino

Un formatage approprié et des structures de fichiers bien rangées sont très importants pour les programmeurs novices et expérimentés. Vous vous remercierez d'avoir pris le temps d'organiser soigneusement votre code si jamais vous deviez le parcourir.

Le code utilise un fichier INO principal pour former la base de notre projet. Il existe également un fichier C++ pour contrôler notre affichage, un fichier C++ pour exécuter le code principal du jeu et un fichier de bibliothèque Arduino pour connecter le tout.

Nous approfondirons ce code ci-dessous, mais nous vous encourageons à jeter un œil au code commenté dans notre Projet de jeu portable Arduino sur GitHub. Cela vous aidera à vous y référer à côté de cet article.

Le fichier de bibliothèque (library.h)

Notre fichier de bibliothèque joue un rôle crucial, reliant nos autres fichiers de projet ensemble afin qu'ils puissent fonctionner comme une seule application. Ce fichier contient des déclarations pour inclure la bibliothèque Arduino.h et toutes les fonctions de notre code de jeu qui doivent fonctionner entre nos fichiers. Sans cela, notre code ne fonctionnerait tout simplement pas.

Le fichier principal INO (main.ino)

Comme de nombreux projets Arduino, celui-ci a démarré avec le modèle par défaut fourni par l'IDE Arduino. Ce modèle lui donne mettre en place et boucle fonctions que nous utilisons pour appeler des fonctions dans nos autres fichiers. Ce fichier a également une déclaration pour inclure le fichier library.h.

La fonction de configuration est idéale pour initialiser notre écran et nos boutons, car elle ne s'exécute qu'une seule fois lorsque l'Arduino est réinitialisé ou sous tension. Pour cela, nous appelons la fonction disSetup() dans notre fichier display et la fonction butSetup() dans notre fichier game.

Notre fonction loop() est encore plus simple que la fonction setup(), avec un seul appel à la fonction gameState() trouvée dans notre fichier de jeu. Nous explorerons cela plus en détail plus loin dans l'article.

Le fichier de code d'affichage (display.cpp)

Nous utilisons un écran OLED SSD1306 pour ce projet, bien que vous puissiez utiliser un type d'affichage différent si vous modifiez le code en conséquence. Ce fichier commence par l'inclusion du fichier de bibliothèque, bibliothèque.h. Il inclut ensuite des déclarations pour les bibliothèques SPI, Wire, Adafruit_GX et Adafruit_SSD1306. Ensuite, il définit certaines constantes pour fournir des paramètres pour l'affichage.

La première fonction, désinstallation, initialise l'affichage et affiche un écran de démarrage du logo. Il efface ensuite l'affichage après avoir attendu environ 2 secondes. Notre fichier principal, main.ino, appelle disSetup dans son mettre en place une fonction.

Le reste des fonctions de ce fichier, à l'exception de timerBar(), forment les différents écrans vus tout au long du jeu. Le fichier du jeu, jeu.cpp, appelle chacune de ces fonctions.

  • startGame(): cette fonction contrôle le premier écran que le joueur voit. Il demande simplement s'ils sont prêts en appelant le switchInstance fonction trouvée dans le fichier du jeu.
  • startingGame(): une fois que le joueur a commencé le jeu, cet écran affiche un court compte à rebours. Il change ensuite l'état du jeu pour correspondre.
  • inGame(): C'est la plus complexe de nos fonctions d'affichage, utilisant trois variables pour charger chaque tour du jeu. Cela commence par une instruction if qui détermine laquelle des trois tuiles remplir, suivie de l'affichage des tuiles et du niveau et du score du joueur.
  • timerBar(): cette fonction utilise une variable pour afficher une barre de minuterie en bas de l'écran. Il montre au joueur combien de temps il a pour chaque tour.
  • successScreen(): il s'agit d'une fonction simple qui affiche un message chaque fois que le joueur termine un tour avec succès.
  • endGame(): cette dernière fonction affiche un jeu sur l'écran avec le score du joueur et la possibilité de recommencer le jeu.

Le fichier de code du jeu (game.cpp)

Enfin, en tant que dernier fichier à explorer, il est temps de regarder le code du jeu. Ce fichier, comme les autres, commence par l'inclusion du fichier library.h. Il contient également une longue liste de différentes variables entières que nous utilisons pendant le jeu.

Vous trouverez la fonction butSetup() avant toute autre chose. La fonction setup() de notre fichier principal appelle butSetup. Cette fonction utilise des variables pour configurer nos boutons en tant qu'entrées que nous pourrons lire plus tard.

  • switchInstance(): cette fonction bascule entre les instances du jeu, de l'écran de démarrage aux écrans de jeu et de jeu. Il reçoit une variable pour lui dire vers quel état du jeu basculer. Une instruction if attend qu'un bouton soit pressé pour démarrer le jeu à partir de l'état startGame(). Une autre instruction if redémarre le jeu à partir de l'état endGame().
  • gameState(): cette fonction définit la difficulté du jeu en fonction du score du joueur et appelle la bonne fonction en fonction de l'état du jeu. Cela commence par une série d'instructions if qui définissent des variables en fonction du score du joueur, suivies d'autres instructions if pour vérifier l'instance actuelle.
  • tileSelector(): Cette fonction génère un nombre aléatoire entre 0 et 2 qui indique au jeu laquelle des trois tuiles remplir à un moment donné.
  • theGame(): Cette fonction est sans doute la plus importante de toutes. Il appelle le tileSelector et En jeu fonctions, en choisissant une nouvelle vignette et en l'affichant à l'écran. Ensuite, vous trouverez une boucle for qui agit comme une minuterie pour chaque tour. Il contient un ensemble d'instructions if qui détectent les pressions sur les boutons et déterminent si elles sont correctes.

Construire votre propre jeu Arduino portable

Cet article est un compagnon du code de projet trouvé sur GitHub. Vous pouvez trouver plus d'informations sur les lignes de code spécifiques que nous avons utilisées dans les commentaires de ces fichiers. Mais vous pouvez également le charger simplement sur votre Arduino et profiter du plaisir.

La créativité est essentielle dans le monde du développement de jeux, et nous vous encourageons à travailler sur vos propres idées de jeux parallèlement à celle-ci.

Les 10 meilleurs projets de radio Arduino

Lire la suite

PartagerTweeterPartagerE-mail

Rubriques connexes

  • Programmation
  • DIY
  • Idées de projets de bricolage
  • Tutoriels de projets de bricolage
  • Arduino
  • Programmation

A propos de l'auteur

Samuel L. Garbet (41 articles publiés)

Samuel est un rédacteur technologique basé au Royaume-Uni, passionné par tout ce qui concerne le bricolage. Ayant démarré des entreprises dans les domaines du développement Web et de l'impression 3D, en plus d'avoir travaillé comme écrivain pendant de nombreuses années, Samuel offre un aperçu unique du monde de la technologie. Se concentrant principalement sur des projets de technologie de bricolage, il n'aime rien de plus que partager des idées amusantes et passionnantes que vous pouvez essayer à la maison. En dehors du travail, Samuel peut généralement être trouvé en train de faire du vélo, de jouer à des jeux vidéo sur PC ou de tenter désespérément de communiquer avec son crabe de compagnie.

Plus de Samuel L. Garbet

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner