Permalänk
Medlem

Programmering 2 (Dart-spelet)

HEJ

Jag har uppgift och har fastnat i den flera dagar,Ju mer jag försöker lösa det, desto svårare och obegripligt blir det. Så därför tänkte fråga om hjälp, uppgiften går ut så :

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.

::::::

1. Det första problemet är att siffrorna som anges eller matas in manuellt av spelarna inte visas på skärmen, det visas andra slumpmässiga nummer på skärmen, jag har försökt lösa det men kunde inte.

2. Det andra problemet var att jag inte kunde få de valda siffrorna att visas på skärmen när en av spelarna vann, men spelaren nummer två måste alltid vinna för att ordet vinnare ska visas på skärmen, annars vinnare ordet visas inte på skärmen och när ordet vinnare visas, Jag kunde inte bifoga namnet på den vinnande spelaren bredvid ordet vinnare när spelet var slut.

3. Det sista problemet är att siffrorna som spelarna matat in manuellt inte visas på skärmen, utan slumpmässiga siffror dyker upp två gånger istället för en gång, för att beräknas i metoden (calculatepoints) efter det.

Så om någon har tips eller en sökord på google som hjälper mig
Tusen tack för hjälpen

________________________________________________________________________

namespace Project101 { internal class Class1 { public static void Main(string[] args) { Game my_game = new Game(); try { my_game.playgame(); } catch { Main(args); } Console.ReadKey(true); } class Game { private List<Player> player_List = new List<Player>(); public void addplayer(string name) { Player players = new Player(name); player_List.Add(players); } public void playgame() { int antal_spelare; int winner = 101; int antal_kast = 3; Random slump_tal = new Random(); int pil1 = 0; int pil2 = 0; int pil3 = 0; int dart1 = 0; int dart2= 0; int dart3= 0; Console.WriteLine("Vällkommen til dartspelet"); Console.WriteLine("---------------------------------------------------------"); Console.WriteLine("Hur många spelaren vill du ha ?"); try { antal_spelare = int.Parse(Console.ReadLine()); } catch { Console.WriteLine("Skriv in bara siffror"); throw; } for (int i = 0; i < antal_spelare; i++) { Console.Write($"\nSkriv in namnet på spelare {i + 1}: "); string name = Console.ReadLine(); addplayer(name); } do { foreach (var player in player_List) { Console.WriteLine("\n Det är {0} tur , kasta tre gånger mellan 0-20", player.Calculatepoints()); player.addturn(pil1, pil2, pil3); pil1 = int.Parse(Console.ReadLine()); if (pil1 > 20 || pil1 < 0) { Console.WriteLine("Snälla bara mellan 0-20"); pil1--; } pil2 = int.Parse(Console.ReadLine()); if (pil2 > 20 || pil2 < 0) { Console.WriteLine("Snälla bara mellan 0-20"); pil2--; } pil3 = int.Parse(Console.ReadLine()); if (pil3 > 20 || pil3 < 0) { Console.WriteLine("Snälla bara mellan 0-20"); pil3--; } dart1= slump_tal.Next(0, 20); dart2= slump_tal.Next(0, 20); dart3= slump_tal.Next(0, 20); Console.WriteLine("\nDet är datorns tur "); Console.WriteLine("Pil 1: {0} Pil 2: {1} Pil 3: {2}\n-------------------------\n", dart1, dart2, dart3); player.addturn(dart1, dart2, dart3); antal_kast = player.Calculatepoints(); } foreach (var player in player_List) { player.printresultat(); } } while (antal_kast <= winner); foreach (var player in player_List) { Console.Write("\nVi har vinnare " + player); } } class Player { private string name; private List<Turns> turn_list = new List<Turns>(); public Player(string _name) { name = _name; } public int Calculatepoints() { int totalt = 0; foreach (var turn in turn_list) { totalt = totalt + turn.getscore(); } return totalt; } public void addturn(int tal1, int tal2, int tal3) { turn_list.Add(new Turns(tal1, tal2, tal3)); } public void printresultat() { Console.WriteLine("\n Statisatik över varvs chansen för {0} : ", name); Console.WriteLine("*****************************************************"); foreach (var turn in turn_list) { Console.WriteLine(turn); } Console.WriteLine("_________________________________________________________"); Console.WriteLine($"Den totla pöang för {name} är " + "{0}", Calculatepoints()); } public override string ToString() { return name; } } class Turns { private int varv1; private int varv2; private int varv3; public Turns(int _varv1, int _varv2, int _varv3) { varv1 = _varv1; varv2 = _varv2; varv3 = _varv3; } public int getscore() { int totalt; totalt = varv1 + varv2 + varv3; return totalt; } //public int den_bästa() //{ // int best = varv1; // if (varv2 < best) // best = varv2; // if (varv3 < best) // best = varv3; // return best; //} public override string ToString() { return string.Format("kast1 är : [{0}], kast2 [{1}], 3 [{2}]", varv1, varv2, varv3 ); } } } } }

Rubrik smått justerad. // MOD
Permalänk
Hedersmedlem

@Ak94
Använd gärna [code][/code]-taggar ifall du ska posta kod i forumet.

Visa signatur

Danskjävel så krattar som en skrivare...

Permalänk
Hedersmedlem

Stega din kod med debuggern så kanske du förstår vad det är som händer.

Sedan orkar jag inte läsa igenom hela din kod. Plocka ut den funktion som du anser inte fungera och berätta vad som händer respektive vad som ska hända. Detta kan också vara anledningen till att du inte kan lösa problemet själv. När du ska lösa ett kodproblem måste du vara lugn metodisk och hitta precis var problemet händer. Enda sättet att lära sig är att göra det.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Stega din kod med debuggern så kanske du förstår vad det är som händer.

Sedan orkar jag inte läsa igenom hela din kod. Plocka ut den funktion som du anser inte fungera och berätta vad som händer respektive vad som ska hända. Detta kan också vara anledningen till att du inte kan lösa problemet själv. När du ska lösa ett kodproblem måste du vara lugn metodisk och hitta precis var problemet händer. Enda sättet att lära sig är att göra det.

i den här delen av koden är problemet tycker jag, dart spelet går ut att spelarena anges tre nummer mellan 0-20, och sedan datorns väljer tre slumpmässiga nummer 0-20. men de inmatade nummren av spelarena visas inte på skärmen utan det visas 6 slumpmässiga nummer. sedan ordet vinnare visas på skärmen bara när alla spelarna vinner utan datorn.

do { foreach (var player in player_List) { Console.WriteLine("\n Det är {0} tur , kasta tre gånger mellan 0-20", player.Calculatepoints()); player.addturn(pil1, pil2, pil3); pil1 = int.Parse(Console.ReadLine()); if (pil1 > 20 || pil1 < 0) { Console.WriteLine("Snälla bara mellan 0-20"); pil1--; } pil2 = int.Parse(Console.ReadLine()); if (pil2 > 20 || pil2 < 0) { Console.WriteLine("Snälla bara mellan 0-20"); pil2--; } pil3 = int.Parse(Console.ReadLine()); if (pil3 > 20 || pil3 < 0) { Console.WriteLine("Snälla bara mellan 0-20"); pil3--; } dart1= slump_tal.Next(0, 20); dart2= slump_tal.Next(0, 20); dart3= slump_tal.Next(0, 20); Console.WriteLine("\nDet är datorns tur "); Console.WriteLine("Pil 1: {0} Pil 2: {1} Pil 3: {2}\n-------------------------\n", dart1, dart2, dart3); player.addturn(dart1, dart2, dart3); antal_kast = player.Calculatepoints(); } foreach (var player in player_List) { player.printresultat(); } } while (antal_kast <= winner); foreach (var player in player_List) { Console.Write("\nVi har vinnare " + player); } }

Permalänk
Medlem
Skrivet av Kent:

@Ak94
Använd gärna [code][/code]-taggar ifall du ska posta kod i forumet.

Har fixat den . tack

Permalänk
Hedersmedlem
Skrivet av Ak94:

i den här delen av koden är problemet tycker jag, dart spelet går ut att spelarena anges tre nummer mellan 0-20, och sedan datorns väljer tre slumpmässiga nummer 0-20. men de inmatade nummren av spelarena visas inte på skärmen utan det visas 6 slumpmässiga nummer. sedan ordet vinnare visas på skärmen bara när alla spelarna vinner utan datorn.

Ta ett problem i taget. Varför visas det tre slumpmässiga nr på skärmen?

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Ta ett problem i taget. Varför visas det tre slumpmässiga nr på skärmen?

Nr som måste vissas är de inmatade manuellt nr för spelarena. Och de slumpmässiga nr är för datorn, för att datorn räknas som spelare också.
Men nr som visas på skärmen är alla slumpmässiga.

Jag har skrivit uppgiftsbeskrivningen ovanpå
Tack för hjälpen

Permalänk
Hedersmedlem
Skrivet av Ak94:

Nr som måste vissas är de inmatade manuellt nr för spelarena. Och de slumpmässiga nr är för datorn, för att datorn räknas som spelare också.
Men nr som visas på skärmen är alla slumpmässiga.

Jag har skrivit uppgiftsbeskrivningen ovanpå
Tack för hjälpen

Ja, jag menade att du skulle kolla i din kod.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Ja, jag menade att du skulle kolla i din kod.

Har kollat men ska kolla igen tills jag hittar lösningen, tack för hjälpen 😊

Permalänk
Medlem

igår skapade jag en tråd och frågade om hjälp, Jag har ändrade i koden och koden är nu bättre, men när man matar in ett tal mer 20 talet accepteras och räknas.

Till och med Ordet vinnare (while loop) synas inte fortfarande bara om det andra spelare vann. om du sagt while summa=>winner göe bara sista spelaren att vinna. Jag försökte lösa det men det gick inte bra.

Så har någon tips eller sökord på google som hjälper
tack för hjälpen

namespace Project106 { internal class Class1 { public static void Main(string[] args) { Game my_game = new Game(); try { my_game.playgame(); } catch { Main(args); } Console.ReadKey(true); } class Game { private List<Player> player_List = new List<Player>(); public void addplayer(string name) { Player players = new Player(name); player_List.Add(players); } int getPil() { int n = 0; do { System.Console.Write("Ange värde [0,20] :"); n = int.Parse(Console.ReadLine()); if (n < 0 || n > 20) { System.Console.WriteLine("Otillåtet värde, endast 0-20, försök igen"); } } while (n < 0 && n > 20); return n; } public void playgame() { int antal_spelare; int winner = 101; int summa = 3; Random slump_tal = new Random(); int pil1 = 0; int pil2 = 0; int pil3 = 0; int dart1 = 0; int dart2 = 0; int dart3 = 0; Console.WriteLine("Vällkommen til dartspelet"); Console.WriteLine("---------------------------------------------------------"); Console.WriteLine("Hur många spelaren vill du ha ?"); try { antal_spelare = int.Parse(Console.ReadLine()); } catch { Console.WriteLine("Skriv in bara siffror"); throw; } for (int i = 0; i < antal_spelare; i++) { Console.Write($"\nSkriv in namnet på spelare {i + 1}: "); string name = Console.ReadLine(); addplayer(name); } do { foreach (var player in player_List) { Console.WriteLine($"\n Det är {player}'s tur , kasta tre gånger mellan 0-20"); pil1 = getPil(); pil2 = getPil(); pil3 = getPil(); player.addturn(pil1, pil2, pil3); dart1 = slump_tal.Next(0, 20); dart2 = slump_tal.Next(0, 20); dart3 = slump_tal.Next(0, 20); summa = player.Calculatepoints(); } Console.WriteLine("\nDet är datorns tur "); Console.WriteLine($"Pil 1: {dart1} Pil 2: {dart2} Pil 3: {dart3}"); Console.WriteLine("-------------------------"); } while (summa <= winner); foreach (var player in player_List) { Console.WriteLine("\nVi har vinnare " + player); Console.WriteLine("-----------------------------------------------------"); break; } foreach (var player in player_List) { player.printresultat(); } } } class Player { private string name; private List<Turns> turn_list = new List<Turns>(); public Player(string _name) { name = _name; } public int Calculatepoints() { int totalt = 0; foreach (var turn in turn_list) { totalt = totalt + turn.getscore(); } return totalt; } public void addturn(int tal1, int tal2, int tal3) { turn_list.Add(new Turns(tal1, tal2, tal3)); } public void printresultat() { Console.WriteLine("\n Statisatik över varvs chansen för {0} : ", name); Console.WriteLine("*****************************************************"); foreach (var turn in turn_list) { Console.WriteLine(turn); } Console.WriteLine("_________________________________________________________"); Console.WriteLine($"Den totla pöang för {name} är " + "{0}", Calculatepoints()); } public override string ToString() { return name; } //public int addRandomTurn(Random slump_tal) //{ // Player winner_list = new List<Player>(); // foreach (var player in player_list) // { // if (player.Calculatepoints() > winner) // { // winner_list.add(player); // } // } // while (winner_list.Empty()) ; // turn_list.Add(new Turns(slump_tal.Next(0, 20) // , slump_tal.Next(0, 20) // , slump_tal.Next(0, 20))); //} } class Turns { private int varv1; private int varv2; private int varv3; public Turns(int _varv1, int _varv2, int _varv3) { varv1 = _varv1; varv2 = _varv2; varv3 = _varv3; } public int getscore() { int totalt; totalt = varv1 + varv2 + varv3; return totalt; } //public int den_bästa() //{ // int best = varv1; // if (varv2 < best) // best = varv2; // if (varv3 < best) // best = varv3; // return best; //} public override string ToString() { return string.Format("kast1 är : [{0}], kast2 [{1}], 3 [{2}]", varv1, varv2, varv3); } }

Permalänk
Hedersmedlem

Ja, googla hur man använder debuggern i VSCode eller vad du nu använder för IDE. Det hjälper massor att stega igenom koden för att se så att den gör så som du har tänkt. Du kan peka på variabler och se vad de innehåller, alternativt skapa en watchlist så att du ser dem typ som en tabell.

Du har betydligt många fler problem i din kod än vad du själv har hittat.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Ja, googla hur man använder debuggern i VSCode eller vad du nu använder för IDE. Det hjälper massor att stega igenom koden för att se så att den gör så som du har tänkt. Du kan peka på variabler och se vad de innehåller, alternativt skapa en watchlist så att du ser dem typ som en tabell.

Du har betydligt många fler problem i din kod än vad du själv har hittat.

Hur skapar man watch list

Permalänk
Hedersmedlem
Skrivet av Ak94:

Hur skapar man watch list

Jag har för mig att du högerklickar på en variabel och väljer Add watch.
Men numera har jag för mig att du automatiskt får en vy med alla variabler som är i scope, dvs tillgängliga där du befinner dig just nu i koden.

Men först måste du så klart sätta en break point i din kod samt eventuellt stega rad för rad manuellt. Annars kommer du inte se några variabler.

Visa signatur

Använd gilla för att markera nyttiga inlägg!