그래서 저는 게임을 만들고 있고 OR을 AND로 변경하여 문제를 해결할 수있었습니다. 확실하지 않습니다. 나는 논리적 인 것과는 반대로 작동하는 이유를 이해한다. 나는 전에 거기에 있었다.왜 while 루프는 AND와 반대로 작동합니까?
//while user doesn't press quit, hasn't crashed into a bomb or hasn't saved all bears the game continues
while (((!wantsToQuit(key)) && (hasLost == false)) && (bearsSaved !=3))
{
if (isArrowKey(key))
{
updateGameData(grid, bears, bombs, detonator, exit, key, message, bearsSaved, bombsActive, moves, hasLost); //move bear in that direction
updateGrid(grid, maze, bears, bombs, detonator, exit); //update grid information
}
else if (toupper(key) == CHEAT) //pressing c enables cheat mode; disables bombs and sets the users moves to 500
{
cheatMode(message, moves, cheatActive, bombsActive);
}
else
message = "INVALID KEY!"; //set 'Invalid key' message
paintGame(grid, message, bearsSaved, moves); //display game info, modified grid & messages
key = getKeyPress(); //display menu & read in next option
}
endProgram(); //display final message
return(0);
기본적인 아이디어는 사용자가 미로를 통과하고 폭탄을 피함으로써 3 마리의 곰을 구해야한다는 것입니다.
- 폭탄에 걸리면 hasLost가 true로 설정되어 endProgram이 실행됩니다.
- Q 키를 누르면 while 루프가 더 이상 true가 아니며 endProgram이 실행됩니다.
- 그러나 모든 곰이 저장되면 게임도 종료됩니다.
플레이어는 종료하지 않고 플레이어가 손실되지 가지고 있으며, 플레이어는 3 곰을 저장하지 않은 :이 while 루프는 동안 작동하는 이유
는 내가 이해하지 못하는 것은. 반대로
는 :
플레이어는 종료하지 않고 플레이어가 손실되지 않았거나 플레이어가 3 곰 저장되지 않았습니다.
내게있어 후자는 논리적으로 말하면 더 의미가 있습니다. 게임을 종료하고 싶지 않고 잃어 버리지 않고 게임을 계속하거나, 곰을 모두 저장하지 않았다고 기대하기 때문입니다.
플레이어가 종료하고 싶지 않은 설명
"게임을 잃지 않았거나 곰을 저장하지 않은 경우 게임이 계속 실행 중입니다"라고 상상해보십시오. 그런 다음 그들이 곰들을 구한다고 가정 해보십시오. 이것은 게임이 계속 실행된다는 것을 의미합니다. "또는"은 어느 하나 또는 다른 하나 또는 둘 다를 의미한다. 곰을 구한 후에도 잃어 버리지 않았다는 것은 여전히 사실입니다. 그래서 게임은 계속됩니다. –
@A Busy Programmer @ M.M – casperf1