Vinnaren i pepparkakshustävlingen!
2018-03-26, 16:57
  #1
Medlem
Håller på med en uppgift där jag ska skapa ett dartspel. Instruktionerna är ganska simpla:

Användarna fyller i antalet användare och namn >
3 kast per spelare varav 20 p som max per kast >
Först till 301 p vinner.

Problemet jag har är att totalen som räknas ut i min while loop verkar vara baserat på samtliga kast från alla spelare, jag vill att while loopen ska avbrytas när en av dessa spelare får 301 p. Vad är det som är fel i min kod?

Förövrigt så är jag långt från färdig med uppgiften utan det är här jag fastnat just nu.

Jag är införstådd med att jag inte kan få hjälp med en färdig kod och det vill jag heller inte ha, utan bara vägledning i var felet ligger så kanske jag kan klura ut det själv. Såhär ser min kod ut:

Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dart
{
    class Program
    {
        static void Main(string[] args)
        {
            Game My_Game = new Game();
            My_Game.Playgame();

            Console.Write("Press any key to continue . . .");
            Console.ReadKey(true);
        }
    }
}

{
    class Game

    {
        private List<Player> playerlist = new List<Player>();
        private List<int> total_Score = new List<int>();

        public void Playgame()
        {
            int turn1;
            int turn2;
            int turn3;
            

            Console.WriteLine("Welcome to the awesome Dart game !");

            Console.WriteLine("\nThe rules for this game are simple. Each player gets 3 darts to throw per round. \nFor every dart thrown you can get 0-20 points. First one to 301 points wins ! ");
            Console.WriteLine("\nPress Enter key to begin . . .\n");
            Console.ReadKey();

            Console.WriteLine("How many players are you ?");
            int numberofPlayers = Convert.ToInt32(Console.ReadLine());


            for (int i = 0; i < numberofPlayers; i++)
            {
                Console.WriteLine("Enter player name : ");
                playerlist.Add(new Player(Console.ReadLine()));
            }
            int totalScore = 0;

            while (totalScore <= 301)
            {

                foreach (var player in playerlist)
                {
                    Console.WriteLine("Enter player score for {0} on turn one : ", player);
                    turn1 = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Enter player score for {0} on turn two : ", player);
                    turn2 = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Enter player score for {0} on turn three : ", player);
                    turn3 = Convert.ToInt32(Console.ReadLine());
                    player.addTurn(turn1, turn2, turn3);
                    
                    totalScore = turn1 + turn2 + turn3;
                    total_Score.Add(totalScore);
                    totalScore = total_Score.Sum(score => Convert.ToInt32(score));
                    Console.WriteLine("----------------------------------------");
                }
            } 

            foreach (var player in playerlist)
            {
                player.Print_Turns();
            }

        }
    }
}

{
    class Player
    {

        private string PlayerName;
        private List<Turns> playerturns = new List<Turns>();


        public Player(string _playername)
        {
            PlayerName = _playername;
        }

        public void addTurn(int firstTurn, int secondTurn, int thirdTurn)
        {

            playerturns.Add(new Turns(firstTurn, secondTurn, thirdTurn));

        }

        public int total_points()
        {
            int total = 0;
            foreach (var points in playerturns)
            {
                total = total + points.Get_Score();
            }
            return total;
        }

        public void Print_Turns()
        {
            Console.WriteLine("\nPlayerstatistics for {0} : ", PlayerName);
            Console.WriteLine("----------------------------------------");

            foreach (var turn in playerturns)
            {
                Console.WriteLine(turn);
            }
            Console.WriteLine("The total is : {0}", total_points());
        }

        public override string ToString()
        {
            return string.Format(PlayerName);
        }

    }
}

{
    class Turns
    {

        private int turnOne;
        private int turnTwo;
        private int turnThree;

        public Turns(int _turnOne, int _turnTwo, int _turnThree)

        {

            turnOne = _turnOne;
            turnTwo = _turnTwo;
            turnThree = _turnThree;

        }


        public int Get_Score()
        {
            int total;
            total = turnOne + turnTwo + turnThree;
            return total;
        }

        public override string ToString()
        {
            return string.Format("First throw was : {0} points, Second throw was : {1} points , Third throw was : {2} points .", turnOne, turnTwo, turnThree);
        }

    }
}
Citera
2018-03-26, 19:44
  #2
Medlem
Behöver inte längre hjälp här då jag lyckades lösa det :-)
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback