MINT üben

Ein Konsolenspiel bauen

Dreißig Übungen zum Konsolenspiel — von Zufallszahlen und Spielschleifen bis zum geschickten Halbieren.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Dreißig Übungen in gemischter Reihenfolge — du klickst, ziehst, ordnest, rechnest und knobelst. Jede Übung gibt dir sofort eine Rückmeldung, und zu jeder Aufgabe gibt es zwei gestufte Tipps: Der erste zeigt die Richtung, der zweite den entscheidenden Schritt. Die Chips zeigen das Anforderungsniveau: AFB I heißt wiedergeben und direkt anwenden, AFB II selbst entscheiden und verknüpfen, AFB III begründen, beurteilen oder eine Falle durchschauen. Aufgaben mit dem Chip Mix verbinden Wissen aus früheren Unterkapiteln, bei Trick steckt eine Falle drin. Fährst du über ein unterstrichenes Arbeitswort, siehst du, was es genau von dir verlangt.

A1
Welche Werte sind möglich?
AFB II

Deute den Ausdruck z = 3 + rand() % 4 und wähle die Karte, auf der genau die möglichen Werte von z markiert sind.

Klicke die passende Karte an und prüfe dann. Mit der Tastatur: Tab zur Karte, Enter auswählen.
rand() % 4 liefert 0, 1, 2 oder 3. Plus 3 ergibt 3, 4, 5 oder 6. Die Zahl hinter dem Prozentzeichen gibt an, wie viele Werte es sind, die Zahl davor, wo sie beginnen.
Ansatz: Der Rest bei Division durch 4 ist 0, 1, 2 oder 3.
Weiter: Addiere 3 zu jedem möglichen Rest und zähle, wie viele Werte es sind.
A2
Welcher Ausdruck geht höher?
AFB II

Schätze in jedem Duell ab, welcher Zufallsausdruck den größeren Höchstwert erreichen kann.

Immer zwei Karten treten gegeneinander an: Klicke die Karte mit dem größeren Wert an — mit der Tastatur Tab bzw. ←/→ zur Karte, Enter wählt. Die Sieger rücken im Turnierbaum vor; „Duell zurück“ nimmt die letzte Entscheidung zurück. Erst „Turnier prüfen“ verrät, wie viele Duelle falsch entschieden sind — dann geht es mit einer neuen Auslosung weiter.

Der Höchstwert von a + rand() % n ist a + n − 1: 5, 6, 9, 10 (5 · 2), 12, 50, 69 und 100. Es kommt auf Anfangswert und Teiler zugleich an.
Ansatz: Der größte Rest ist n − 1, danach wird a addiert (bzw. mit dem Faktor multipliziert).
Weiter: Bei 5 * (rand() % 3) ist der größte Rest 2, mal 5 ergibt 10.
A3
Wurfprotokoll als Balken
AFB IMix

Zeichne die Ausgabe des Programms ins Raster: ein Feld pro Zeichen, schwarz für #, leer für einen Punkt.

C++ · protokoll.cpp (Ausschnitt)
void balken(int n) {
    for (int i = 0; i < n; i++) cout << "#";
    for (int i = n; i < 6; i++) cout << ".";
    cout << endl;
}
// main:
int wurf[5] = {3, 1, 4, 6, 2};
for (int k = 0; k < 5; k++) balken(wurf[k]);
Wähle Raute und klicke Felder an — Ziehen malt mehrere auf einmal. Jede Zeile des Rasters gehört zu einem Wert im Feld wurf, von oben nach unten.
    Die Schleife in main ruft balken für jeden Wurf auf: Wurf 3 ergibt drei Rauten und drei Punkte, Wurf 6 sechs Rauten ohne Punkt. Die Zeilen folgen der Reihenfolge im Feld.
    Ansatz: Gehe das Feld wurf von vorn nach hinten durch: Jeder Eintrag ist ein Aufruf von balken.
    Weiter: Die zweite Schleife füllt mit Punkten auf, bis insgesamt sechs Zeichen in der Zeile stehen.