Tartalomjegyzék:

Arduino Űrverseny Játék _1: 5 lépés
Arduino Űrverseny Játék _1: 5 lépés

Videó: Arduino Űrverseny Játék _1: 5 lépés

Videó: Arduino Űrverseny Játék _1: 5 lépés
Videó: Atari Space Race for Arduino #electronics #arduinoproject #atari #gaming #arduino 2024, Július
Anonim
Image
Image

Hé barátok. Ma ı am ganna megmutatja, hogyan készíthet Űrverseny játékot az LCD5110 képernyő és joystic segítségével. Nézzük meg a lépéseket…

1. lépés: SZÜKSÉGLETEK

SÉMA
SÉMA

Itt van egy lista a részekről, amelyeket a projekt elkészítéséhez használtam:

  • Arduino UNO
  • Joystick modul
  • Jumper vezetékek (férfi -férfi és férfi -nő)
  • Kenyeretábla

2. lépés: Séma

VCC -> Arduino 5V

BL -> Arduino csap 3

GND -> Arduino GND

CLK (SCLK) -> Arduino pin 8

DIN (MOSI) -> Arduino csap 9

DC -> Arduino pin 10

CE vagy CS -> Arduino csap 12

RST (RESET) -> Arduino pin 11

3. lépés: KÓDOLÁS

KÓD
KÓD

A kód magyarázatot ad a kódfunkciókra. Könnyen megérti. Ha problémája van, vegye fel velem a kapcsolatot.

#befoglalni

LCD5110 LCD (8, 9, 10, 11, 12); // (clk, din, dc, rst, ce)

int BL = 3;

extern uint8_t SmallFont ; // a betűtípusok leírása extern uint8_t MediumNumbers ; extern uint8_t arac ; // alakunk leírása extern uint8_t dusman_araci ; // ellenséges alak leírása const int xpin = A0; // joystick x pin char pozisyon = 2; // a hely leírása, alakunk kiindulási hely 2 boolean kontrol = true; boolean dusmanOldu = igaz; int skor = 0; int hiz = 0; int dusmanKonumu1; // az ellenség leírása1 x hely int dusmanKonumu2; // az ellenség leírása2 x hely int dusmaninYdeKonumu; // leírja az ellenséget és a helyét

void dusmanAraci (int yer, int asama) {// helyszínek beállítása az ellenséges alakzatokhoz

if (yer == 1) {// ha hely = 1; lcd.drawBitmap (2, asama, dusman_araci, 12, 8); // ellenséges alakzat rajzolása} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, asama, dusman_araci, 12, 8); }}

void oyunBitti () {// ha kudarcot vallunk, a játéknak vége

míg (1) {késleltetés (100); // várj 1 ezredmásodperc lcd.clrScr (); // a képernyő törlése lcd.setFont (SmallFont); // set font lcd.print ("GAME OVER", CENTER, 20); // print lcd.update (); // frissítse a képernyőt}}

void setup () {pinMode (BL, OUTPUT); // háttérvilágítás kimenet lcd. InitLCD (); // az LCD képernyő inicializálása lcd.setContrast (55); // kontraszt beállítása (0 és 127 között) Serial.begin (9600); // soros kommunikáció indítása}

void loop () {

analogWrite (BL, 200);

// játék képernyő beállítása lcd.drawRect (0, 0, 47, 47); // téglalapot rajzolunk lcd.setFont (SmallFont); // set font lcd.print ("skor", 53, 0); // printf score lcd.setFont (Közepes számok); // set font lcd.printNumI (skor, 59, 7); // get score lcd.setFont (SmallFont); lcd.print ("hiz", 56, 25); // nyomtatási sebesség lcd.setFont (MediumNumbers); lcd.printNumI (hiz, 59, 32); // get speed lcd.update (); // frissítés

// állítsa be a joyistick helyét int x = analogRead (xpin); if (x <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 3 && kontrol == true) {// if location! = 3, x state> 600 és a vezérlés igazi pozisyon ++; // a hely növelése azt jelenti, hogy az alakzatot jobbra kell mozgatni. } else if (x> 300 && x <600) {kontrol = true; } Sorozat.println (x); // tanuláshoz x állapot // állítsa be az alakzatunk helyét lcd.clrScr (); // törölje a képernyőt, ha (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // rajzold meg hajónkat, ha (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}

ha (pozisyon == 3) {

lcd.drawBitmap (34, 37, arac, 12, 8);}

if (dusmanOldu) {// ha az ellenséges alak halott, ellenőrizze, hogy halottak -e

dusmanKonumu1 = pozisyon; // első ellenséges alak rajzolása dusmanKonumu2 = véletlenszerű (0, 4); // másik ellenséges alakzat rajzolása valahol dusmaninYdeKonumu = 0; // ellenség felhozása felülről dusmanOldu = hamis;} // az ellenséget újraalkotják, így nem halnak meg dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // rajzolja meg az első ellenséges alakot, és tegye felülről lefelé dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // rajzolja meg a második ellenséges alakzatot, és tegye felülről lefelé, ha (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon)))) {// ha alakunk megérinti az ellenséges formákat oyunBitti ();} // a játéknak vége, ha (dusmaninYdeKonumu> 40) {// ha alakunk elmenekül az ellenségek elől dusmanOldu = igaz; // öld meg az ellenséges formákat skor ++;} // egyenként növeld a pontszámot // növeld a sebességet pontszám szerint, ha (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; késleltetés (40); }}

4. lépés: BITMAP KÓDOLÁSA

Ezenkívül bitképes grafikát kell tartalmaznia az alakzatokhoz.. C fájlnak kell lennie, és ugyanazzal a névvel, kódnévvel. Ezenkívül ugyanabban a fájlban kell lennie.

// ------------------------------------------------ ------------------------------ // Az LCD asszisztens által létrehozott fájl // https://en.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // include progmem függvényhez

const unsigned char arac PROGMEM = {// alakunk bitképe

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};

const unsigned char dusman_araci PROGMEM = {// ellenséges hajó bitképe

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};

5. lépés: KÖSZÖNÖM A MEGTEKINTÉSET

KÖSZÖNÖM A NÉZÉSET
KÖSZÖNÖM A NÉZÉSET

Mielőtt elkezdtem megosztani a projektjeimet, török szavakkal kódoltam, így nem tudtam minden szót angolra fordítani. Itt vannak a fordítás szavak, amelyek ezt a projektet használják, Oyun = Játék

Arac = Alak

Dusman = Ellenség

kontrol = irányítás

Konum, Yer = Hely

Oyun Bitti = Game Over

Skor = Pontszám

Hiz = sebesség

Ajánlott: