HariFun #136 - hur man skriver ett spel (4 / 8 steg)
Steg 4: Animera bollen
För att flytta bollen, måste vi du ändra den position.
- ballX och ballY håller koll på övre vänstra hörnet av bollen.
- ballDirectionX och ballDirectionY håller reda på om bollen går höger/vänster och upp/ner.
- animationSpeed är hur ofta flyttar bollen (lägre värde = snabbare animering).
- genom att ringa biblioteket ligger courtWidth och courtHeight.
Arduino Pong av Hari Wiguna, 2016
v0.0 - dra bollen
v0.1 - flytta bollen
v0.2 - med millis(), flytta i Y-riktningen också
#include "U8glib.h"
U8GLIB_PCD8544 u8g (13, 11, 9, 8, 10); SPI Com: SCK = 13, MOSI = 11, CS = 9, A0/DataCommand = 8, återställa = 10
== Spelet variabler ==
u8g_uint_t courtWidth, courtHeight; Hur bred och lång är vår skärm?
u8g_uint_t ballSize = 4;
u8g_uint_t ballX;
u8g_uint_t ballDirectionX = 1;
u8g_uint_t ballY;
u8g_uint_t ballDirectionY = 1;
osignerade långa timeToMove; Är det dags att flytta bollen?
int animationSpeed = 20;
void MoveBall()
{
Millis är sedan hur länge vi driva upp Arduino.
om (millis() > timeToMove) {/ / är det dags att flytta bollen? i så fall beräkna nya boll position.
ballX += ballDirectionX;
om (ballX > = (courtWidth - ballSize) || ballX < = 0) ballDirectionX = - ballDirectionX; < /p >< p > ballY += ballDirectionY;
om (ballY > = (courtHeight - ballSize) || ballY < = 0) ballDirectionY = - ballDirectionY; < /p >< p > timeToMove = millis() + animationSpeed; Ange nästa gång vi kommer behöva flytta bollen igen.
}
}
void setup(void) {
U8G.setRot180(); Flip skärmen (om nödvändigt)
courtWidth = u8g.getWidth();
courtHeight = u8g.getHeight();
}
void loop(void) {
U8G.firstPage();
göra {
U8G.drawBox (ballX, ballY, ballSize, ballSize);
MoveBall();
} medan (u8g.nextPage());
}
OMG, vi fick Pong kör på bara några minuter! Tänk den komplexa kretsen och programmering som de hade att göra tillbaka i 1972! Men för att göra den spelbar, behöver vi ett sätt att styra paddlar...