Det här är hemtentan som går fredag-lördag 7-8 juni 2013 i kursen Mobila applikationer med Android.
Ansvarig lärare är
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
telefon 070-73 47 013.
Instruktioner
-
Skriv och provkör programmet som beskrivs i uppgiften,
och skicka sen in det färdiga programmet till mig
(thomas.padron-mccarthy@oru.se)
senast klockan 08:00 söndag 9 juni 2013.
-
Den här gången har man hela 48 timmar på sig för tentan.
Tanken är inte att den ska vara dubbelt så svår som vanligt, bara för att man har dubbelt så lång tid på sig.
Uppgiften ska normalt bara ta några få timmar att lösa.
-
Uppgiften ska lösas enskilt, dvs inga grupper av två eller flera studenter.
-
Du får använda dator, böcker och vilka andra hjälpmedel som helst, men
du får inte samarbeta eller fråga någon (utom mig).
-
Om du behöver fråga något, så kontakta gärna mig.
Det är nog bäst att ringa eller SMS:a,
för jag kommer inte att sitta vid datorn.
Under lördagen och söndagen går jag kanske inte heller att nå via telefon.
-
Packa ihop hela katalogen med applikationen i en Zip-fil, och skicka den som en bilaga.
(Även rar- och tar-filer fungerar.)
APK-filen (Androids kompilerade installationsfil) bör vara med.
Men döp först om Zip-filen från nånting.zip till exempelvis nånting.info för att överlista överambitiösa virusfilter.
-
Om du inte senast under tisdagen (11 juni) får e-post från mig med en bekräftelse
på att du skickat in uppgiften,
bör du kontakta mig, enklast genom att ringa eller SMS:a mig
(ifall det är e-posten som inte fungerar).
-
Godkänt resultat på den här hemtentan ger betyget G på teoridelen av kursen.
För att få hela kursen godkänd krävs dessutom godkända inlämningsuppgifter.
Uppgiften
Zombie-attack från rymden!
Ni kommer ihåg zombie-spelet från
inlämningsuppgift 5?
Nu ska vi skapa en ganska enkel app för att förstöra göra det roligare för dem som spelar!
Det går bra att göra den här uppgiften även om man inte gjort inlämningsuppgift 5,
men det är förmodligen lättare om man gjort den.
|
Tanken är att appen ska logga in på Zombie-servern med flera olika simulerade zombier samtidigt, på samma plats på kartan.
Om det då står en (ensam) spelare på den platsen, blir hon plötsligt och utan förvarning attackerad av osynliga zombier, och förvandlas själv till zombie.
Appen ska inte rita upp något, och behöver inte bry sig särskilt mycket om vad Zombie-servern skickar för svarsmeddelanden.
Här är ett exempel på hur appen kan se ut.
Man matar in latitud och longitud för attacken, och trycker sen bara på knappen
(klicka på bilden för att se den i större format):
Krav
-
Det ska gå att mata in latitud och longitud.
Som default kan appen använda sig av den riktiga positionen från GPS:en, men det är inget krav.
-
Det ska finnas ett sätt att säga till appen att genomföra attacken,
till exempel som med Attack!-knappen ovan.
-
Appen ska logga in på servern med minst två simulerade zombier samtidigt.
-
Appen ska skicka de kommandon som behövs till servern
för att en det ska dyka upp två zombier på den angivna positionen.
Om det finns en ensam människa där,
kommer hon då enligt spelets regler att bli förvandlad till zombie.
Tips
-
Glöm inte android.permission.INTERNET i AndroidManifest.xml.
-
För att människan på den angivna positionen ska förvandlas till zombie,
måste man placera minst två simulerade zombier på den platsen.
De måste befinna sig där samtidigt.
-
För inloggningen och kommunikationen med servern bör man skapa (minst) en separat tråd
(eller motsvarande).
Gör man alltihop i GUI-tråden får man, på moderna Android-versioner, NetworkOnMainThreadException.
På äldre Android-versioner ser det i stället ut som att appen hängt sig.
-
Det enklaste kan vara att ha en tråd per inloggad zombie.
-
Det kan vara lämpligt att skapa nya namn till ens simulerade zombier,
så man kan registrera och logga in utan att bekymra sig om att det namnet redan är inloggat.
Ett sätt är att kalla dem sim-zombie-X,
där X är ett stort slumptal. Då är chansen liten att namnet någonsin återanvänds.
-
Här är de kommandon som en av mina simulerade zombier skickade till servern:
1 REGISTER sim-zombie-30147884-1 sim-zombie-30147884-1
2 LOGIN sim-zombie-30147884-1 sim-zombie-30147884-1
3 TURN ZOMBIE
4 I-AM-AT 59.2 15.3
5 LOGOUT
-
Det kan vara bra att använda Thread.sleep i någon sekund mellan kommandona till servern,
så den hinner med ordentligt.
Det gäller i synnerhet efter I-AM-AT-kommandot,
så man är (någorlunda) säker på att alla de zombier som behövs verkligen är på plats samtidigt,
och ingen av dem hunnit logga ut och försvinna.
-
Om man inte har en egen fungerande zombie-klient som uppdaterar kartan korrekt kan man köra desktop-klienten till zombie-spelet.
I den syns det på kartan hur de simulerade zombierna plötsligt dyker upp,
flera på samma ställe, och sen försvinner.
Här har stackars bravo blivit zombiefierad av tre sim-zombier:
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
5 juni 2013