HariFun #136 - cómo escribir un juego (8 / 8 paso)

Paso 8: Cerrar comentarios

Espero que hayas disfrutado este video tanto como yo a compartirlo. Si os guste, no olvides de dar pulgares para arriba y tal vez suscribirse/siga para que no te pierdas videos/instructables futuro.

Me encanta leer comentarios así que por favor escriba un comentario con tus recuerdos de pong. Si usted hace este proyecto, me encantaría verlo. Por favor deje un link en comentarios o en el que hice clic botón.

Si estás en las redes sociales, por favor compartir este instructable o Video de YouTube.
Gracias, gracias, gracias!

Bosquejo completo está por debajo de

 // 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() ); } 

Artículos Relacionados

Cómo escribir un juego

Cómo escribir un juego

Escribir una obra de teatro puede parecer intimidante. Ciertamente no es una forma de arte muy común. En octubre de 2014, College Playhouse de St Peter realizar mi juego, La IV estación. El juego centrado en los últimos tres años en la vida de Jesucr
Cuadro marco regulador del juego con Makey Makey y cero

Cuadro marco regulador del juego con Makey Makey y cero

En este Instructable encontrará cómo hacer un cuadro marco regulador del juego que se puede utilizar para controlar un personaje en un rasguño juego vía un Makey Makey. Este es un divertido proyecto para un adulto y el niño juntos o como una activida
Cómo hacer un juego de mesa viaje

Cómo hacer un juego de mesa viaje

esto es un viaje mini juego para 2 jugadores! Previamente había hecho esto antes de este tutorial así que no que se mostrará cada paso.Paso 1: fuentes de 1. lata Altoids2. 2 fichas3. diferentes marcadores o lápices de colores4. al menos 2 imanes mini
Creación de animación y juegos: Capítulo 2 juego de controladores

Creación de animación y juegos: Capítulo 2 juego de controladores

Bienvenidos a la segunda de una serie:Creación de animación y juegos: Controladores de juego capítulo 2Esta serie se zambullirá en el uso de propulsor microcontrolador basado en sistemas para crear tus propios gráficos, animación y videojuegos.  Supo
Regalo de dulces con un juego de palabras de "Dulce"! : D

Regalo de dulces con un juego de palabras de "Dulce"! : D

Navidad está a la vuelta de la esquina y conoce a alguien que ama los osos Gummy! Así que aquí estoy con un muy fácil instructivo!Paso 1: Los materiales Se necesita:-Tijeras-Pegamento-Color o papel normal (no importa)-Pack de los osos Gummy (cualquie
Magpi: La interfaz de plataforma de juegos Micro Arduino

Magpi: La interfaz de plataforma de juegos Micro Arduino

Aquí es una consola de juegos portátil retro que construí con mi hijo. Utiliza un microcontrolador de Arduino, una pequeña pantalla LCD, botones, caso impreso 3D y tablero de caseros "PC". Es realmente bastante fácil de soldadura y poner junto.
Cómo crear un juego interactivo de la ficción como "Zork"

Cómo crear un juego interactivo de la ficción como "Zork"

¡Hola a todos!¿Recordar los buenos viejos tiempos, cuando era imposible tener más de un color en una pantalla y no gráficos en todo? En los primeros años 80, una serie de juegos de aventura basado en texto, la serie de Zork donde creado por una compa
Divertido juego con arduino y procesamiento

Divertido juego con arduino y procesamiento

Este tutorial le mostrará cómo hacer una primera persona FPS-shooter en el proceso con la ayuda de un arduino. Este proyecto nos fue entregado como un examen final en un curso de especialización técnica, (Bachillerato).Video del proyecto! :) (Difícil
Tirarlos para arriba el juego con Wiimotes y neumática

Tirarlos para arriba el juego con Wiimotes y neumática

utilizar objetivos neumático emergentes y mandos de Wii para crear un shoot em up juego.Cada año mi familia crea una pantalla completamente nueva y emocionante para Halloween. Tiene sólo unos pocos objetivos: que sea interactivo para los niños, que o
Básico juego de CMD (ejecutable y código de archivo de texto incluido en enlaces)

Básico juego de CMD (ejecutable y código de archivo de texto incluido en enlaces)

escribió un juego en el lenguaje C que se ejecuta en el símbolo del sistema.Usa las teclas wasd para moverse un 0 en un mar de * s.Puede introducir hasta 6 teclas wasd y luego pulse enter.Esto le permite mover un cuadrado a la vez o desplazar muchas
Sueño polifásico

Sueño polifásico

mayoría de las personas mayores de 10 monophasically de sueño; es decir, tienen una fase de sueño al día (los niños más pequeños a menudo siesta y, por supuesto, los bebés dormir en todos los tiempos mal). Otros animales no necesariamente te 8 horas
Power Glove edición 20 aniversario

Power Glove edición 20 aniversario

soy un programador de video juegos por día, y me encanta jugar con los periféricos de entrada personalizados. Decidí mod un guante de energía de Nintendo para trabajar con algunos de los juegos que he trabajado en. Sustituye sensores ultrasónicos del
Muñeca para ayudar a los niños entender enfermedad

Muñeca para ayudar a los niños entender enfermedad

he creado una muñeca para ayudar a mi hija a entender mejor el cáncer terminal de mi esposa.He modificado una muñeca plushy órganos internos involucrados y para dar un contexto para discutir los procedimientos y cirugías futuras.Paso 1: Elija su muñe
Perder peso y cuanto pierdes por milla

Perder peso y cuanto pierdes por milla

he estado haciendo surf un poco y se dio cuenta que mucha gente quiere perder peso rápido y saludable como sea posible así que decidí buscar la solución perfecta para ayudar a los necesitados y darles un Consejo práctico.OK por lo que usted quiere pe