/** * Eine Reihe von Streichhölzern im NIM-Spiel. * * @author Q11 * @version 2015-09-28 */ public class Reihe { /* * Die Maximalzahl und die augenblickliche Anzahl der Streichhölzer * in der Reihe. */ private int maximalzahl; private int anzahl; /* * Die Streichhölzer in dieser Reihe als Feld. */ private Streichholz[] holz; /** * Konstruktor. * Wir erzeugen eine Reihe mit maximal m Streichhölzern. Ihre * linke obere "Ecke" soll bei (x|y) liegen. */ public Reihe (int x, int y, int m) { maximalzahl = m; anzahl = m; /* * Erzeuge das Feld von Streichhölzern. */ holz = new Streichholz[maximalzahl]; /* * Erzeuge nacheinander die einzelnen Streichhölzer. */ for (int i = 0; i < maximalzahl; i++) { holz[i] = new Streichholz (x + 20*i, y, 10); } } /** * Zeige die Streichholzreihe. */ private void zeige () { /* * Zeige die ersten "anzahl" Streichhölzer. */ for (int i = 0; i < anzahl; i++) { holz[i].werdeSichtbar (); } /* * Verbirg die übrigen Streichhölzer. */ for (int i = anzahl; i < maximalzahl; i++) { holz[i].werdeUnsichtbar (); } } /** * Nimm n Hölzer aus der Reihe. */ public boolean nimm (int n) { /* * Wenn wir zu viele oder zu wenige Hölzer nehmen wollen ... */ if (anzahl < n || n > 3 || n < 1) { /* * ... meldet die Methode false. */ return false; } /* * Andernfalls ... */ else { /* * ... vermindern wir die Streichholzzahl um n, zeigen die * Reihe neu an und melden Erfolg. */ anzahl = anzahl - n; // anzahl -= n; zeige (); return true; } } /** * Nenne die Anzahl der Streichhölzer in der Reihe. */ public int gibAnzahl () { return anzahl; } }