Мазмуну:
- 1 -кадам: КЕРЕКТЕР
- 2 -кадам: SCHEMA
- 3 -кадам: КОД
- 4 -кадам: BITMAP КОДУ
- 5 -кадам: Көргөнүңүзгө рахмат
Video: Arduino Space Race оюнунун версиясы _1: 5 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Эй достор. Бүгүн мен сизге LCD5110 экраны жана джойстик аркылуу космостук жарыш оюнун кантип жасоону көрсөтөм. Кадамдарды карап көрөлү …
1 -кадам: КЕРЕКТЕР
Бул жерде мен бул долбоорду жасоо үчүн колдонулган бөлүктөрдүн тизмеси:
- Arduino UNO
- Джойстик модулу
- Jumper Wires (эркектен эркекке жана эркектен ургаачысына)
- Breadboard
2 -кадам: SCHEMA
VCC -> Arduino 5V
BL -> Arduino пин 3
GND -> Arduino GND
CLK (SCLK) -> Arduino пин 8
DIN (MOSI) -> Arduino пин 9
DC -> Arduino пин 10
CE же CS -> Arduino pin 12
RST (КАЙРА ЖӨНДӨӨ) -> Arduino пин 11
3 -кадам: КОД
Коддо код функцияларынын түшүндүрмөлөрү бар. Сиз аны оңой эле түшүнөсүз. Эгерде сизде көйгөй болсо, мага кайрылсаңыз болот.
#кошуу
LCD5110 lcd (8, 9, 10, 11, 12); // (clk, din, dc, rst, ce)
int BL = 3;
extern uint8_t SmallFont ; // шрифттерди сүрөттө extern uint8_t MediumNumbers ; extern uint8_t arac ; // формабызды сүрөттө extern uint8_t dusman_araci ; // душман формасын const int xpin = A0; // джойстик x pin char pozisyon = 2; // жайгашкан жерди сүрөттө, биздин формабыздын башталыш орду 2 логикалык kontrol = true; логикалык dusmanOldu = true; int skor = 0; int hiz = 0; int dusmanKonumu1; // душманды сүрөттөө1 x жайгашуу int dusmanKonumu2; // душманды сүрөттө2 x location int dusmaninYdeKonumu; // душмандарыңдын жайгашкан жерин сүрөттө
void dusmanAraci (int yer, int asama) {// душмандын фигуралары үчүн жерлерди коюңуз
if (yer == 1) {// if location = 1; lcd.drawBitmap (2, асама, dusman_araci, 12, 8); // душман формасын тартуу} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, асама, dusman_araci, 12, 8); }}
void oyunBitti () {// эгерде биз ийгиликке жетпей калсак, оюн бүттү
while (1) {delay (100); // 1 миллисекунд күтүңүз lcd.clrScr (); // экранды тазалоо lcd.setFont (SmallFont); // шрифт lcd.print коюңуз ("ОЮН БУТТУ", БОРБОРУ, 20); // print lcd.update (); // экранды жаңыртуу}}
void setup () {pinMode (BL, OUTPUT); // артка жарык коюу Output lcd. InitLCD (); // lcd экранын баштоо lcd.setContrast (55); // контрастты коюу (0дон 127ге чейин) Serial.begin (9600); // сериялык байланышты баштоо}
void loop () {
analogWrite (BL, 200);
// оюн экранын коюу lcd.drawRect (0, 0, 47, 47); // биз lcd.setFont (SmallFont) тик бурчтук тартабыз; // арипти орнотуу lcd.print ("skor", 53, 0); // printf score lcd.setFont (MediumNumbers); // шрифтти lcd.printNumI коюңуз (skor, 59, 7); // упай алуу lcd.setFont (SmallFont); lcd.print ("хиз", 56, 25); // басып чыгаруу ылдамдыгы lcd.setFont (MediumNumbers); lcd.printNumI (хиз, 59, 32); // ылдамдыкты алуу lcd.update (); // жаңыртуу
// джойстиктин жайгашуусун коюу 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 жана контролдоо чыныгы pozisyon ++; // жайгашууну көбөйтүү, бул форманы оңго жылдырууну билдирет kontrol = false; } else if (x> 300 && x <600) {kontrol = true; } Serial.println (x); // х абалын үйрөнүү үчүн // формабыздын жайгашуусун орнотуңуз lcd.clrScr (); // экранды тазалоо if (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // биздин кемени тарткыла if (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}
if (pozisyon == 3) {
lcd.drawBitmap (34, 37, arac, 12, 8);}
if (dusmanOldu) {// душман формасы өлгөн болсо, анда алар өлгөнүн текшериңиз
dusmanKonumu1 = pozisyon; // биринчи душмандын формасын тарт dusmanKonumu2 = random (0, 4); // башка бир душмандын формасын тартуу dusmaninYdeKonumu = 0; // душманды жогору жактан алып келүү dusmanOldu = false;} // душман кайра жаратылган, ошондуктан алар өлгөн эмес dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // биринчи душмандын формасын чийип, аны өйдөдөн төмөн карай алыңыз dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // душмандын экинчи формасын тартып, аны өйдөдөн ылдыйга чейин алыңыз, эгерде (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon)))) // эгер биздин формабыз душманга тийсе oyunBitti ();} // оюн бүттү if (dusmaninYdeKonumu> 40) {// эгер биздин формабыз душмандардан качса dusmanOldu = true; // душмандын фигураларын өлтүрүү skor ++;} // баллды бирден жогорулатуу // упайга жараша ылдамдыгын жогорулатуу (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; кечиктирүү (40); }}
4 -кадам: BITMAP КОДУ
Мындан тышкары, сиз фигуралар үчүн графикалык графикти киргизишиңиз керек. Бул c. Файл жана ошол эле аталышта болушу керек. Ошондой эле ал ошол файлда болушу керек.
// ------------------------------------------------ ------------------------------ // Файл LCD Жардамчысы тарабынан түзүлгөн // https://en.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // program функциясы үчүн камтыйт
const unsigned char arac PROGMEM = {// биздин форма битмапы
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};
const unsigned char dusman_araci PROGMEM = {// душман кемесинин битмапы
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};
5 -кадам: Көргөнүңүзгө рахмат
Мен долбоорлорум менен бөлүшө баштоодон мурун, мен түркчө сөздөрдү коддомокмун, андыктан ар бир сөздү англисче колдоно албадым.
Оюн = Оюн
Арак = Формасы
Дусман = Душман
kontrol = control
Konum, Yer = Location
Оюн Бити = Оюн бүттү
Skor = Упай
Хиз = Ылдамдык
Сунушталууда:
Видео оюнунун үйрөткүч дизайны: 6 кадам
Videogame үйрөткүч дизайны: Мен хоббистик оюндарды иштеп чыгуучумун, менин негизги кызыкчылыктарым оюн дизайнында жана программалоодо. Практика кылуу жана жөндөмүмдү өркүндөтүү үчүн, мен досторум жана бир туугандарым менен бөлүшө турган жөнөкөй оюндарды жасайм. Буга чейин мен эрежелерди түшүндүрмө берчүмүн
Аз наркы бар MR Оюнунун демосу: 9 кадам
Төмөн наркы MR Оюнунун демосу: http://www.bilibili.com/video/av7937721/ (кытай материгиндеги видео url) Кароо үстүнөн: Белги сүрөтүн эки огунун кармагычына орнотуңуз , Колдонуучу аны картон менен караңыз белгилөө, алар оюн дүйнөсүндө бири -бирин атып салышат. бурчтук коюмду аныктоо үчүн ARти колдонуңуз
Space Race Оюнунун версиясы 2: 5 кадам
Space Race Game Version 2: Эй баарына. Бул оюндун версиясынан мурун мен оюндун биринчи версиясын жарыяладым. Бүгүн мен сизге Space Race Game 2 версиясын көрсөтөм. Кадамдарды карап көрөлү
Arduino тоскоолдуктардан качуу роботу (жаңыртуу версиясы): 7 кадам (сүрөттөр менен)
Arduino тоскоолдуктарынан качкан робот (жаңыртуу версиясы): Бул пост биринчи жолу ушул веб-сайтта жарыяланган https://truescience22.blogspot.com/2018/01/arduino-obstacle-avoiding-robotupgrade.html Роботко тоскоолдук кылуу. Бул жөнөкөй, бирок кээ бир өзгөчөлүктөр жана
Укмуш видео оюнунун дизайны: 10 кадам (сүрөттөр менен)
Awesome Videogame Audio долбоорлоо: Мен акыркы бир нече жылдардан бери видео оюндарынын дизайнери болдум - Game Boy Advance үчүн homebrew нерселеринен тартып, Seaman Dreamcast үчүн кызыктай кызыктай нерселерге чейин, ар кандай оюндарда иштедим. Симс сыяктуу чоң бюджеттик блокбастерлерге