2016-01-17 2 views
0

Просто пытаюсь сделать игру с переводом монет, но также пытаюсь сделать монету равной случайному числу 0 или 1, чтобы преобразовать строки типа «голова» или «хвосты». Новое для программирования, поэтому, пожалуйста, не судите, если это кажется дилетантским. Спасибо.Решение конвертировать int в строку в моей игре «Coin Flip»?

namespace TestCoin2 
{ 
     class Program 
    { 

    static void Main(string[] args) 
    { 
     int coin;// this will hold my random int numbers. 

     string userInput;// This will hold all my user input/ answers. 




     Console.WriteLine("Hello, Pick Heads or Tails:"); 
     userInput =Console.ReadLine(); 

     Random rng = new Random(); 

     coin = rng.Next(0, 2); 


     string myString2; 
     string myString; 
     if (coin == 0) 
     { 
      myString = coin.ToString("heads"); 
     } 

     else if (coin == 1) 
     { 
      myString2 = coin.ToString("tails"); <error under myString2 
     } 

     if (myString && userInput == "heads") 
     { 

      Console.WriteLine("You picked Right! Heads! YOU WIN!"); 
     } 

     else if (coin == 1 && userInput == "Tails") 
     { 

      Console.WriteLine("You picked Right! Tails! YOU WIN!"); 
     } 

     else 
     { 
     Console.WriteLine("You picked Wrong! it was..." + myString); <error 

     } 

     Console.ReadLine(); 
    } 



} 

}

+0

Вам не нужно объявить второй 'mystring2', просто использовать один и тот же' mystring' переменную. Кроме того, посмотрите [сравнение строк] (http://www.google.com.au/search?q=c%23+string+comparison). – Ian

+0

Поскольку Heads and Tails - это две стороны одной и той же вещи, результат один или другой, поэтому один var может сохранить результат. Таким образом, вы можете избавиться от блока 'if (coin)' – Plutonix

ответ

0

Вы можете просто использовать ?: operator так:

myString = coin == 0 ? "heads" : "tails"; 
1

Поскольку вы конвертируете фиксированное число int с чем-то другим. Лучше всего было бы определить enum.

public enum CoinSide 
{ 
    Heads = 0, 
    Tails = 1 
} 

Тогда вы можете просто бросить int к enum, и он будет выводить сторону.

var rng = new Random(); 
var coin = rng.Next(0,2); 
Console.WriteLine((CoinSide)coin); 

Если вам нужно сравнить их, вы можете использовать это.

if (((CoinSide)coin).ToString() == "Heads") 
    Console.WriteLine("Winner"); 

Полное решение

//Accept user input 
Console.WriteLine("Hello, Pick Heads or Tails:"); 
var userInput = Console.ReadLine(); 

//Create and flip the coin 
var rng = new Random(); 
var coin = (CoinSide)rng.Next(0, 2); 

//Compare input to coin 
if (coin.ToString() == userInput) 
    Console.WriteLine("You picked Right! {0}! YOU WIN!", coin); 
else 
    Console.WriteLine("You picked Wrong! it was... {0}", coin); 
0

Чтобы сделать его более удобным для чтения, вы можете использовать перечисление, как показано ниже. Вместо 0 и 1 вы можете использовать любое число, которое вы предпочитаете. Определите свое перечисление в классе и используйте его в методе.

public enum CoinSides{ Heads = 0, Tails = 1} 

Вы можете переписать свой полный код, как показано ниже,

namespace TestCoin2 
{ 

class Program 
{ 
    public enum CoinSides { Heads = 0, Tails = 1 } 

    static void Main(string[] args) 
    { 
     string userInput;// This will hold all my user input/ answers. 
     Console.WriteLine("Hello, Pick Heads or Tails:"); 
     userInput = Console.ReadLine(); 

     int coin;// this will hold my random int numbers. 
     Random rng = new Random(); 
     coin = rng.Next(0, 2); 

     if (coin == Convert.ToInt32(CoinSides.Heads) && userInput == CoinSides.Heads.ToString("D")) 
     { 
      Console.WriteLine("You picked Right! Heads! YOU WIN!"); 
     } 
     else if (coin == Convert.ToInt32(CoinSides.Tails) && userInput == CoinSides.Tails.ToString("D")) 
     { 
      Console.WriteLine("You picked Right! Tails! YOU WIN!"); 
     } 
     else 
     { 
      Console.WriteLine("You picked Wrong! it was..." + myString); 
     } 

     Console.ReadLine(); 
    } 
} 
} 
+0

Я не знаком с перечислениями. Можете ли вы показать мне, как выглядит полная программа с внесенным перечислением? Спасибо – Rom

+0

Я обновил ответ выше. Проверьте, работает ли это для вас. – Martin

Смежные вопросы