2015-10-22 45 views
-4
var choices = new Dictionary<int, string> { { 1, "Rock" }, { 2, "Paper" }, { 3, "Scissors" } }; 
int input; 
var randomly = new Dictionary<int, string> { { 1, "Rock" }, { 2, "Paper" }, { 3, "Scissors" } }; 

Random random = new Random(); 
int RandomNumber = random.Next(1, 4); 

do 
{ 
    //Counter 
    double Wins = 0.0; 
    int Losses = 0; 
    int Ties = 0; 

    Console.WriteLine("-- Weapons Menu --"); 
    Console.WriteLine("-------------------"); 
    Console.WriteLine("1] Rock"); 
    Console.WriteLine("2] Paper"); 
    Console.WriteLine("3] Scissors"); 
    Console.WriteLine("Choose Your Weapon [1, 2 or 3]:"); 
    Console.WriteLine(); 
    input = int.Parse(Console.ReadLine()); 
    if (input == RandomNumber) 
     Console.WriteLine("You Tied The Computer"); 
    Ties++; 
    //Winning 
    ++Wins; 
    if (input == 1 && RandomNumber == 3) 

    Console.WriteLine("You Beat The Computer :)"); 


    if (input == 2 && RandomNumber == 1) 

    Console.WriteLine("You Beat The Computer :)"); 


    if (input == 3 && RandomNumber == 2) 

    Console.WriteLine("You Beat The Computer :)"); 

    //Lossing 
    ++Losses; 
    if (input == 1 && RandomNumber == 2) 
     Console.WriteLine("Sorry You Lost To The Computer :("); 

    if (input == 2 && RandomNumber == 3) 
     Console.WriteLine("You Beat The Computer :)"); 

    if (input == 3 && RandomNumber == 1) 
     Console.WriteLine("You Beat The Computer :)"); 

    Console.WriteLine(string.Format("Player Chose {0} : Computer Chose {1}", choices[input], randomly[RandomNumber])); 
    Console.WriteLine(); 
    Console.WriteLine("<Press Any Key To Continue...>"); 
    Console.WriteLine(); 

    Console.WriteLine("Player Wins  Computer Wins"); 
    Console.WriteLine("----------  --------------"); 
    Console.WriteLine(" {0}    {1}", Wins, Losses); 
    Console.WriteLine(); 

    Console.ReadKey(); 
} 
while (input != 4) ; 
Console.WriteLine("Thanks for playing!"); 

的代码运行正常,虽然我无法正确地得到战绩记录每场比赛结束后。C#柜台游戏控制台应用程序

+2

尽量不要发布太多的代码。考虑编辑它只显示相关部分。参见_ [mcve] _。检出_ [faq] _和_ [ask] _。 – MickyD

+0

'Ties','Wins'和'Losses'每次都会增加。我想你不懂如何使用大括号。 – radarbob

回答

1

这个代码是你的问题(以及与胜/损失进一步下跌)

 if (input == RandomNumber) 
      Console.WriteLine("You Tied The Computer"); 
     Ties++; 

需要将其写为:

 if (input == RandomNumber){ 
      Console.WriteLine("You Tied The Computer"); 
      Ties++; 
     } 

的解释:目前,你都输出并列只有当这是好的,但是你正在增加1,无论是否是平局。与获胜相同并与损失相同。

一条IF语句只会执行下一行。如果您需要执行多于1行的If语句,则需要将这些多行包含在{}

0

除了Nikerym的回答:对于获胜和失败逻辑,将三个“ if“语句放入单个”if“语句中,并将增量语句移动到”then“块中。

if ((input == 1 && RandomNumber == 3) || 
    (input == 2 && RandomNumber == 1) || 
    (input == 3 && RandomNumber == 2)) { 

    Console.WriteLine("You Beat The Computer :)"); 
    Wins++; 
} 

相同的损失理念。你的程序编写的方式,你总是增加胜利和损失。 Wins应该是int,而不是double。