|
Övning2
-
Hantering av avbrott och trådtillstånd
Ladda ner exempel4
som vi jobbade med vecka 36. Källkoden är en början till
det klassiska spelet "Spaceinvaders". Din uppgift är nu att jobba
vidare på spelet.
- Skapa flere fiendeskepp (minst 5)
- Sätt olika Y-positioner för skeppen
så att de inte krockar med varandra
- Spara objektena för varje fiendefarkost
i en tabell (array).
- Programmera om funktionen som avfyrar bomber
så att man endast kan avfyra en bomb åt gången och
så att bomben endast ritas ut när den avfyras. Lös
problemet m.h.a. trådhantering:
- Ett nytt objekt av Bomb-klassen kan skapas endast om
dess animationstråd (tråden som uppdaterar bombens
position) inte är aktiv (använd metoden isAlive())
- Ändra om paint-metoden i Applet-klassen så att bomben
endast ritas ut om dess animationstråd är aktiv
- Programmera i Bomb-klassen
en
"hit test" funktion som kontrollerar om en bomb träffar ett
fiendeskepp
- Om bomben träffar ett fiendeskepp skall
det sändas ett avbrott (interrupt)
till den tråd som sköter om
just den fiendefarkostens animering (använd metoden interrupt())
- När ett fiendeskepps
animationstråd tar emot ett avbrott skall animationstråden
avslutas (som följd borde det träffade fiendeskeppet stanna)
- Metoden paint
i Applet-klassen skall rita
ut de fiendeskepp vars trådar inte blivit avbrutna (som
följd borde det träffade fiendeskeppet försvinna
från spelytan)
Ladda upp källkoderna för din lösning på BLS senast tisdag 28.9.2010
|
|
|
|