El objetivo del programa es tirar dos dados hasta que ambos sumen 6. Cuando usé && en la declaración while, se detiene después de que un dado sea igual a 6. ¿Por qué? ¿No debería && probar la primera condición y luego, si es correcta, probar la segunda?
while ((diceOne != 6) || (diceTwo != 6)) { diceOne = numberGeneration.Next(1, 7); diceTwo = numberGeneration.Next(1, 7); attempt = ++attempt; Console.WriteLine("Your first dice is: " + diceOne + " your second dice is: " + diceTwo); Console.WriteLine("Press any button to continue"); Console.ReadKey(); } Console.WriteLine("It took you " + attempt); Console.WriteLine("Press any key to continue"); Console.ReadKey();Se detiene porque rompes la condición de que un dado sea diferente de 6.
while ((diceOne != 6) && (diceTwo != 6))Mientras que se ejecutará mientras ambas condiciones sean verdaderas.
Estoy de acuerdo con @Pedro, también puede usar la declaración de break en el ciclo while(true) y detener el ciclo cuando ambos dados son iguales a 6:
while (true) { diceOne = numberGeneration.Next(1, 7); diceTwo = numberGeneration.Next(1, 7); attempt = ++attempt; Console.WriteLine("Your first dice is: " + diceOne + " your second dice is: " + diceTwo); Console.WriteLine("Press any button to continue"); Console.ReadKey(); if (diceOne == 6 && diceTwo == 6) break; } Console.WriteLine("It took you " + attempt); Console.WriteLine("Press any key to continue"); Console.ReadKey();Tenga en cuenta que la condición del ciclo while es la condición necesaria y suficiente para continuar el ciclo. (diceOne != 6) && (diceTwo != 6)) dice que "ambos dados no son 6". Cuando ambos dados no son 6, ciertamente desea continuar el bucle, por lo que es una condición suficiente, pero no es una condición necesaria. ¿Cuándo más le gustaría continuar el ciclo? ¡Cuando un dado es 6 y el otro no!
La condición necesaria y suficiente para continuar el bucle es que al menos un dado no sea 6, que es lo que || expresa.
Otros usuarios ya te han explicado por qué no funciona. Puedo sugerir modificar la declaración while de esta manera:
while (!(diceOne == 6 && diceTwo == 6))