2017-09-25 5 views
0

Ich mache eine einfache Lotterie-Spiel-Anwendung, wo drei Zufallszahlen zwischen 0 und 10 generiert werden, wenn der Benutzer alle drei in der richtigen Reihenfolge erhält, erhalten sie 1 Million. Wenn sie eine richtig bekommen, gewinnen sie 10 Dollar, und wenn sie alle drei, aber nicht in der richtigen Reihenfolge bekommen, gewinnen sie eintausend, wenn zwei zusammenpassen, bekommen sie $ 1.000. und wenn sie nicht richtig sind, bekommen sie nichts.Was ist falsch an diesem C++ Code Lottery Ratespiel?

Hier ist mein Code hier.

int main() {

cout << "Hello, this is the lottery! Three random numbers between 0 and 10 will be generated. Guess what they are and the order!" << endl; 
char answer; 
cout << "Do you want to play? (y or n): " << endl; 
cin >> answer; 
while (answer == 'y' || 'Y') 

{ 
    srand((unsigned)time(NULL)); 
    int ran1 = rand() % 10; 
    int ran2 = rand() % 10; 
    int ran3 = rand() % 10; 
    int guess1, guess2, guess3; 
    cout << "Enter your first number guess: " << endl; 
    cin >> guess1; 
    cout << "Enter your second number guess: " << endl; 
    cin >> guess2; 
    cout << "Enter your third number guess: " << endl; 
    cin >> guess3; 
    if ((guess1 != ran1 || ran2 || ran3) && (guess2 != ran1 || ran2 || ran3) && (guess3 != ran1 || ran2 || ran3)) 
     cout << "You won no money. Sucks for you." << endl; 
    else 
     if ((guess1 == ran1 || ran2 || ran3) || (guess2 == ran1 || ran2 || ran3) || (guess3 == ran1 || ran2) || ran3) 
      cout << "You won 10 dollars!" << endl; 
     else 
      if ((guess1 && guess2 == ran1 && ran2) || (guess1 && guess3 == ran1 && ran3) || (guess2 && guess3 == ran2 && ran3)) 
       cout << "You won 100 dollars!" << endl; 
      else 
       if ((guess1 == ran1 || ran2 || ran3) && (guess2 == ran1 || ran2 || ran3) && (guess3 == ran1 || ran2 || ran3)) 
        cout << "You won 1 thousand dollars! good job!" << endl; 
       else 
        if ((guess1 == ran1) && (guess2 == ran2) && (guess3 == ran3)) 
         cout << "You won 1 million dollars! jackpot!" << endl; 

    cout << "The numbers were " << ran1 << "," << ran2 << "," << ran3 << endl; 
    cout << "Play again?(y or n): " << endl; 
    cin >> answer; 
    if (answer == 'y') 
     continue; 
    else 
     break; 

} 



cout << "Game Over" << endl; 
system("pause"); 
return 0; 

}

, wenn ich diesen Code ausführen, die Dinge nicht richtig mit den Entscheidungen. Alles was es sagt ist: "Du hast kein Geld gewonnen. Es ist schlecht für dich". Idk was ist los vielleicht ist es etwas einfaches aber kann jemand helfen? Vielen Dank.

+0

'guess1! = Ran1 || ran2 || ran3' macht nicht das, was du denkst – vu1p3n0x

+0

was ist los damit? –

+0

siehe Sadovsky's Antwort unten, auch sollten Sie die Reihenfolge Ihrer 'if's ändern, wie es ist, auch wenn Sie alle Vermutungen richtig haben, würden Sie $ 10 gewinnen, weil es die Bedingung erfüllt (und seine davor) – vu1p3n0x

Antwort

0
if ((guess1 != ran1 || ran2 || ran3) && (guess2 != ran1 || ran2 || ran3) && (guess3 != ran1 || ran2 || ran3)) 

sollte

if ((guess1 != ran1 || guess1 != ran2 || guess1 != ran3) && (guess2 != ran1 || guess2 != ran2 || guess2 != ran3) && (guess3 != ran1 || guess3 != ran2 || guess3 != ran3)) 
0

Es ist nicht die Reihenfolge des conditionals sein, obwohl auch dort gibt es Mängel, aber die Art und Weise, in der Sie das conditionals geschrieben haben.

(guess1 == RAN1 || RAN2) ist anders als (guess1 == == RAN1 || guess1 RAN2)

Dies liegt daran, dass in C++ eine andere Zahl als 0 als wahr ausgewertet wird. Aus diesem Grund bewertet es jedes Mal, wenn es wahr ist.

Zum Beispiel, sagen guess1 = 1, = 2 RAN1, RAN2 und = 3, dann

(guess1 == == RAN1 || guess1 RAN2) auf falsch ausgewertet wird, aber

(guess1 == ran1 || ran2) wird als wahr ausgewertet.