Handheld Pong & inkräktare på billigt (Arduino kompatibel) (10 / 13 steg)
Steg 10: Programmering - skiss funktioner
Skissen själv är knuten till detta steg. Det är ganska lätt kommenterade men namn på variabeln och funktion bör vara ganska självförklarande och jag tror det har söt rak-vidarebefordra så känn dig fri att anpassa det efter behov. Vänligen kom ihåg att jag bara få sträckor av runt 20-30 minuter åt gången på min pendlar att skriva skisser så det är nog inte den mest eleganta eller systematisk del av koden. Det fungerar ganska bra men använder det på egen risk!
I allmänhet är gör de viktigaste funktionerna i koden följande:
Ogiltig setup():
Detta helt enkelt initierar LCD och anger pinMode för växlar etc. Det skulle spela ett "Hej" ljud om man ligger, visar aktuella batterispänningen och kort testar bakgrundsbelysningen. Läser den höga poängen, bakgrundsbelysningens ljusstyrka och ljudvolymen från EEPROM och initialises EEPROM om detta chip inte har använts i spelet innan.
Ogiltig loop():
Varje funktion av konsolen har en "Speltyp". Detta inkluderar huvudmenyn och Inställningar-menyn. Huvudloop leder oss helt enkelt att den lämpliga subrutinen. När de återvänder från en subrutin vi behöva ställa rätt gameType (e.g. Speltyp = 0 för huvudmenyn).
Ogiltig pong():
Detta läser av spelare 1 bat samt antingen manuell eller automatisk position spelare 2 bat. Det sedan ställning bollen med kontrollerar hur länge spelet har spelats (öka hastigheten varje 30s) och uppdaterar skärmen. Den variabla frameDelay innehar perioden i ms mellan ramar och efter att skärmen uppdateras, det väntar på denna period löper ut innan du börjar igen.
void invaders ():
Liknar Pong spelet, detta cykler runda läsa bat (spelare) ställning, kontrollera status på skott och bomber, uppdatera liv, kontrollera om spelet bör skynda, flytta utlänningar och att skärmen uppdateras. Utlänningar flytta en bildpunkt i taget, men de animera endast varje 4 pixlar så att de helt enkelt inte blur och bättre likna det ursprungliga spelet. Som beskrivs i det sista steget, är utlänningar hålls och visas som tecken, liksom poängen och extra liv. Bat och UFO dras med linjer. UFO passar i 3-pixel utrymmet ovanför den översta raden av utlänningar, som vi fått genom att definiera ett mycket små teckensnitt för poäng.
Ogiltig checkBatt():
Detta övervakar batterispänningen och uppmanar användaren att stänga av och ladda om spänningen sjunker under 3.6V.