import ch.aplu.jgamegrid.*; import ch.aplu.util.MessagePane; import java.awt.*; public class GO_Brett extends GameGrid implements GGMouseListener { private boolean gelbIstDran; public GO_Brett() { super(19, 19, 25, Color.red, null, false); show(); gelbIstDran = true; addMouseListener(this, GGMouse.lPress); } public boolean mouseEvent(GGMouse mouse) { Location location = toLocationInGrid(mouse.getX(), mouse.getY()); switch (mouse.getEvent()) { case GGMouse.lPress: //Keine Uebereinander legen if (getOneActorAt(location)==null) { if (gelbIstDran) { //Neuer gelber Stein hinzugef?gt addActor(new Stone("sprites/token_gelb.png",'g'), location); gelbIstDran = false; if (gewinnKontrolle(location)) { new MessagePane("Gelb hat gewonnen"); } } else { addActor(new Stone("sprites/token_red.png",'r'), location); gelbIstDran = true; if (gewinnKontrolle(location)) { new MessagePane("Rot hat gewonnen"); } } } break; } //----->>>>>Pruefen, ob 5 in einer Reihe sind. refresh(); return true; } public char getPlayerColorOfStoneAt(int x, int y) { Location loc = new Location(x, y); if (getOneActorAt(loc) == null) return '-'; else return ((Stone)getOneActorAt(loc)).getColor(); } private boolean gewinnKontrolle(Location curLoc) { Stone curStone = null; char curColor = '-'; for (int x=4;x<15;x++) { //Reihe for (int y=4;y<15;y++) { //Spalte curStone = (Stone)getOneActorAt(curLoc); //curStone wurde als letztes gesetzt und es wird auf Gewinn geprüft curColor = curStone.getColor(); if (curColor!='-') { //Nach rechts if ( getPlayerColorOfStoneAt(x,y) == curColor && getPlayerColorOfStoneAt(x+1,y) == curColor && getPlayerColorOfStoneAt(x+2,y) == curColor && getPlayerColorOfStoneAt(x+3,y) == curColor && getPlayerColorOfStoneAt(x+4,y) == curColor) return true; //Nach links if ( getPlayerColorOfStoneAt(x,y) == curColor && getPlayerColorOfStoneAt(x-1,y) == curColor && getPlayerColorOfStoneAt(x-2,y) == curColor && getPlayerColorOfStoneAt(x-3,y) == curColor && getPlayerColorOfStoneAt(x-4,y) == curColor) return true; //Nach oben if ( getPlayerColorOfStoneAt(x,y) == curColor && getPlayerColorOfStoneAt(x,y-1) == curColor && getPlayerColorOfStoneAt(x,y-2) == curColor && getPlayerColorOfStoneAt(x,y-3) == curColor && getPlayerColorOfStoneAt(x,y-4) == curColor) return true; //Nach unten if ( getPlayerColorOfStoneAt(x,y) == curColor && getPlayerColorOfStoneAt(x,y+1) == curColor && getPlayerColorOfStoneAt(x,y+2) == curColor && getPlayerColorOfStoneAt(x,y+3) == curColor && getPlayerColorOfStoneAt(x,y+4) == curColor) return true; //DIAGONALEN //Diagonal LO if ( getPlayerColorOfStoneAt(x,y) == curColor && getPlayerColorOfStoneAt(x-1,y-1) == curColor && getPlayerColorOfStoneAt(x-2,y-2) == curColor && getPlayerColorOfStoneAt(x-3,y-3) == curColor && getPlayerColorOfStoneAt(x-4,y-4) == curColor) return true; //Diagonal RO if ( getPlayerColorOfStoneAt(x,y) == curColor && getPlayerColorOfStoneAt(x+1,y-1) == curColor && getPlayerColorOfStoneAt(x+2,y-2) == curColor && getPlayerColorOfStoneAt(x+3,y-3) == curColor && getPlayerColorOfStoneAt(x+4,y-4) == curColor) return true; //Diagonal LU if ( getPlayerColorOfStoneAt(x,y) == curColor && getPlayerColorOfStoneAt(x-1,y+1) == curColor && getPlayerColorOfStoneAt(x-2,y+2) == curColor && getPlayerColorOfStoneAt(x-3,y+3) == curColor && getPlayerColorOfStoneAt(x-4,y+4) == curColor) return true; //Diagonal RU if ( getPlayerColorOfStoneAt(x,y) == curColor && getPlayerColorOfStoneAt(x+1,y+1) == curColor && getPlayerColorOfStoneAt(x+2,y+2) == curColor && getPlayerColorOfStoneAt(x+3,y+3) == curColor && getPlayerColorOfStoneAt(x+4,y+4) == curColor) return true; } } } return false; } public static void main(String[] args) { new GO_Brett(); } }