Mobilkursen: Mobilprogrammeringsövningar andra veckan (vecka 11)

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 Linux-datorerna i T122, och logga in. Användarnamnet är den här gången telefon, och lösenordet är nofelet. Filerna sparas lokalt på just den datorn, så använd samma dator hela veckan. Eventuella filer som ni sparade på Windows-maskinerna under första veckan går inte att komma åt härifrån, och filer som ni sparar under den här veckan går inte att komma åt från Windows-maskinerna nästa vecka.

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 då för skrivbords-Java (Java SE), och inte telefon-Java (Java ME). 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 Eclipse, som liknar vad vi tidigare gjort 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:

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 (överkurs, än så länge)

Gör ett spel eller annat program med grafik som använder GameCanvas (eller Canvas). Några förslag: 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), 16 mars 2010