/** * Ein einfaches NIM-Spiel. * * @author Q11 * @version 2015-10-05 */ public class Spiel { /* * Die Zeilen des NIM-Spiels als Feld von Reihen. */ private Reihe[] zeile; /* * Die Namen der Spielerin als Feld von Zeichenketten. */ private String[] spielerin; /* * Die Nummer der Spielerin, die an der Reihe ist (0 oder 1). */ private int werIstDran; /* * Meldung auf der Leinwand. */ private Beschriftung meldung; /** * Konstruktor. * Die Spielerinnen heißen name0 und name1. */ public Spiel (String name0, String name1) { zeile = new Reihe[4]; zeile[0] = new Reihe (60, 0, 1); zeile[1] = new Reihe (40, 150, 3); zeile[2] = new Reihe (20, 300, 5); zeile[3] = new Reihe (0, 450, 7); spielerin = new String[2]; spielerin[0] = name0; spielerin[1] = name1; werIstDran = 0; meldung = new Beschriftung (); meldung.setzePosition (250, 275); meldung.setzeFarbe ("schwarz"); meldung.setzeInhalt ("Nim-Spiel"); meldung.setzeSchriftgroesse (25); meldung.werdeSichtbar (); } /** * Nimm k Hölzchen aus Zeile n. */ public void nimm (int k, int n) { /* * Wenn das Spiel schon gewonnen ist ... */ if (zeile[0].gibAnzahl () + zeile[1].gibAnzahl () + zeile[2].gibAnzahl () + zeile[3].gibAnzahl () == 0) { /* * ... teile dies den Spielerinnen mit ... */ meldung.setzeInhalt (spielerin[1 - werIstDran] + " hat schon gewonnen."); } /* * ... andernfalls prüfe, ob der Spielzug möglich ist, und * führe ihn gegebenenfalls gleich aus. */ else if (n >= 0 && n <= 3 && zeile[n].nimm (k)) { meldung.setzeInhalt (spielerin[werIstDran] + " nimmt " + k + " Hölzchen aus Zeile " + n + "."); /* * Wechsle zur anderen Spielerin. */ werIstDran = 1 - werIstDran; } else { meldung.setzeInhalt ("Nicht möglich."); } } }