2016-02-15 5 views
0

Итак, я создал игру, в которой игрок один и два игрока могут сыграть в игру, где они отвечают на математические вопросы, в основном они идут один за другим на 5 раундов, поэтому, если один из игроков правильно ответит на вопрос, Win ", и если они оба ответят правильно, это« галстук ». Какой-то странный способ объяснить странную игру, но это не моя проблема. Я уже закончил игру внутри класса, и она функциональна и прекрасна, моя проблема в том, что мне нужны игроки, чтобы играть в 5 игр, и для этого рассказывать, кто выиграл игру больше всего, например: «Игрок 1 (или игрок 2 , или ничья) выиграла {0} раз! " Я пробовал много разных вещей, но все это не работает. Вот мой код:C# Math game win counter

static void Main(string[] args) 
{  
    string ID = ""; 
    bool gOver = false; 

    Console.WriteLine("ID 1 "); 
    ID = Console.ReadLine(); 
    MathGame p1 = new MathGame(1, ID); 
    Console.WriteLine(); 
    Console.WriteLine("ID 2"); 
    ID = Console.ReadLine(); 
    MathGame p2 = new MathGame(2, ID); 
    Console.WriteLine(); 

    while (!gOver) 
    {    
     MathGame.prblm(); 

     while (!p1.Game() && !p2.Game())     
     gOver = true;    
    } 
} 

Повторить; Я хотел бы сделать цикл игры 5 раз и сказать, кто выиграл больше всего. Я чувствую, что моя ошибка проста, сделать ее там, где я устал. Спасибо за любую помощь, этот сайт очень полезен.

+1

просто добавьте 'for' петли вокруг' while' петли, сбрасывая вашему 'gOver' каждый раз –

+0

, и если вы уже можете сказать, кто выиграл, поставил счетчик, чтобы следить за каждый игрок выигрывает – Scriven

+0

Не все слишком уверен, как добавить счетчик к этому, есть ли страница msdn, о которой я мог бы прочитать об этом? –

ответ

1

Вам нужно обернуть свою игру в цикл, а не через некоторое время. Затем, когда цикл while (вашей игры) заканчивается, вы должны проверить, кто выиграл и подсчитал его. После цикла for у вас должны быть счетчики для отображения. Существует много способов «подсчета», но самым простым было бы добавить переменную для каждого игрока и увеличивать ее при выигрыше.

const in GAME_COUNT_TO_PLAY = 5; 
for(int i = 0; i < GAME_COUNT_TO_PLAY; i++) 
{ 
     MathGame.prblm(); 

     while (!p1.Game() && !p2.Game()) 
     { 
      //Keep track of score here, incriment some counter for winner 
      //e.g. if(p1.Win) p1Count++; 
     } 
} 

После цикла for вы можете проверить, кто выиграл.

if(p1Count > p2Count) 
    Display("Player 1 Wins!"); 
else if(p1Count < p2Count) 
    Display("Player 2 Wins!") 
else 
    Display("Draw!"); 
+0

Я никогда не думал использовать новую переменную для цикла, которая работает намного лучше, чем то, что я раньше тестировал. Мой код уже проверяет, кто победит в моем классе, поэтому все, что мне нужно сделать, - это счет в цикле while, который выиграл больше всего. спасибо за ваше решение, это было очень полезно. –

+0

На самом деле, это решение создает бесконечный цикл, он проходит через 5 раундов. –

+0

добавил перерыв; что исправил проблему с циклом –