2013-10-03 45 views
0

所以我寫這個程序是一個紙岩石剪刀的雙人遊戲,無論每個玩家選擇什麼,輸出都是「玩家1贏」。無論輸入如何,輸出都是相同的

#include <stdio.h> 
int main(void) 
{ 
long player1Choice, player2Choice, p, r, s; 


     printf("Player 1, enter paper (p), rock (r), or scissors (s)\n"); 
      player1Choice=getchar(); 
      getchar(); 

     printf("Player 2, enter paper (p), rock (r), or scissors (s)\n"); 
      player2Choice=getchar(); 
      getchar(); 

     if((player1Choice=p)&&(player2Choice=r))  
      printf("Player 1 wins!\n"); 
     else if((player1Choice=r)&&(player2Choice=p)) 
      printf("Player 2 wins!\n"); 
     else if((player1Choice=r)&&(player2Choice=s)) 
      printf("Player 1 wins!\n"); 
     else if((player1Choice=s)&&(player2Choice=r)) 
      printf("Player 2 wins!\n"); 
     else if((player1Choice=s)&&(player2Choice=p)) 
      printf("PLayer 1 wins!\n"); 
     else if((player1Choice=p)&&(player2Choice=s)) 
      printf("Player 2 wins!\n"); 


    printf("Press any key to exit"); 
    getchar(); 
    return 0; 
} 

我認爲我的「if」語句中的邏輯「和」可能會造成麻煩,但我不確定。

+1

這就像關於RPS在過去2天內的第20個問題。學校開始了什麼地方? :) – zubergu

回答

2

您缺少字符常量的單引號,並且在需要時使用===。所以改變例如

if((player1Choice=p)&&(player2Choice=r))  

到:

if((player1Choice=='p')&&(player2Choice=='r'))  

這樣做對所有類似事件。

還擺脫未使用的變量,r,ps

最後,打開編譯器警告並注意它們 - 如果您允許,編譯器將幫助您解決所有這些問題。

1

您已聲明prs,但您永遠不會初始化它們。您也正在使用作業(=),而不是等值測試(==)。您的程序導致未定義的行爲。它看起來像你想要的東西沿線︰

if ((player1Choice == 'p') && (player2Choice == 'r')) 

修復後,你可以擺脫僞造變量。或者,改變你的變量聲明包括初始化:

long player1Choice, player2Choice, p = 'p', r = 'r', s = 's'; 

您仍然需要修復您的=問題。

您應該在編譯器中啓用更多警告。例如,對於您的程序,來自Clang:

$ clang -Wall example.c -o example 
example.c:19:51: warning: variable 's' is uninitialized when used here 
     [-Wuninitialized] 
     else if((player1Choice=r)&&(player2Choice=s)) 
               ^
example.c:4:43: note: initialize the variable 's' to silence this warning 
long player1Choice, player2Choice, p, r, s; 
             ^
              = 0 
example.c:15:27: warning: variable 'p' is uninitialized when used here 
     [-Wuninitialized] 
     if((player1Choice=p)&&(player2Choice=r))  
         ^
example.c:4:37: note: initialize the variable 'p' to silence this warning 
long player1Choice, player2Choice, p, r, s; 
            ^
            = 0 
example.c:15:46: warning: variable 'r' is uninitialized when used here 
     [-Wuninitialized] 
     if((player1Choice=p)&&(player2Choice=r))  
              ^
example.c:4:40: note: initialize the variable 'r' to silence this warning 
long player1Choice, player2Choice, p, r, s; 
            ^
             = 0 
3 warnings generated. 
+2

他也使用作業,而不是比較... – nhgrif

+0

謝謝,夥計們 - 完全滑過我。 –

相關問題