MINT üben

Ein Konsolenspiel bauen

Ein Schere-Stein-Papier-Spiel, das sich zu leicht durchschauen lässt, und ein Programm, das Ihre Zahl in höchstens zehn Versuchen errät.

Dein Fortschritt:
0 / 0 Aufgaben
1

Schere, Stein, Papier

AFB I–II

Pia programmiert „Schere, Stein, Papier“ gegen den Computer: fünf Runden, der Computer wählt zufällig. Die Zahlen 0, 1, 2 stehen für Schere, Stein, Papier; Stein schlägt Schere, Papier schlägt Stein, Schere schlägt Papier.

C++ · ssp.cpp
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

int main()
{
    string namen[3] = {"Schere", "Stein", "Papier"};
    int punkteSpieler = 0;
    int punkteComputer = 0;
    for (int runde = 1; runde <= 5; runde++) {
        int computer = rand() % 3;
        int spieler;
        cout << "Runde " << runde << " (0 Schere, 1 Stein, 2 Papier): ";
        cin >> spieler;
        cout << "Computer: " << namen[computer] << endl;
        if (spieler == computer) {
            cout << "Unentschieden" << endl;
        } else if (spieler == (computer + 1) % 3) {
            cout << "Punkt fuer dich" << endl;
            punkteSpieler++;
        } else {
            cout << "Punkt fuer den Computer" << endl;
            punkteComputer++;
        }
    }
    cout << "Endstand " << punkteSpieler << " : " << punkteComputer << endl;
    return 0;
}

Pia spielt eine Partie. Danach setzt sich ihr Bruder Jan an den Rechner, startet das Programm neu — und gewinnt 5 : 0.

Probelauf 1 · Pia
Runde 1 (0 Schere, 1 Stein, 2 Papier): 0
Computer: Stein
Punkt fuer den Computer
Runde 2 (0 Schere, 1 Stein, 2 Papier): 1
Computer: Stein
Unentschieden
Runde 3 (0 Schere, 1 Stein, 2 Papier): 2
Computer: Schere
Punkt fuer den Computer
Runde 4 (0 Schere, 1 Stein, 2 Papier): 0
Computer: Stein
Punkt fuer den Computer
Runde 5 (0 Schere, 1 Stein, 2 Papier): 1
Computer: Papier
Punkt fuer den Computer
Endstand 0 : 4
Probelauf 2 · Jan
Runde 1 (0 Schere, 1 Stein, 2 Papier): 2
Computer: Stein
Punkt fuer dich
Runde 2 (0 Schere, 1 Stein, 2 Papier): 2
Computer: Stein
Punkt fuer dich
Runde 3 (0 Schere, 1 Stein, 2 Papier): 1
Computer: Schere
Punkt fuer dich
Runde 4 (0 Schere, 1 Stein, 2 Papier): 2
Computer: Stein
Punkt fuer dich
Runde 5 (0 Schere, 1 Stein, 2 Papier): 0
Computer: Papier
Punkt fuer dich
Endstand 5 : 0

Nach jeder Partie möchte Pia außerdem ein „Glücksrad“ drehen lassen, das zufällig 10, 20, 30, 40 oder 50 Bonuspunkte vergibt — jeden Wert gleich wahrscheinlich.

  1. Entnehmen Sie den beiden Probeläufen, welches Zeichen der Computer in den Runden 1 bis 5 jeweils wählt, und notieren Sie, was dabei auffällt.
  2. Erklären Sie diese Beobachtung und wie Pia das Programm verbessern muss. Gehen Sie auch darauf ein, an welcher Stelle die Verbesserung stehen muss.
  3. Stellen Sie einen C++-Ausdruck mit rand() für die Bonuspunkte des Glücksrads auf und begründen Sie ihn schrittweise.

Hinweise

Hinweis zu Aufgabe a)
Schreiben Sie die fünf Zeilen „Computer: …“ der beiden Läufe nebeneinander.
Hinweis zu Aufgabe b)
rand() berechnet seine Zahlen aus einem Startwert. Welcher Startwert wird benutzt, wenn das Programm keinen festlegt? Welche Funktion setzt ihn, und womit bekommt man bei jedem Start einen anderen?
Hinweis zu Aufgabe c)
Wie viele verschiedene Werte gibt es? Beginnen Sie mit rand() % n und formen Sie Schritt für Schritt um, bis der Wertebereich stimmt. Prüfen Sie am Ende den kleinsten und den größten Wert.