Давайте вкратце расскажем, как работает ваш код:
Сначала он проверяет, не равен ли первый бросок 6, если он равен 6, то он не удовлетворяет состояние обоих валков не равно 6 и будет отскакивать от l oop (Это действительно сбивает с толку, не так ли?).
Чтобы убедиться, что оба значения не равны 6, вы должны использовать оператор || так что вы выполняете итерацию, пока ROLL1 или ROLL2 не равны 6.
while (roll != 6 || roll02 != 6)
{
Console.ReadKey();
roll = numberGen.Next(1, 7);
roll02 = numberGen.Next(1, 7);
Console.WriteLine("You rolled a: " + roll);
Console.WriteLine("You rolled a: " + roll02 + "\n");
attempts++;
}
Как указано в комментариях, есть более понятный способ сделать это со следующим условием:
while(!(roll == 6 && roll02 == 6))
1010 * Оператор! является логическим оператором «не», поэтому он даст вам обратное значение следующего за ним условия. В этом случае, когда оба броска равны 6, это ложь, что заставляет его больше не следовать условию и выходит из l oop.