Mobilkursen: Mobilprogrammeringsövningar andra veckan (vecka 13)
Gör de här övningarna på labbtillfällena.
Ni behöver inte visa upp resultaten
(utom för en av uppgifterna!)
eller lämna in några labbrapporter,
men diskutera gärna eventuella problem eller andra frågor med läraren.
Uppgifterna som är angivna som överkurs kan hoppas över om man får ont om tid.
Snabblänkar:
MIDP |
CLDC |
Canvas-lektionen |
GameCanvas-lektionen |
Eclipse-lektionen
Uppgift 1
Välj en av datorerna på raderna närmast dörren, och logga in.
Användarnamnet är den här gången telefon, och lösenordet är nofelet.
Datorerna är ominstallerade, så eventuella filer som ni sparade första veckan finns inte kvar.
Vid behov, konsultera
Linux-introduktionen
och repetera
Linux-övningarna.
Uppgift 2
Eclipse är en programmeringsomgivning som är populär bland Java-programmerare.
Vi har använt den tidigare i kursen, men bara som editor.
Nu ska vi använda Eclipse MTJ, som betyder Mobile Tools for Java.
Läs först distanskursens
avsnitt om Eclipse.
För att komma igång med Eclipse,
och som repetition av första veckans övningar,
gör ett enkelt program i WTK (Wireless Toolkit).
Det enda kravet på detta program är att det ska visa
någonting (en text, en figur eller vad som helst) på telefonens display,
och att det ska finnas ett kommando för att avsluta programmet.
Konsultera vid behov distanskursen:
-
Lektion 3
om grunderna för hur koden i en MIDlet ser ut.
-
Lektion 5
om klasserna Alert, TextBox, Display, Displayable och Command,
och om gränssnittet CommandListener.
-
Lektion 6
om andra saker än Alert och TextBox som också kan visas på skärmen:
klasserna List och Form.
Vid behov kan man också konsultera
Java-introduktionen
och repetera
Java-övningarna.
Man kan också titta på
programmeringsövningarna
från första veckan.
Uppgift 3
Läs först
Canvas-lektionen
i distanskursen.
Gör en MIDlet som visar upp en Canvas med röd bakgrund.
Uppgift 4
Lägg till ett eller flera kommandon så att man kan byta
mellan röd, blå och grön bakgrund.
Uppgift 5
Rita en cirkel, en ellips, en kvadrat och en rektangel på varsin fjärdedel av skärmen.
Uppgift 6
Gör så att man kan "tända" och "släcka" var och en av figurerna med kommandon.
Uppgift 7 (examinationsuppgift)
Gör en MIDlet där man kan flytta runt ett kryss på skärmen.
Nu kan metoden paint inte rita samma bild hela tiden,
utan vi måste hålla reda på var krysset ska vara,
och rita just där.
Glöm inte att anropa repaint,
så paint faktiskt körs.
När programmet fungerar, visa det för läraren!
Det här är den andra examinationsuppgiften i kursen!
Uppgift 8
Lägg till en markera-knapp,
som sätter en markering på skärmen där krysset är just nu.
Notera att nu behöver vi hålla reda på alla markeringarna
i en särskild lista,
så metoden paint vet vilka markeringar som finns.
Uppgift 9 (överkurs)
Gör uppgiften i
distanskursens hemtenta från 2008-05-31.
Uppgift 10 (överkurs)
Komplettera det programmet med att spara objektens positioner i ett postlager (RecordStore),
så att positionerna finns kvar om programmet startas om.
(Den här uppgiften handlar kanske mer om postlager än om grafik,
men tanken är att visa att sakerna som ritas upp egentligen också är en sorts data,
och att de kan representeras med tal och strängar som man exempelvis sparar i ett postlager.)
Man kan läsa om postlager i distanskursens
lektion 9.
Uppgift 11
Läs
GameCanvas-lektionen
i distanskursen.
Hoppa över det krångliga sättet att läsa av tangenterna
(nämligen med getKeyStates i bild 7-11)
och gå direkt på det mycket enklare sättet
(metoderna keyPressed, keyReleased och keyRepeated,
enligt bild 12).
Ladda ner och provkör en fungerande version av studsbollprogrammet.
Lägg till gravitation.
Gravitation innebär att vi har en extra kraft som hela tiden ökar bollens hastighet nedåt
(dvs delta_y).
Uppgift 12
Ändra studsbollen så att den pulserar.
Den ska alltså inte bara röra sig och studsa på väggarna,
utan den ska också växa och krympa.
Uppgift 13
Det finns inget kommando för att avsluta studsbollsprogrammet.
Lägg till ett Avsluta-kommando till canvasen.
Uppgift 14
Lägg till en racket, som visas längst ner på canvasen.
Den ritas som en fyrkant med fillRect.
Håll reda på racketens bredd, x-koordinat och y-koordinat i tre variabler.
Ändra studsbollsprogrammet så man inte längre styr bollens hastighet med knapparna,
utan låt vänster- och högerknapparna på telefonen ändra racketens position i x-led.
Ändra studsen mot den nedersta kanten av canvasen
till att studsa mot racketen, men bara om bollen träffar racketen.
Om bollen missar, ska spelet avslutas.
Man vill kanske ta bort gravitationen,
eller alternativt ge bollen lite extra skjuts varje gång den studsar på racketen.
Även den fåniga pulserande effekten är nog mest störande.
Uppgift 15 (överkurs)
Sprites är små figurer som man kan flytta runt utan att rita upp dem varje gång.
Läs på om sprites (klassen Sprite),
och skriv ett enkelt program som flyttar runt en eller flera sprites på en GameCanvas.
Uppgift 16
Gör ett spel eller annat program med grafik som använder GameCanvas (eller Canvas).
Några förslag:
-
Bygg vidare på studsbollen och lägg till stationära bollar
(det blir enklast programkod om de är runda)
som poppar bort om den rörliga bollen träffar dem.
-
Masken
-
Luffarschack med uppritat bräde
(men det är inte så noga hur, eller ens om, datorn spelar).
Tips: Börja med en mycket enkel version, och bygg sen vidare i mån av tid.
Thomas Padron-McCarthy
(Thomas.Padron-McCarthy@oru.se),
23 mars 2009