Versie 1.0
Docent: Reinout Versteeg
"Galactic Gladiators" is een digitaal, turn-based strategisch bordspel waarbij spelers het bevel hebben over een leger van eenheden met als doel de vlag van de tegenstander te veroveren. De opdracht is om een applicatie te bouwen voor dit spel, gebruikmakend van Flask, PyGame, of Arcade.
- Spelbord: Het bord bestaat uit een 10x10 raster waarop beide spelers hun eenheden positioneren.
- Spelers: Eén menselijke speler en één AI spelen tegen elkaar. Het doel is de vlag van de tegenstander te veroveren.
- Elementen op het bord:
- Verhoogde positie: +1 bonus bij gevechten.
- Dekking: Eenheden op dit vakje zijn immuun voor speciale krachten.
- Sensor: Onthult tijdelijk het type van eenheden.
- Goudmijn: Verzamelt goud voor de speler na 3 beurten.
- Verkenner: Infiltratie - Kan onzichtbaar worden voor 3 beurten.
- Infanterist: Geen speciale kracht.
- Scherpschutter: Precisieschot - Kan een vijandelijke eenheid op afstand uitschakelen.
- Schilddrager: Energieveld - Negeert vijandelijke speciale krachten voor 3 beurten.
- Strijdmeester: Strijdkreet - Geeft nabijgelegen eenheden een rangbonus.
- Commando: Sabotage - Kan een aangrenzende vijandelijke eenheid overnemen.
- Vlag: Heeft geen speciale krachten en kan niet bewegen.
- Spelers zetten om de beurt een actie in gang:
- Bewegen: Beweeg een eenheid naar een aangrenzend vakje (horizontaal/verticaal).
- Aanvallen: Start een gevecht met een vijandelijke eenheid op een aangrenzend vakje.
- Speciale kracht: Gebruik een speciale kracht van een eenheid.
Het spel eindigt wanneer de vlag van één van de spelers wordt veroverd. De winnaar wordt bepaald op basis van wie de meeste goudstukken heeft verzameld.
- Het spel moet volledig speelbaar zijn zoals beschreven.
- Er moet een werkende AI zijn die tegen de speler speelt.
- De mogelijkheid om het spel op te slaan en later verder te spelen.
- De speler kan kiezen om een nieuw spel te starten of verder te spelen in een eerder opgeslagen spel.
- Er is een cheatcode om alle eenheden zichtbaar te maken.
- De applicatie moet stabiel zijn en niet crashen.
- De applicatie moet volledig in Python worden geschreven, gebruikmakend van Flask, PyGame, of Arcade.
- Het ontwerp moet object-georiënteerd zijn, met klassen zoals:
GameBoard
: Beheert het speelveld.Unit
: Basisklasse voor eenheden.Player / AIPlayer
: Beheert acties van de speler en AI.
- Gebruik van Python-specifieke elementen zoals:
- Dunder methods: Zoals
__init__
,__str__
. - Properties: Voor veilige toegang tot attributen.
- List comprehensions: Voor efficiënte datamanipulatie.
- Decorators: Voor functies zoals het valideren van bewegingen.
- Dunder methods: Zoals
- Persistentie: Het spel moet kunnen worden opgeslagen en later hervat worden.
- User Interface:
- PyGame/Arcade: Ontwerp een GUI die het bord en de spelstatus weergeeft.