47. Fighters

Skriv ett litet textbaserat actionspel som vi kan kalla Fighter. Spelet går ut på att olika spelare ska bekämpa varandra (eventuellt kan ni lägga till ytterligare finesser, exempelvis förolämpningar, vapeninnehav eller liknande). Vinnaren är, förslagsvis, den som överlever (men det är programmeraren som väljer exakt hur reglerna ska se ut).

Det första som händer när programmet startar är att programmet frågar efter antalet spelare (maximalt 5). Använd ett fält av pekare till Fighter för att hålla koll på vilka spelare som fortfarande är med i spelet. Sä här kan definitionen av fältet se ut:

Fighter * spelare[] = {nullptr, nullptr, nullptr, nullptr, nullptr};

Därefter måste varje spelare i turordning mata in exempelvis följande data:
Namn
Ålder
Längd
Vikt
IQ (t.ex. ett heltal mellan 70 och 160)
Slagstyrka (t.ex. ett heltal mellan 0 och 100)
Hastighet (t.ex. ett heltal mellan 0 och 100)
Uthållighet (t.ex. ett heltal mellan 0 och 10)
Livskraft (t.ex. ett heltal mellan 0 och 10)

Ovannämnda inmatning ska ske i en konstruktor för en klass som heter Fighter (eller något annat kul). Varje objekt i denna klass har medlemsfunktionerna Attack, Defend, Rest, samt en eller flera konstruktor och en destruktor. Dessutom finns ett antal privata datamedlemmar (name, age, length, weight o.s.v.). Lägg gärna till flera egna egenskaper och funktioner.

Så här kan skapandet an spelarna se ut (variabeln antal innehåller antalet spelare från början):

for(int i=0; i<antal; ++i)
  spelare[i] = new Fighter;

När spelarobjekten har skapats blir det första spelarens tur att välja en handling (att kämpa mot någon, att vila eller att ge upp).

Om spelaren väljer att kämpa mot någon, så ska spelaren först välja motständare och därefter ska slaget utkämpas. Detta visas eventuellt med lite roliga tecken och slagord på skärmen (till exempel Aaarghh!!!). Den spelare som är starkast (eller har mest tur, etc …) vinner. För att beräkna styrkan ska ni använda någon lämplig beräkning där ni använder egenskaperna hos både den som attackerar och den som blir attackerad. Förloraren mister förslagsvis 25% av sin Livskraft.

Om spelaren väljer att vila … tja, det är upp till programmeraren att bestämma vad som ska ske då.

Sedan avslutas turen och programmet löper igenom alla spelare (via fältet spelare) för att se om någon har dött (d.v.s. att spelarens Livskraft är mindre än 1). Om en spelare är död ska Fighter-objektet tas bort med delete-operatorn och det aktuella pekarvärdet sättas till nullptr i fältet spelare.

Därefter är det nästa spelares tur, och på så sätt fortsätter spelet tills villkoret för att fortsätta ej längre är true (oftast innebär detta att mindre än två spelare återstår). Då skrivs en text ut med vem som vann och hur mycket energi denna person hade kvar vid spelets slut.

TIPS: Använd en statisk datamedlem (alltså en klassmedlem) för att hålla koll på antalet spelare som är kvar, se avsnitt 14.9 i boken. Läs även avsnitt 14.10 i boken. Kör det sista exemplet i avsnitt 14.10 (filerna kan hämtas här). Se till att förstå detta exempel.

Lämna ett svar