Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Hej wszystkim. Przed tą wersją gry opublikowałem pierwszą wersję gry. Dzisiaj pokażę Wam Space Race Game w wersji 2. Przyjrzyjmy się krokom…
Krok 1: CZĘŚCI
Oto lista części, których użyłem do wykonania tego projektu:
- Arduino UNO
- Moduł joysticka
- Przewody połączeniowe (męski na męski i męski na żeński)
- Deska do krojenia chleba
Krok 2: SCHEMAT
VCC -> Arduino 5V
BL -> pin Arduino 3
GND -> GND Arduino
CLK (SCLK) -> pin Arduino 8
DIN (MOSI) -> pin Arduino 9
DC -> pin Arduino 10
CE lub CS -> pin Arduino 12
RST (RESET) -> pin Arduino 11
Krok 3: KOD
Kod zawiera objaśnienia funkcji kodu. Łatwo to zrozumiesz. Jeśli masz problem, możesz się ze mną skontaktować.
#włączać
LCD5110 LCD (8, 9, 10, 11, 12); //(clk, cin, dc,, rst, ce)
kontrola logiczna=prawda;
boole'owskie dusmanoldu=prawda;
extern uint8_t SmallFont; //opisz czcionki
extern uint8_t MediumNumbers; extern uint8_t arac; //opisz nasz kształt extern uint8_t dusmanAraci; //opisz kształt wroga const int xpin=A0; //joystick x pin char pozisyon=3; //opisz lokalizację, nasz kształt początkowa lokalizacja 3 int BL=3; int skor=0; int hiz=0; int dusmankonum1; //opisz wroga1 x położenie int dusmankonum2; //opisz wroga2 x położenie int dusmankonum3; //opisz wroga3 x położenie int dusmankonum4; //opisz wroga4 x położenie int dusmankonum5; //opisz wroga5 x położenie int dusmaninYdekonumu;
void oyunEkrani() { //ustaw ekran gry
lcd.clrScr(); lcd.drawRect(0, 0, 47, 47); //rysujemy prostokąt lcd.setFont(SmallFont); //ustaw czcionkę lcd.print("skor", 57, 1); //drukuj wynik lcd.print("hiz", 60, 24); //szybkość drukowania lcd.setFont(MediumNumbers); //ustaw czcionkę lcd.printNumI(skor, 55, 8); //pobierz wynik lcd.printNumI(hiz, 63, 32); //pobierz prędkość lcd.update(); }
void dusmanAracidurum(int yer, int asama){ //ustaw lokalizacje dla wrogich kształtów
if(yer==1){ lcd.drawBitmap(2, asama, dusmanAraci, 7, 7);lcd.update();}//if location=1 narysuj wroga kształt tej lokalizacji if(yer==2){ lcd.drawBitmap(10, asama, dusmanAraci, 7, 7);lcd.update();} if(yer==3){ lcd.drawBitmap(18, asama, dusmanAraci, 7, 7);lcd.update(); } if(yer==4){ lcd.drawBitmap(26, asama, dusmanAraci, 7, 7);lcd.update();} if(yer==5){ lcd.drawBitmap(34, asama, dusmanAraci, 7, 7);lcd.update();} if(yer==6){ lcd.drawBitmap(42, asama, dusmanAraci, 7, 7);lcd.update();} }
void oyunbitti(){ //jeśli nam się nie uda, gra się kończy
while(1){opóźnienie(100); //czekaj 1 milisekundę lcd.clrScr(); lcd.setFont(MałeCzcionki); lcd.print("OYUN BITTI", CENTRUM, 8); //drukuj grę przez lcd.print("skorunuz=", 3, 30); //wydrukuj swój wynik lcd.setFont(MediumNumbers); lcd.printNumI(skor, 60, 25); //pobierz ostatni wynik lcd.update(); } }
pusta konfiguracja () {
pinMode(BL, WYJŚCIE); //ustaw podświetlenie Output pinMode(xpin, INPUT); //ustaw pin x jako wejście lcd. InitLCD(); //zainicjuj ekran lcd lcd.setContrast(55); //ustaw kontrast(od 0 do 127) Serial.begin(9600); //rozpocznij komunikację szeregową }
pusta pętla () {
analogZapis (BL, 350); oyunEkrani();
//joyistic durumu… //ustaw lokalizację joysticka…
int durumx=analogRead(xpin); if(durumx <300 && pozisyon!=1 && kontrol==true){ //if location!=1, x state600 && pozisyon!=6 && kontrol==true){ //if location!=3, x state> 600 i kontrola to prawdziwa pozisyon++; //zwiększenie położenia to znaczy przesunięcie kształtu w prawo kontrol=false; } else if(durumx >300 && durumx <600){ kontrol=true; } //pozycja durumu… //stan pozycji… if(pozycja==1){ //jeśli lokalizacja=1; lcd.drawBitmap(2, 41, arac, 7, 7);lcd.update();}//narysuj nasz statek if(pozisyon==2){ lcd.drawBitmap(10, 41, arac, 7, 7); lcd.update();} if(pozycja==3){lcd.drawBitmap(18, 41, arac, 7, 7);lcd.update();} if(pozycja==4){lcd.drawBitmap(26), 41, arac, 7, 7);lcd.update();} if(pozycja==5){ lcd.drawBitmap(34, 41, arac, 7, 7);lcd.update();} if(pozycja ==6){lcd.drawBitmap(42, 41, arac, 7, 7);lcd.update();}
if(dusmanoldu){ //jeśli kształt wroga jest martwy, sprawdź, czy jest martwy
dusmankonum1=pozycja; //narysuj pierwszy wrogi kształt dusmankonum2=random(0, 6);//narysuj gdzieś inny wrogi kształt dusmankonum3=random(0, 6); dusmankonum4=losowy(0, 6); dusmankonum5=losowy(0, 6); dusmaninYdekonumu=0; //przynieś wroga z góry dusmanoldu=false;} //wróg jest odtwarzany, aby nie był martwy
dusmanAracidurum(dusmankonum1, dusmaninYdekonumu);dusmaninYdekonumu++; //narysuj pierwszy kształt wroga i zdobądź go od góry do dołu
dusmanAracidurum(dusmankonum2, dusmaninYdekonumu);dusmaninYdekonumu++; //narysuj drugi kształt wroga i przenieś go od góry do dołu dusmanAracidurum(dusmankonum3, dusmaninYdekonumu);dusmaninYdekonumu++; dusmanAracidurum(dusmankonum4, dusmaninYdekonumu);dusmaninYdekonumu++; if(dusmaninYdekonumu>35 && ((dusmankonum1 ==pozycja)||(dusmankonum2 ==pozycja)||(dusmankonum3 ==pozycja)||(dusmankonum4 ==pozycja))){ //jeśli nasz kształt dotyka wrogich kształtów oyunbitti(); //gra skończona }
if(dusmaninYdekonumu >42){//jeśli nasz kształt ucieknie przed wrogami
dusmanoldu = prawda; //zabij wrogie kształty skor++; //zwiększaj jeden po drugim wynik }
//skora gore hizi artiriyoruz //zwiększ prędkość zgodnie z wynikiem
if (skor>=0 && skor=10 && skor=20 && skor=30 && skor=40 && skor=50){ hiz=6; opóźnienie(5); }
}
Krok 4: MAPA BITOWA KODU
Ponadto musisz dołączyć grafikę bitmapową dla kształtów. Musi to być plik.c.
#include //include dla funkcji programu
const unsigned char arac PROGMEM = { //nasza bitmapa kształtu
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, };
const unsigned char dusmanAraci PROGMEM = { //bitmapa statku wroga
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, };
Krok 5: Dzięki za oglądanie
Znaczenie niektórych słów:
Ojun => Gra
Arac = > Kształt
Dusman => Wróg
kontroluj = >kontroluj
Konum, Yer => Lokalizacja
Oyun Bitti => Koniec gry
Skok => Wynik
Hiz => Prędkość