Mer enn bare murstein.

LEGO MINDSTORMS EV3 roboter, LEGO prosjekter, bygningsinstruksjoner og programmering kule roboter.

Space Invaders skrevet i Java for LEGO Mindstorms EV3.

Space Invaders! Det klassiske arkadespillet er tilbake, og denne gangen bygget med et enkelt Lego Mindstorms EV3-sett.

Jeg bestemmer meg for a skrive dette spillet i leJOS ved hjelp av 0.8.1-beta utgivelsen (se leJOS wiki for mer om a fa det installert). Jeg tenkte pa a skrive det i EV3 grafisk sprak, men tanken pa a kode inntrengerbevegelsene fikk meg til a grate, sa Java er det!

Hva har dette lille spillet i det? En myntleser som venter pa at du legger en mynt i sporet for du kan spille spillet (akkurat som i arkaden), et tema som spiller i bakgrunnen, realistiske rominntrengerbevegelser, en joystick med en EV3 stor servomotor og inntrengere som brann pa deg nar du skjot pa dem.

Skjerm.

Grafikk og lyder.

leJOS stotter enkel grafikk ved hjelp av Image-klassen. Et bilde er en rekke byter som beskriver et grafikkobjekt pa skjermen. Dessverre kan du ikke ta et standard grafikkformat som PNG eller JPG, og vise det pa EV3-skjermen. EV3 bruker et LEGO bildeformat og leJOS-koden forventer at bildet som skal vises for a v re i dette formatet. Men EV3Control-verktoyet som leveres med leJOS 0.8.1-beta, lar deg konvertere mellom en bitmap-fil og EV3-bildeformatet.

Jeg brukte Paintbrush for a lage den opprinnelige grafikken til mine Space Invaders. Paintbrush er et grunnleggende bilde tegneprogram for Mac OS, som passer perfekt til mine behov. Hver invaderer er en 20 & # 215; 20 pixel bitmap som jeg tegner for hand. Spillerenes skip er ogsa en bitmapfil med 20 og 20 piksler. Jeg brukte EV3Control til a konvertere bitmapsene til EV3-bilder. Disse filene er tilgjengelige i denne ZIP-filen: ImageFiles.

Invader bitmap-filer. To versjoner for hvert trekk fra invaderen: en og to. Send bitmap-fil Eksplosjonsbitmap. Invader EV3 bildefil. Skip EV3 bildefil. Eksplosjonsbildefil.

Jeg lagde et lite tema for a spille mens spillet venter pa at du skal legge inn en mynt. Jeg komponerte dette ved a bruke Garage Band pa min iPad og deretter nedsamplet det til en 8-bit WAV-fil for a spille pa EV3. Beklager kvaliteten. Last ned det her: Theme2.

Du ma kopiere EV3-bildefiler og lydfilen til samme katalog som holder Space Invaders-jarfilen pa EV3 ved hjelp av scp. Dette vil kreve at du bruker Terminal og skriver folgende kommandoer. Jeg antar at du har din EV3 tilkoblet via en USB-kabel, hvis du bruker wifi, ma du erstatte 10.0.1.1 med IP-adressen til din EV3 som vises pa skjermen. Rotenpassordet pa EV3 er r00tme.

Programstruktur.

Koden er delt inn i en rekke klasser som hver har en grunnleggende funksjon. Jeg bruker tungt bruk av Java-trader for a holde alt i parallell.

Sprite: Sprite-klassen representerer et bilde pa skjermen pa en x, y-posisjon. Hver Sprite-klasse har et enkelt bilde og kan gjore det pa skjermen, slette det eller flytte det. Sprite-klassen brukes av skip- og invaderklassene til a representere grafikken pa skjermen. Poengsum: Score-klassen representerer spillerens poengsum, antall liv igjen og ammunisjon igjen. Poengsummen gar som en trad for a oppdatere poengsummen pa skjermen. Invader: representerer en single space invaderer pa skjermen. En inntrenger har en x, y posisjon og kan bevege seg sidelengs og nede. Inntrenger forstar at nar den nar kanten av skjermen, ma den endre retninger og bevege seg nedover en linje. Invaders: Denne klassen representerer alle inntrengerne som er igjen i spillet. Invasorene er lagret i en ArrayList of Invader klasse objekter. Hver inntrenger er plassert langs et rutenett ved startposisjon nar konstruktoren blir kalt. Hver gang inntrengerne beveger seg, gjenspeiler jeg over denne listen og forteller hver inntrenger a bevege seg pa skjermen. Hvis en invader er skutt ned, sletter jeg bare den fra ArrayList og den forsvinner av skjermen. Invadersne kjorer pa egen trad, slik at de fortsetter a bevege seg i bakgrunnen. Skip: spillerens skip. Denne klassen handterer lesing fra joysticken for a kontrollere skipets bevegelse og skyte missiler pa inntrengerne. Den gar ogsa som en trad, slik at spilleren alltid kan flytte skipet. Missil: En enkelt missil sparket av enten en spiller eller en inntrenger. Retningsretningen styres av den flyttbare booleanske variabelen sett nar raketten er opprettet. Et missil er bare et 3 rektangel pa skjermen som det er raskere a tegne enn et bilde. En missil loper som en trad slik at den fortsetter a bevege seg til den enten gar utenfor kanten av skjermen eller krysser med en annen sprite. Missiler: representerer alle missiler som for tiden er avbrutt i spillet. Nokkelfunksjonen i denne klassen er a kjore en trad for a periodisk sjekke hvilke missiler som har rammet hvilke objekter. Hvis et missil har rammet en inntrenger, sa spiller spilleren et poeng. Hvis missilet har rammet skipet, mister spilleren et liv. SpaceInvaders: hovedklassen som starter alt som kjorer.

Hvordan spille.

Her kan du spille Space Invaders-spillet:

Installer leJOS for EV3 pa et SD-kort og start opp EV3. Kopier klassefilene til et nytt prosjekt, eller bare ta tak i SpaceInvaders.jar. Kopier bildefiler til / home / lejos / programs Kjor Space Invaders Sett inn en mynt! Flytt styrespaken til venstre / hoyre for a flytte skipet og beroringssensoren brenner missiler. Du starter med 50 ammo sa bruk det klokt! Invadrerne vil skyte pa deg, sa unnslippe deres kuler mens du skyter dine missiler. Husk det nedre skjermbildet, inntrengerne far jo raskere de beveger seg!

Alle bildefiler som en zip: ImageFiles Den kompilerte Space Invaders kjorbare jarfilen klar til a kjore pa EV3. Komprimert som en ZIP-fil. SpaceInvaders.jar Space Invaders tema melodieres i wav format komprimert til 8 bit for EV3. Groovy! Theme2 Hvis du foretrekker det, kan du laste ned og importere SpaceInvaders Eclipse-prosjektet og importere det til arbeidsomradet ditt i Eclipse. Space Invaders.

14 kommentarer.

fint prosjekt, fyr & # 8230;

legg inn en film av denne jobben & # 8230 ;.

Takk & # 8211; Jeg trenger a bygge et stabilt kamerafeste ut av Lego for a se det fungere.

Woo! Flott arbeid! Jeg designer denne ogsa for koding ved hjelp av det grafiske EV3-spraket & # 8230; men etter a ha v rt ganske skuffet da jeg kodet Pong bestemte jeg meg for a skrive det ogsa i Java & # 8230; skrev aldri det selv om

Hvordan tok du skjermdumpene?

Jeg vil gjerne bygge dette med min ev3. Kan du gi meg nedlastbare bygningsinstruksjoner.

Hei takk for a sporre & # 8211; Jeg arbeider na med bygningsinstruksjonene. Skal ta om en uke, t v re komplett.

takk for a lage dem.

er de ferdig enna?

Beklager nei, jeg har ikke hatt mulighet til a lage dem. Jeg har tatt mange bilder av demontering slik at jeg legger inn dem.

kan du gi meg en link til hvor de er?

V rsagod! Nyt a bygge modellen og gi meg beskjed om hvordan du gar videre.

hei, vil det v re bygningsinstrukser? og en bedre hvordan du kan laste den ned og bruke den?

Jeg gjorde ikke bygningsinstruksjoner, men tok i stedet bilder som du kan se. Forhapentligvis kan du omvendt konstruere bygningen fra bildene.

Denne bloggen var & # 8230; hvordan sier jeg det? Aktuell!! Endelig har jeg funnet noe som hjalp meg.

Kan du bruke disse filene med ev3dev?

Hvis du kan fa leJOS som arbeider pa ev3dev (og jeg tror det er en mate) sa ser jeg ikke hvorfor ikke. De er bare enkle Java-koden, slik at de burde arbeide forutsatt at de underliggende leJOS-klassebibliotekene er de samme pa ev3dev.