Ö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.
  1. 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).
  2. 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
  3. 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


Jonny Karlsson 2010