#include "iostream.h" enum gewinner { niemand = 0, mensch = 1, comp = 2 }; int menschzieht (void) { int take = 0; while (!((int)take >= 1 && (int)take <= 3)) { take = 0; cout << "Wie viele Steine moechtest du nehmen? "; cin >> take; if (!((int)take >= 1 && (int)take <= 3)) { cout << "ZUG UNGUELTIG! (1, 2 oder 3 Steine nehmen!)" << endl; } } cout << "Du nimmst " << (int)take << " Steine. "; return take; } int compzieht (int wieviele) { int num; num = wieviele % 4; //Modulo rox! if (num == 0) num = 3; cout << "Ich nehme " << num << " Steine. "; return num; } void howmany (int wieviele) { cout << "Es liegen noch " << wieviele << " Steine auf dem Tisch." << endl; } int main(void) { int MaxAufTisch = 0, AufTisch, AnzahlRunden; gewinner winner = niemand; cout << "Willkommen beim Nimm-Spiel!" << endl; while ((int)MaxAufTisch == 0) { MaxAufTisch = 0; cout << "Mit wie vielen Steinen wollen wir beginnen? "; cin >> MaxAufTisch; cout << endl; } AufTisch = MaxAufTisch; cout << "Schoen! Ich lege " << AufTisch << " Steine auf den Tisch. Fangen wir an!" << endl; howmany(AufTisch); AnzahlRunden = 0; while (winner == niemand) { AnzahlRunden++; cout << "Runde " << AnzahlRunden << endl; AufTisch -= menschzieht(); if (AufTisch < 1) { winner = mensch; } else { howmany(AufTisch); AufTisch -= compzieht(AufTisch); if (AufTisch < 1) winner = comp; else howmany(AufTisch); } } switch (winner) { case mensch: cout << "Du hast gewonnen!" << endl; break; case comp: cout << "Ich habe gewonnen!" << endl; break; default: cout << "Fehler!"; break; } return 0; }