Я видел вопросы, связанные с крэпсом, но они были связаны с питоном и Java.Я надеюсь, что кто-то знакомый с C # может мне помочь.Код ниже предназначен для имитации игры в кости.Код в основном работает, за исключением одного вопроса.
Полагаю, мне следует кратко объяснить игру.Две 6-ти сторонние кости брошены.Если результат 7 или 11. Игрок или «стрелок» выигрывает автоматически.Если выпало 2, 3 или 12, стрелок проигрывает автоматически.Однако, если выпало другое число, это число становится «точкой».Стрелок снова катится до тех пор, пока либо он не перевернет точку снова, либо 7. Если точка перемещена, стрелок побеждает.Если выпало 7, на этот раз это проигрыш.
Итак, проблема в том, что этот код по-прежнему автоматически дает выигрыши или проигрыши в течение 2, 3, 11 и 12 после первого броска.Например: стрелок бросает 6. 6 становится точкой, и стрелок снова катится.Если стрелок выбрасывает 3, этот код помечает этот результат как потерю, когда он должен просто продолжать катиться, пока не выпадет 6 или 7.Этот неправильный конец происходит всякий раз, когда после первого броска выпадают 2, 3, 11 или 12.Любая помощь по исправлению логики этого кода будет принята с благодарностью.Спасибо Также, я надеюсь, что этот вопрос отформатирован правильно.Пожалуйста, дайте мне знать, если это не так.
class Craps
{
const int dieSides = 6;
int roll;
//const int repeatGame = 1000;
Random random = new Random();
public void RollDice()
{
int die1 = 0;
int die2 = 0;
die1 = random.Next(1, 7);
die2 = random.Next(1, 7);
roll = die1 + die2;
//Console.WriteLine("The shooter roled: {0}", roll);
}
public void PlayCraps()
{
RollDice();
Console.WriteLine("The shooter roled: {0}", roll);
int gameStatus = 0;
int point = roll;
int numRolls = 1;
if (roll != 7 || roll != 11 || roll != 2 || roll != 3 || roll != 12)
{
Console.WriteLine("The point is: {0}", point);
}
while (gameStatus < 1)
{
if (roll == 7 || roll == 11)
{
Console.WriteLine("You won!");
gameStatus++;
break;
}
else if (roll == 2 || roll == 3 || roll == 12)
{
Console.WriteLine("You lost.");
gameStatus++;
break;
}
else
{
while (point != roll || roll != 7)
{
RollDice();
if (roll == point)
{
Console.WriteLine("The shooter roled: {0}", roll);
Console.WriteLine("You won!");
numRolls++;
gameStatus++;
break;
}
if (roll == 7)
{
Console.WriteLine("The shooter roled: {0}", roll);
Console.WriteLine("You lost");
numRolls++;
gameStatus++;
break;
}
else
{
numRolls++;
Console.WriteLine("The shooter roled: {0}", roll);
break;
}
}
}
}
Console.WriteLine("This game was {0} roll(s)", numRolls);
}
static void Main(string[] args)
{
Craps NewGame = new Craps();
NewGame.PlayCraps();
Console.ReadLine();
}
}