Indholdsfortegnelse:

Arduino slagskibsspil: 3 trin
Arduino slagskibsspil: 3 trin

Video: Arduino slagskibsspil: 3 trin

Video: Arduino slagskibsspil: 3 trin
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, November
Anonim
Arduino slagskibsspil
Arduino slagskibsspil

Jeg kan huske, at jeg spillede en papir- og blyantversion af Battleship Game som barn. Faktisk har det eksisteret siden omkring 1. verdenskrig. Jeg havde også en "elektronisk" variant i begyndelsen af 1960'erne kaldet "Sonar Sub Hunt", der havde lys og lyde og skjulte miner. Efter dagens videospilstandarder er slagskib ret kedeligt, men jeg tænkte, at jeg ville lave en alligevel bare for at se, hvad børnebørnene syntes om det. Efter alt kan retro undertiden være fedt.

Der er stykker af dette projekt, der ville være nyttige andre steder, selvom du ikke er interesseret i at lave slagskibsspillet. Det har en enkel 4-bit 1602 LCD-grænseflade, der indeholder en rutine til indstilling af en bestemt karakterplacering. Der er også en grænseflade til afkodning af en 4x4 switch matrix. Disse to grænseflader er tilgængelige som separate filer, så de er let at transportere. Spillet har også forskellige lydeffektrutiner og et enkelt en-transistor lydforstærkerkredsløb.

Trin 1: Hardware

Hardware
Hardware
Hardware
Hardware

Den skematiske præsentation her er for en enkelt spiller, så der skal laves to enheder. Enhederne kommunikerer ved hjælp af en 3-leder grænseflade, der inkluderer UART TX og RX linjer og en jordledning. Jeg valgte at bruge et standard 1/8 tommer stereo hovedtelefonstik og et standardkabel med hanstik i begge ender. RX fra den ene boks går til TX i den anden boks og omvendt. Du kan gøre det ved at skifte ledninger loddet til hovedtelefonstikket inde i boksen eller bytte dem på printkortet, når du bygger det.

Det klassiske spil blev udlagt som en matrix, men jeg besluttede at lave en enkel implementering ved hjælp af en 1602 LCD til displayet. Den første linje viser spillerens skibspositioner og modstanderens skud. Den anden linje viser spillerens skud og eventuelle hits på modstanderens skibe. Det giver 16 mulige placeringer for skibe. Antallet af skibe er angivet i softwaren, og jeg valgte vilkårligt 5.

De 16 skibslokationer passer fint til switch -kravene, fordi det giver mulighed for en 4x4 -matrix. Der er 4x4 matrix switch pads til rådighed, men jeg valgte at bruge individuelle switches i en enkelt linje for at matche det lineære display. Jeg ledte imidlertid kontakterne som en 4x4 -matrix, så der kun er brug for otte Arduino -ben. Se kontaktforbindelsesdiagrammet og skematisk for de korrekte forbindelser.

LCD-displayet er kablet til en 4-bit grænseflade. Jeg tilføjede også en ekstern LED på pin D13 for at angive, hvilken spiller der skulle tage et skud. I første omgang beslutter spillerne, hvem der tager det første skud, og derefter styrer softwaren automatisk frem og tilbage i spillet.

Jeg ville tilføje enkle lydeffekter til skuddet, eksplosionerne, spillet klar og vinderen/taberen. Jeg forsøgte at bruge en simpel piezo -summer, men endte med en lille højttaler i stedet. Strømmen, der kræves af højttaleren, overstiger, hvad Arduino kan klare, så der blev tilføjet en simpel transistorforstærker. Lyden er stadig ikke fantastisk, men den er bedre end med summeren. Min højttaler er 4 ohm, men hvis du har en 8-ohm, skal du ændre modstanden i skematisk fra 39 ohm til 33 ohm. Hvis du bruger en piezo -summer, skal du kunne køre den direkte fra Arduino -stiften med den anden side af summeren forbundet til jorden.

En ekstern nulstillingskontakt er også inkluderet og er forbundet direkte mellem jorden og "reset" -stiften på Arduino. Det giver midlerne til at genstarte spillet.

Trin 2: Software

Softwaren har inkluderingsfilen til min LCD -grænseflade, og jeg har også oprettet en inkluderingsfil til 4x4 switch matrix scanning. Initialiseringen beder spilleren om at vælge placeringen for sine skibe og går derefter til en "Klar" tilstand. Når begge spillere er klar, starter en af dem spillet ved at trykke på en kontakt.

Skudstedet sendes via UART til den anden spiller, og det relevante resultat sendes tilbage til den spiller, der affyrede skuddet. Som tidligere nævnt, styrer softwaren, når det første skud er taget, hvem der tager det næste skud. Inden et skud transmitteres, kontrolleres det med placeringen af de foregående skud. Hvis stedet allerede er blevet brugt, bliver skuddet ikke transmitteret. "My_Shot" LED'en bestemmer, hvem det er tur til. Der genereres også en skudlyd til et gyldigt valg og en eksplosionslyd, hvis et skib bliver ramt. Lydeffekterne stammer fra eksempler, der findes online med ændringer, der passer til spillet.

Når en modstanders skibe alle er blevet ramt, vises der en meddelelse på hver LCD - en som vinderen og en som taberen. Meddelelsen angiver også, at spillet kan genstartes ved at trykke på reset -knappen. Der er også separate lydeffekter for vinderen og taberen.

Trin 3: Skærmbilleder

Skærmbilleder
Skærmbilleder
Skærmbilleder
Skærmbilleder
Skærmbilleder
Skærmbilleder
Skærmbilleder
Skærmbilleder

Her er nogle skærmbilleder fra spillet. Det er det for dette indlæg. Tjek mine andre instruktioner og også mit websted på: www.boomerrules.wordpress.com

Anbefalede: