2016-04-27 12 views
0

Ich habe eine Aufgabe, wo ich ein Programm für Papier-Schere-Rock schreiben muss.C Programm wird nicht beendet?

Sie spielen gegen "PC" und der erste, der 2 Punkte gewinnt. Nach 2 Punkten sollte das Programm aufhören und den Gewinner ausdrucken.

Hier ist mein Code:

int main() 
{ 
srand(time(NULL)); 
int dinP = 0; 
int pcP = 0; 

printf("Welcome to rock paper scissor!\n"); 

while(dinP != 2 || pcP != 2){ 

int player, computer, letsgo; 

printf("Press any key to continue.\n"); 
scanf("%d", &letsgo); 

printf("Your turn!\n 0 for Paper\n 1 for Rock\n 2 for Scissor\n"); 
scanf("%d", &player); 

computer = rand() % 3; 
printf("computers picked",computer); 

if (player == 0 && computer == 0 || player == 1 && computer == 1 || player == 2 && computer == 2) 

{ 

// printf("Player picked %d\n", player); 
// printf("Computer picked %d\n", computer); 
    printf("Therefore the result is 0 you ended up equal!\n"); 

} 

if (player == 0 && computer == 1 || player == 1 &&computer == 2 || player == 2 && computer == 0) 

{ 

// printf("player picked %d\n", player); 
// printf("Computer picked %d\n", computer); 
    printf("Player wins!\n 1 point for Player\n"); 
    dinP++; 

} 


if(player == 0 && computer == 2 || player == 1 && computer == 0 || player == 2 && computer == 1) 

{ 

    // printf("player picked %d\n", player); 
// printf("Computer picked %d\n", computer); 
    printf("Computer wins!\n Computer Wins! 1 point for the Computer\n"); 
    pcP++; 

} 

if(player < 0 || player >= 3) 

{ 
    printf("Please enter a valid number\n In other words, pick either rock, paper or scissor.\n"); 
} 

printf("dinP : %d - - - - - pcP : %d", dinP, pcP); 

} 

if(dinP == 2){ 
    printf("You won\n"); 
    // printf("p: %d", dinP); 
}else if(pcP == 2){ 
    printf("Pc Won\n"); 
    // printf("p: %d", pcP); 
} 

return 0; 

}

Nach 2 Punkte erzielte, tut das Programm zu stoppen und hält für meine Eingabe zu fragen. Irgendwelche Vorschläge, warum es nicht nach 2 Punkten endet?

+2

vielleicht wollten Sie 'while (dinP! = 2 && pcP! = 2)'? –

+0

while (dinP! = 2 || pcP! = 2) ist immer wahr, bis sowohl dinP als auch pcP 2 ist. Versuche while (dinP <2 && pcP <2) – Striker

Antwort

4

Denken Sie über diesen Teil:

while(dinP != 2 || pcP != 2) 

Der Ausdruck falsch ist, wenn sie beide gleich 2 sind Es wird am Laufen zu halten, bis der Spieler und die beiden Computer 2 Punkte haben. Um dies zu beheben, ändern Sie einfach die || zu &&.

+0

Vielen Dank! –

Verwandte Themen