2 Stimmen

Problem beim Vergleich der Ergebnisse aus einem zweidimensionalen Array!

Ich entwickle ein Spielautomatenspiel. Der Spieler gibt eine Geldmenge ein und tätigt eine Wette, um zu spielen. Das Ziel des Spiels ist es, so viele Reihen, Spalten und Diagonalen wie möglich desselben Symbols zu erhalten. Im obigen Beispiel wurde ein Gewinn erzielt, als die obere und untere Linie gleiche Symbole aufwiesen, teilweise 2x Linien. Abhängig von der Anzahl der Reihen mit dem gleichen Symbol wird der Benutzer gemäß dem folgenden Gewinnsystem bezahlt:

  • Eine Serie liefert 2 * Einsatz
  • Zwei Linien geben 3 * Einsatz
  • Drei Reihen geben 4 * Einsatz
  • Vier Reihen geben 5 * Einsatz
  • Fünf Linien geben 7 * Einsatz
  • Vollständiges Spielfeld gibt 10 * Einsatz

Ich weiß nicht, wie ich dieses Problem mit der Bezahlung lösen kann. Welchen Code kann ich verwenden? Sollte ich eine for-Schleife verwenden? Ich bin neu in c++, also habe ich Schwierigkeiten damit. Ich habe viele Stunden an diesem Spiel verbracht und kann es einfach nicht lösen. Bitte hilf mir!

 srand(time(0)); 
 char spiel[3][3] = {{'O','X','A'}, {'X','A','X'}, {'A','O','O'}}; 

 for (int i = 0; i < 3; ++i) 
 { 
 int r = rand() % 3; 
 cout << " " <

3voto

Benjamin Lindley Punkte 99114

Du wählst zwischen den Buchstaben 'A', 'O' und 'X', richtig?

#include 

char randomSymbol()
{
    char symbol = rand() % 3 + 'A';
    if(symbol == 'B') symbol = 'O';
    else if(symbol == 'C') symbol = 'X';
    return symbol;
}

void populateSlotField(char field[3][3])
{
    // Übergeben Sie Ihr Array als Argument an diese Funktion
    // Beachten Sie, dass 9 steht, weil Sie gesagt haben, dass Ihr Feld 3x3 groß war
    // Für ein Feld mit einer anderen Größe entsprechend anpassen 
    std::generate(field[0], field[0] + 9, randomSymbol);
}

0voto

Twig Punkte 621

Sie könnten es tun, indem Sie stattdessen ein Array verwenden

#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

int main(){
    char symbs[] = {'0','X','A'};

    for (int i = 0; i != 9 ; i++) {
        int rndnum = round((double)rand() / (double) RAND_MAX * 3);
        cout << symbs[rndnum];
    }
    cout << endl;

    return 0;
}

wobei (double)rand() / (double) RAND_MAX Ihnen ein zufälliges Double von 0 bis 1 gibt

0voto

FallenAngel Punkte 17178

Hier ist eine Notiz über c++ Zufallszahlen, es gibt einige Punkte zu beachten... Andernfalls können die von Ihnen generierten Werte nicht wirklich zufällig sein.

UPDATE: Wenn ich dich nicht falsch verstanden habe, fragst du nach diesem... Das ist ein ziemlich gutes Beispiel, finde ich, und enthält mehr als das, was du brauchst, also nimm einfach den Teil, den du benötigst...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X