HariFun #136 - comment écrire un jeu (8 / 8 étapes)

Étape 8: Observations finales

J’espère que vous avez aimé cette vidéo autant que j’ai fait partager. Si vous l’appréciez, n’oubliez pas de donner coup de pouce et peut-être s’abonner/follow afin que vous ne manquerez futures vidéos/instructables.

J’adore lire les commentaires donc s’il vous plaît écrivez un commentaire avec vos souvenirs de pong. Si vous faites de ce projet, j’aimerais le voir. Veuillez déposer un lien dans les commentaires ou cliquez sur le je l’ai fait bouton.

Si vous êtes dans les médias sociaux, s’il vous plaît partager cette instructable et/ou de YouTube vidéo.
Merci, Merci, Merci!

Sketch complet est inférieure à

 // Arduino Pong by Hari Wiguna, 2016// v0.0 - draw ball // v0.1 - move ball // v0.2 - using millis(), move in Y direction too // v0.3 - Paddles! // v0.4 - Collision Detection // v0.5 - Scoring, Speed up, and Sound#include "U8glib.h"//== Preferences == U8GLIB_PCD8544 u8g(13, 11, 9, 8, 10); // SPI Com: SCK = 13, MOSI = 11, CS = 9, A0/DataCommand = 8, Reset = 10 int paddle0Pin = A1; // Left player potentiometer int paddle1Pin = A0; // Right player potentiometer int winningScore = 3; // How high before we declare a winner? byte tonePin = 2; // Which digital pin the beeper is attached to int animationSpeed0 = 25; // Initial speed of each round (lower = faster)//== Game Variables == u8g_uint_t courtWidth, courtHeight, halfCourtWidth; u8g_uint_t ballSize = 4; u8g_uint_t ballX; u8g_uint_t ballDirectionX = 1; u8g_uint_t ballY; u8g_uint_t ballDirectionY = 1; u8g_uint_t paddleWidth = 2; u8g_uint_t paddleHeight = 8; u8g_uint_t paddleHalfHeight = paddleHeight/2; u8g_uint_t paddle0Y; // Left player vertical paddle position u8g_uint_t paddle1Y; // Right player vertical paddle positionint score0, score1; // Left & Right player's scores bool gameOver = false;int bounceToneFrequency = 523; int bounceToneDuration = 62; int missToneFrequency = 523 / 2; int missToneDuration = 512;unsigned long timeToMove; // When should we move the ball again? int animationSpeed = animationSpeed0; // Current ball speed (lower = faster)bool MissedPaddle(u8g_uint_t py) { u8g_uint_t ballTop = ballY; u8g_uint_t ballBottom = ballY + ballSize - 1; u8g_uint_t paddleTop = py; u8g_uint_t paddleBottom = py + paddleHeight - 1; return ballBottom < paddleTop || ballTop > paddleBottom; }void DrawScores() { char strScore0[] = "?"; // Sets string length to 1 char strScore1[] = "?"; strScore0[0] = '0' + score0; // Overide the string value with single digit score strScore1[0] = '0' + score1; u8g.setFont(u8g_font_04b_03b); u8g_uint_t scoreWidth = u8g.getStrPixelWidth(strScore0); const int offset = 5; u8g_uint_t scoreY = 9; u8g.drawStr( halfCourtWidth - offset - scoreWidth, scoreY, strScore0); u8g.drawStr( halfCourtWidth + offset, scoreY, strScore1); }void DrawGameOver() { u8g.setFont(u8g_font_timB18); u8g.setFontPosCenter(); // vertical alignment char gameStr[] = "Game"; char overStr[] = "Over"; u8g_uint_t gx = (courtWidth - u8g.getStrPixelWidth(gameStr)) / 2; u8g_uint_t ox = (courtWidth - u8g.getStrPixelWidth(overStr)) / 2; u8g.drawStr(gx, 20, gameStr); u8g.drawStr(ox, 40, overStr); }void DrawCourt() { u8g.drawHLine(0, 0, courtWidth); u8g.drawHLine(0, courtHeight - 1, courtWidth); byte dash = 3; for (byte y = 0; y < (courtHeight / dash / 2); y++) { u8g.drawVLine(halfCourtWidth - 1, 2 + y * dash * 2, dash); } }void Player0Missed() { // When left player missed, move the ball just to the left of rightmost of court ballX = courtWidth - ballSize - 1; ballY = paddle1Y + paddleHalfHeight; // ball will be served at location of player 1's paddle tone(tonePin, missToneFrequency, missToneDuration); delay(1000); score1++; animationSpeed = animationSpeed0; if (score1 == winningScore) gameOver = true; }void Player1Missed() { // When right player missed, move the ball just to the right of the leftmost of court ballX = 1; ballY = paddle0Y + paddleHalfHeight; // ball will be served at location of player 0's paddle tone(tonePin, missToneFrequency, missToneDuration); delay(1000); score0++; animationSpeed = animationSpeed0; if (score0 == winningScore) gameOver = true; }void BounceX() { tone(tonePin, bounceToneFrequency, bounceToneDuration); ballDirectionX = -ballDirectionX; animationSpeed--; // Speed up game with each bounce }void MoveBall() { if (millis() > timeToMove) { ballX += ballDirectionX; if (ballX <= 0) if (MissedPaddle(paddle0Y)) Player0Missed(); else BounceX(); if (ballX >= (courtWidth - ballSize)) if (MissedPaddle(paddle1Y)) Player1Missed(); else BounceX(); ballY += ballDirectionY; if (ballY >= (courtHeight - ballSize) || ballY <= 0) { ballDirectionY = -ballDirectionY; animationSpeed--; // Speed up game with each bounce tone(tonePin, bounceToneFrequency, bounceToneDuration); } timeToMove = millis() + animationSpeed; } }void DrawPaddle(u8g_uint_t paddleX, int paddleY) { u8g.drawBox(paddleX, paddleY, paddleWidth, paddleHeight); }void DrawPaddles() { paddle0Y = map(analogRead(paddle0Pin), 0, 1023, 0, courtHeight - paddleHeight); paddle1Y = map(analogRead(paddle1Pin), 0, 1023, 0, courtHeight - paddleHeight); DrawPaddle(0, paddle0Y); DrawPaddle(courtWidth - paddleWidth, paddle1Y); }void setup(void) { u8g.setRot180(); // flip screen courtWidth = u8g.getWidth(); courtHeight = u8g.getHeight(); halfCourtWidth = courtWidth / 2; }void loop(void) { u8g.firstPage(); do { if (gameOver) DrawGameOver(); else MoveBall(); DrawCourt(); DrawScores(); u8g.drawBox(ballX, ballY, ballSize, ballSize); DrawPaddles(); } while ( u8g.nextPage() ); } 

Articles Liés

Comment écrire une histoire

Comment écrire une histoire

Ça fait longtemps! Je suis désolé que je n'ai pas été poster quoi que ce soit dans les âges ! Beaucoup se passe bien, mais j'ai commencé un nouveau rituel (voir dernière étape pour plus d'informations). en tout cas, j'ai gagné trois concours jusqu'à
Comment faire un jeu de société de voyage

Comment faire un jeu de société de voyage

il s'agit d'un jeu de société de voyage mini pour 2 joueurs ! J'avais déjà fait cela avant j'ai fait ce tutoriel donc pas que chaque étape sera montré.Étape 1: fournitures 1. Altoids tin2. 2 fiches3. différents marqueurs ou stylos de couleur4. au moi
Comment faire un jeu personnalisé de cartes à jouer - approche 2

Comment faire un jeu personnalisé de cartes à jouer - approche 2

dans Comment faire un jeu personnalisé de cartes - 1 approche, j'ai présenté l'approche que j'utilise actuellement pour faire des cartes à jouer pour les jeux je suis prototypage. Je pense que c'est la meilleure approche, mais ce n'est pas le moins c
Comment jouer le jeu.

Comment jouer le jeu.

OK, par moi, vous dire comment jouer le jeu , que je perds immédiatement, je vais renoncer à ce moment de non play et vous montrer comment jouer.Dans le jeu , il y a quatre règles simples - ils sont comme suit :Tout le monde à chaque fois à n'importe
Comment jouer le jeu des déménagements

Comment jouer le jeu des déménagements

Le Jeu des déménagements a eu plusieurs noms au cours des années. Quand j'ai appris à ce sujet, il a été appelé juste Le jeu, mais c'était avant l'invention de The Game (que je viens de perdre).Autres noms qu'elle a été stationnaire de The Game, le j
Comment faire un jeu relient quatre

Comment faire un jeu relient quatre

4-in-a-row est un de ces jeux que vous jouez avec n'importe quel enfant de l'âge, et qu'ils peuvent jouer la concurrence. Mes enfants l'apprécie vraiment, et depuis nous il joue à l'occasion, je suis arrivé à penser ce qu'il faudrait pour rendre le j
Comment écrire et lire le Braille

Comment écrire et lire le Braille

aveugle est un handicap terrible.  Mais sachant comment écrire et lire le braille, vous pouvez communiquer avec les personnes aveugles. Donc, si vous savez comment écrire ou le lire alors c'est vraiment bon pour vous. Mais si vous ne puis collez avec
Comment écrire le nom sur le riz ?

Comment écrire le nom sur le riz ?

J'ai vu dans certains endroits touristiques dans mon pays, artistes écrire votre nom sur une feuille de riz.Donc il a créé quelque intérêt pour moi d'écrire le nom sur le riz moi-même.Pour ce projet, j'avais écrit mon nom en abrégé AKS & bricolage,Ét
Comment faire un jeu personnalisé de cartes à jouer - approche 1

Comment faire un jeu personnalisé de cartes à jouer - approche 1

il y a plusieurs façons de faire des jeux de cartes personnalisés, voici ma première approche et après Comment faire un jeu personnalisé de cartes - 2 approche, je vais montrer quelques autres approches. Je crois que c'est le meilleur que j'ai essayé
Comment écrire un Journal

Comment écrire un Journal

Im faire ce instructable parce que certaines personnes sont très mal sur le sujet et pense qu'un journal doit être fait d'une certaine manière et écrit exactement comme tout autre journal suivant un certain guide... c'est très certainement pas le cas
Comment écrire O2 et x² dans PowerPoint ?

Comment écrire O2 et x² dans PowerPoint ?

Aujourd'hui, je vais vous montrer comment écrire oxygène O2 2 selon le type et 2 de x² comme type. Jusqu'ici, nous l'écrivons comme O2 pour Oxigen et X ^ 2 x carré. Maintenant, nous allons faire cela sur powerpoint.Étape 1: Exposant et indiceCréateur
Comment écrire un GUI de Ardulink, au contrôle Arduino

Comment écrire un GUI de Ardulink, au contrôle Arduino

dans ce tutoriel, vous pouvez lire comment écrire, juste en 10 étapes, un GUI de Ardulink comme celui montré ici. Vous devez juste cinq minutes de suivre un tutoriel vidéo et à cinq minutes pour lire ce tutoriel.Ardulink est une bibliothèque open sou
Comment écrire un rapport de laboratoire de chimie générale

Comment écrire un rapport de laboratoire de chimie générale

cette instructable va vous apprendre comment écrire un rapport de laboratoire simple mais bon pour un cours de laboratoire chimie générale niveau Collège. Pour effectuer cet atelier, vous aurez besoin d'accès à un programme de Microsoft Word ; toutes
Comment écrire un Simple programme C++

Comment écrire un Simple programme C++

dans ce tutoriel, vous apprendrez comment écrire un programme dans le langage de programmation C++. Cela va durer plus de 10 étapes qui vont expliquera un simple programme C++. Les sujets qui couvrent de chacune des étapes dans ce tutoriel sont souve