2014-10-20 1 views
-2

Мне нужно сделать этот код для запуска игры в кости, это моя первая игровая программа, и я столкнулся с некоторыми ошибками I Я никогда не видел, поэтому я сделал все возможное, чтобы исправить их. Таким образом, остались только следующие ошибки:Ошибка «'=': левый операнд должен быть l-значением» при записи if-statement

'=' : 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, что насчет прыжка и редактирования? На вашем этапе репутации вы даже заработаете дополнительную репутацию для исправления таких. –

+0

Я полагаю, что мог. И meh rep rep, число рядом с именем – Creris

+0

@ Creris Ну, быть конструктивным и отношение или нет. Заткнись, пожалуйста, пожалуйста! –

ответ

2

= используется для назначения переменных в C++. Вы должны использовать == для сравнительных испытаний:

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

Примечание также, что если-заявление условия написано так:

if(rv1=1) 

всегда будет вычисляться так, потому что rv1=1 возвращает результат выполнения задания, который 1 , Вот почему некоторые C++ программисты пишут условия, как это:

if(1==rv1) 

, который предотвращает случайное позабыв второй =, потому что:

if(1=rv1) 

ошибка времени компиляции. Конечно, такие условия написания в первую очередь относятся к стилю. Я лично не использую этот метод, потому что он не очень хорошо читается на мой взгляд.

+0

Я знал, что это, вероятно, было что-то очевидное, что я должен был знать! Теперь он работает, но у меня есть ALOT, чтобы так исправить, спасибо огромное :) –

+0

Если они использовали правильные компиляторы с полными предупреждениями (и действовали на них), им не понадобилось бы деформировать их разум с использованием йод-условий. – Deduplicator

+1

@TiffanyElizabethBeckham Но, пожалуйста, не просто слепо писать '1 == rv1'. Это называется условиями Yoda (вы можете Google), и это делает код более трудным для чтения и обслуживания, и хороший компилятор будет предупреждать о 'rv1 = 1' в любом случае. –

0

Вы используете оператор присваивания = всюду в случае утверждения вместо оператора сравнения == начиная отсюда

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

Там должно быть

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

и так далее. .