Hjälp med programmering 2, dartspel

Permalänk
Avstängd

Hjälp med programmering 2, dartspel

Sitter på kursen programmering 2 nu, i C#, och det var verkligen ett rejält steg upp från programmering 1.
Jag kände att alla uppgifter i första kursen var lätta att lösa från grunden utan allt för omfattande instruktioner, men här känner jag mig helt handfallen trots mer instruktioner i hur jag ska göra.
Uppgiften är följande:

Citat:

Dart-spelet
I denna uppgift ska du skapa en dart-simulator och en förenklad
version av spelet 501 (fast med 301 poäng).
Uppgiften har fokus på objektorienterad programmering.
Notera att vi struntar i att hantera fält för dubbla och trippla
poäng vilket skulle göra den svårare versionen alldeles för
komplex.
För betyget A och C är det dock viktigt att alla fält och listor är satta som privata. Om man siktar mot
C så kan man sätta listan som publik men med ”avdrag” och därmed måste all annan kodning vara
utmärkt.
För betyget A finns också ett tillägg längre ner.
Följande är spelförloppet:
1. Man börjar med att lägga till alla spelare som ska vara med genom att ange deras namn.
2. Spelarna kastar i tur och ordning. När det är en spelares tur att kasta står hans namn på
skärmen.
3. Spelaren kastar 3 pilar som kan ge 0-20 poäng per pil. (max 60p per runda) Varje kast läggs
manuellt in i datorn förutom om Dator spelar.
4. Därefter är det nästa spelares tur.
5. Den spelare vars totala summa på alla kast är över 301 poäng först vinner. (Vi bryr oss inte
om att man måste gå jämt ut – se dock nedan för svårare version.)
6. När en spelare har vunnit ska hans namn visas på skärmen varefter alla hans pil-kast skrivs ut
för hur han kastade. Varje serie av 3 pil-kast ska visas så att man förstår hur varje omgång har
kastats.
7. Ni kan själva välja om rundan spelas klart när någon uppnått maxpoängen.
Klasser och beskrivning
De klasser som bör ha konstruktor och ToString-metoder ska ha detta.
Följande klasser ska (minst) finnas med:

Klassen Game
Klassen game har en lista med player-objekt. Denna klass har också en metod för att lägga till nya
spelare (AddPlayer) och har en sträng som in-parameter som sätter namnet på spelaren.
Tillägg: Metoden AddPlayer behövs egentligen inte men man kan ha med den för tydlighets skull.
Annars kan man skapa nya objekt av klassen spelare direkt i PlayGame-metoden.
I denna metod finns också metoden PlayGame där programmet körs och där man välkomnas till
programmet och börjar skriva in spelare.

Klassen Player
Klassen player har en variabel för namn och en lista för turns. Här kan du använda en property
(egenskap) för namnet om du vill kunna nå detta utanför klassen. Eller om du använder ToStringmetoden för detta ändamål.
Vidare har denna klass följande metoder:
1. Calculatepoints. Denna metod loopar genom hela listan för objekten turns i listan för att få
fram den totalla summan poäng som en spelare hittills har fått. Denna metod bör användas
för att i slutändan kontrollera om poängen nått upp till 301.
2. Add_turn. Denna metod lägger till en pilomgång i listan som finns i denna klass. Denna
metod tar emot tre stycken heltal som motsvarar poängen för respektive pil. Om det är en
spelare så får man skriva in poängen medan de slumpas för datorn
Du kommer också troligtvis skapa en metod som heter Print_Turns eller något liknande som skriver
ut alla omgångars poäng på ett lämpligt sätt. Denna metod behövs troligtvis om du jobbar med
privata listor.

Klassen Turns
Denna klass innehåller inkapslade (privata) variabler/fält och metoder kopplat till en pilomgång. De
fält som ska finnas är då tre stycken heltal som motsvarar tre stycken pil-kast.
Denna klass ska ha följande specifika metoder:
1. Get_Score. Denna metod returnerar den sammanlagda poängen för det objektet (det vill
säga en pilomgång).
Utöver dessa klasser kan man utveckla programmet ytterligare:

Jag är inte riktigt helt inne på objektorienterad programmering och känner att jag inte förstår vissa moment, t.ex. hur jag ska lagra nya enskilda spelare.
Ska jag skapa nya objekt med:
private void AddPlayer(string name)
{
Player name = new Player();
}

Jag har för mig att det är något liknande som ska till, men det verkar inte riktigt stämma ändå eftersom kompilatorn säger emot på variabeln name.

Men ja... Jag behöver lite riktlinjer i hur jag ska strukturera det här.

Permalänk

Syftet med kursen är att du ska kunna lösa det själv, inte att andra ska lösa den åt dig. Och om du har problem med formuleringar i uppgiftstexten så är det något du ska ta upp med examinatorn.

Om du verkligen behöver hjälp så skulle jag precisera problemet, generalisera det, och sedan söka efter en lösning till det generaliserade problemet på exempelvis StackOverflow.

Till exempel, om du har en uppgift som kräver att du lagrar en int-array i en fil som heter "data.bin", frågar du inte på ett forum hur du gör det. Det du gör istället är att generalisera problemet till att lagra data i filer, och detta söker du efter på internet, inte hur du lagrar en int-array i en fil som heter "data.bin".

Permalänk
Avstängd
Skrivet av xGreenRed:

Syftet med kursen är att du ska kunna lösa det själv, inte att andra ska lösa den åt dig. Och om du har problem med formuleringar i uppgiftstexten så är det något du ska ta upp med examinatorn.

Om du verkligen behöver hjälp så skulle jag precisera problemet, generalisera det, och sedan söka efter en lösning till det generaliserade problemet på exempelvis StackOverflow.

Till exempel, om du har en uppgift som kräver att du lagrar en int-array i en fil som heter "data.bin", frågar du inte på ett forum hur du gör det. Det du gör istället är att generalisera problemet till att lagra data i filer, och detta söker du efter på internet, inte hur du lagrar en int-array i en fil som heter "data.bin".

Ja det fick tyvärr bli det oetiska alternativet.
Jag hittade en likadan uppgift online, som hade en hel del brister i utförande. Men själva ramverket fungerade någorlunda, så då kunde jag byta ut över hälften av det till något som varken kraschar eller accepterar fel värden.