Spisu treści:

Kosmiczna gra wyścigowa wersja 2: 5 kroków
Kosmiczna gra wyścigowa wersja 2: 5 kroków

Wideo: Kosmiczna gra wyścigowa wersja 2: 5 kroków

Wideo: Kosmiczna gra wyścigowa wersja 2: 5 kroków
Wideo: Gry na Androida: Red Ball 4 Gameplay/Walkthrough i Walka z Bossem! #5 2024, Lipiec
Anonim
Image
Image

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

SCHEMAT
SCHEMAT

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
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ść

Zalecana: