Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Et annet videospill for arduino. Det er et flott spill er mer avansert enn det siste jeg publiserte. Hvorfor er det mer komplekst enn andre? Det er mer komplekst fordi dette kan hoppe og skyte og ha et lydlys og en ny poengkont -metode.
Rekvisita
- Arduino.
- Brødbrett
- jumper ledninger
- Rød LED
- 2 trykknapper
- 2 10k ohm motstander
- 2 220R motstander.
- Super lys blå LED.
- piezo summer
- 16*2 LCD -skjerm
Trinn 1: Koble alt sammen
Nå må du koble alt
Trinn 2: Slik spiller du:
- Slå på arduinoen.
- LCD -skjermen skal skrive ut: "spillet starter om" og en nedtelling.
- Trykk på en av knappene for å hoppe og den andre for å skyte.
- hver blokk du hopper vant du ett poeng og hver * du fanger gir deg 5 poeng.
- Når du har 50 poeng eller høyere vant du
Trinn 3: Koden
// este jogo e muito interessant e ao mesmo tempo irritante e frustante mas muito divertido.
#inkludere
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
const int buttonPin1 = 1; const int buttonPin2 = 6; const int summer = 7; usignerte lange poeng = 0; // set buttonstates bool buttonState1 = 0; bool buttonState2 = 0; // tilfeldig tall for plasseringen av hindringer int randomNums [6]; // tilfeldig tall for antall hindringer int randomNum = 0; // tilfeldig tall for posisjonen til pts int randomNums1 [3]; // tilfeldig tall for antall poeng int randomNum1 = 0; // startforsinkelse, som reduseres gradvis usignert int myDelay = 500; // gjorde denne boolske for å sjekke om knapp 2 er trykket fordi hvis den trykkes en gang i den første for sløyfe, vil jeg at hindringer ikke skal skrives før slutten av den bool temp = 0; // denne variabelen lagrer krigerens posisjoner mens han skyter. det kan være 16 stillinger fordi krigeren har 16 stillinger. int tempI [16]; // jeg bruker denne boolske for å sjekke om poenget er fanget bool temp1 = 0;
// bruk denne variabelen til å lagre posisjonen til fanget punkt. det må være og matrise for å lagre posisjonen til alle punktene i en iterasjon av den første for sløyfe. hvis den bare lagret en posisjon, ville det "gamle" punktet komme tilbake i den nye iterasjonen
int tempI1 [3]; // bruk denne variabelen for å ha et antall bilder av krigeren, som også er lengden på en matrise tempI int button2IsPressed = 0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
ugyldig oppsett () {
// sette opp LCD -antallet kolonner og rader: lcd.begin (16, 2); // sett knappnålsmodus pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (summer, OUTPUT); lcd.setCursor (4, 0); lcd.print ("SPILLET"); lcd.setCursor (2, 1); lcd.print ("STARTER INN"); lcd.print ("5"); forsinkelse (1000); lcd.setCursor (12, 1); lcd.print ("4"); forsinkelse (1000); lcd.setCursor (12, 1); lcd.print ("3"); forsinkelse (1000); lcd.setCursor (12, 1); lcd.print ("2"); forsinkelse (1000); lcd.setCursor (12, 1); lcd.print ("1"); forsinkelse (1000); lcd.clear ();
}
void loop () {
her:
randomNum = tilfeldig (5);
for (int i = 0; i9 && pts19 && pts29 && pts = 50) {pts = 0; myDelay = 500; lcd.clear (); lcd.setCursor (5, 0); lcd.print ("VICTORY"); tone (summer, 262); forsinkelse (200); tone (summer, 330); forsinkelse (200); tone (summer, 392); forsinkelse (100); tone (summer, 330); forsinkelse (100); tone (summer, 392); forsinkelse (100); tone (summer, 523); forsinkelse (200); noTone (summer); forsinkelse (3000); lcd.clear (); gå hit; } annet lcd.setCursor (15, 0); lcd.print (pts); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); // sette hindringer hvis krigeren ikke skjøt eller han skjøt, men han hoppet også hvis (! temp) {for (int j = 0; jrandomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }
}
}
// innstilling av poeng
hvis (! temp1) {for (int j = 0; j
}