|
Övning3
- Trådsäkerhet och länkade listor
Vidareutveckla
spelet i Exempel4 så att:
- Bollarna får en slumpmässig diameter
när de skapas
- Om en boll krockar med en annan inverterar den
sin färdriktning och förökar sej (m.a.o. om två
bollar krockar med varandra byter de båda riktning samtidigt som
det kommer in två nya bollar på spelplanen)
- Antalet bollar vid liv visas hela tiden i
Appletens ena hörn under spelets gång
- När spelaren lyckats "skjuta" alla bollar
visas texten "GAME OVER" på skärmen vartefter alla
trådar avslutas och trådgruppen raderas
Förverkliga programmet så att boll-objektena sparas i en
länkad lista i stället för i en statisk tabell. På
detta sätt blir det mycket enklare att ta bort och lägga till
bollar.
Placera algoritmen som kollar om en boll krockar med en annan i
"bollhanteringstråden" (den tråd som sköter om
att bollens kordinater uppdateras). Då blir principen för
algoritmen enkel: varje boll kollar om den "just nu" krockar med
någon annan.
Ta trådsäkerheten i beaktande när du gör
programmet. Många trådar kommer ju t.ex. att hantera samma
länkade lista och samma "antal bollar" variabel. Finns det t.ex.
risk för "thread interference"? Fungerar spelet korrekt utan
synkronisering?
Experimentera och pröva dej fram genom att ha olika antal bollar i
början av spelet och olika värden för max antal bollar.
Pröva också köra en version som kan ha oändligt
antal bollar (skapa trådgruppen med Executors.newCachedThreadPool())
|
|
|
|