2014-10-20 99 views
-2

我不得不讓這個代碼運行一個骰子游戲,這是我的第一個遊戲程序,我遇到了一些錯誤I以前從未見過,所以我盡了最大的努力來解決它們。所以我留下的唯一錯誤是這些:編寫if語句時出錯''=':左操作數必須是l值'

'=' : left operand must be l-value 

爲最後三個if語句。我知道這可能只是我的問題的開始,但我對這一切都很陌生,所以任何建議都非常感謝。

#include <iostream> 
#include <ctime>  //Include Header file for time functions 
#include <cstdlib> //Include Header file for random number generators 
#include "graph1.h" 
using namespace std; 
int main() 
{ 
//Variable Declaration 
int rv1 = 0; //Random number for the 1st dice 
int rv2 = 0; //Random number for the 2nd dice 
int seed=0; 
int wager=0; 

//Display graphics 
displayGraphics(); 

cout<< "Wager"; 
cin>>wager; 



//Initialize random number generator 
srand(time(0)); 

//Generate two random numbers between 1 and 6 inclusive 
rv1 = (rand()%6)+1; /* Function rand() generate a random number, 
(rand()%6+1) generate a random number between 1&6 */ 
rv2 = (rand()%6)+1; 

//rv1 
if(rv1=1) 
{cout<<displayBMP("1.bmp",200,150);} 

else 
{ if (rv1=2) 
cout<<displayBMP("2.bmp",200,150);} 

if (rv1=3) 
{cout<<displayBMP("3.bmp",200,150);} 


if (rv1=4) 
{cout<<displayBMP("4.bmp",200,150);} 

if (rv1=5) 
{cout<<displayBMP("5.bmp",200,150);} 

if (rv1=6) 
{cout<<displayBMP("6.bmp",200,150);} 
//rv2 
if(rv2=1) 
{cout<<displayBMP("1.bmp",200,250);} 

if (rv2=2) 
{cout<<displayBMP("2.bmp",200,250);} 

if (rv2=3) 
{cout<<displayBMP("3.bmp",200,250);} 

if (rv2=4) 
{cout<<displayBMP("4.bmp",200,250);} 

if (rv2=5) 
{cout<<displayBMP("5.bmp",200,250);} 

if (rv2=6) 
{cout<<displayBMP("6.bmp",200,250);} 


if (wager<5) 
{ 
    cout<<displayBMP("smiley.bmp",250,100); 
    gout<<setPos(150,280)<<"Your wager of"<<wager<<"is less than required $5/"; 
    gout<<setPos(150,295)<<"Please re-run program and enter larger amount!/n"; 
    return-1; 
} 
    if (((rv1+rv2)%2)=0) 
    { gout<<setPos(200,280)<<"Dice total"<<(rv1+rv2)<<endg; 
     cout<<"You win $2 extra for even roll!/n"; 
     cout<<"Your winnings:$2+Original Wager:$"<<wager<<"=$"<<wager+2<<endg; 
} 

    if(rv1+rv2=7) 
    {gout<<setPos(200,280)<<"Dice total"<<(rv1+rv2)<<endg; 
     cout<<"Youre lucky today!/n"; 
     cout<<"You double your wager/n"; 
     cout<<"Your winnings:$10+Original Wager=$"<<wager<<"=$"<<wager*2<<endg; 
} 
    if(((rv1+rv2)%2)=1) 
    {gout<<setPos(200,280)<<"Dice total"<<(rv1+rv2)<<endg; 
     cout<<"You lose $2 for odd roll!/n"; 
     cout<<"Original Wager:$"<<wager<<"Losses:$2=$"<<wager-2<<endg; 
     } 
return 0; 
} 
+0

@Creris跳入和編輯怎麼樣?在你的代表階段,你甚至可以獲得額外的代表來解決這個問題。 – 2014-10-20 18:02:01

+0

我想我可以。並且meh代表是rep,名字旁邊的數字 – Creris 2014-10-20 18:04:42

+0

@Creris那麼,建設性也是一種態度。請閉嘴,否則請! – 2014-10-20 18:27:06

回答

2

=用於C++中的變量賦值。您需要使用==進行對比測試:

if (((rv1+rv2)%2)==0) 

還要注意的是這樣寫的if語句條件:

if(rv1=1) 

將始終評估爲true,因爲rv1=1返回這是1分配的結果。這就是爲什麼一些C++程序員編寫這樣的條件:

if(1==rv1) 

其防止意外忘記第二=因爲:

if(1=rv1) 

是一個編譯時錯誤。當然,寫這樣的條件主要是風格問題。我個人不會使用這種方法,因爲在我看來,它讀得不好。

+0

我知道這可能是很明顯的,我應該知道!它現在運行,但我有很多修復,非常感謝:) – 2014-10-20 17:56:02

+0

如果他們使用正確的編譯器與完整的警告(並採取行動),他們不會需要使用優達條件來扭曲他們的想法。 – Deduplicator 2014-10-20 18:12:46

+1

@蒂芙尼伊麗莎白貝克漢姆但請不要盲目地寫'1 == rv1'。這被稱爲Yoda條件(你可以谷歌),它使得代碼更難以閱讀和維護,一個好的編譯器無論如何都會警告'rv1 = 1'。 – 2014-10-20 18:13:35

0

您使用賦值運算符=無處不在的if語句,而不是比較操作==從這裏開始

if(rv1=1) 
{cout<<displayBMP("1.bmp",200,150);} 

必須有

if(rv1 == 1) 
{cout<<displayBMP("1.bmp",200,150);} 

等。 。

相關問題