![JAR search and dependency download from the Maven repository](/logo.png)
org.ggp.base.apps.kiosk.games.TTTxNineCanvas Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of alloy-ggp-base Show documentation
Show all versions of alloy-ggp-base Show documentation
A modified version of the GGP-Base library for Alloy.
The newest version!
package org.ggp.base.apps.kiosk.games;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Set;
import org.ggp.base.apps.kiosk.templates.CommonGraphics;
import org.ggp.base.apps.kiosk.templates.GameCanvas_SimpleGrid;
public class TTTxNineCanvas extends GameCanvas_SimpleGrid {
private static final long serialVersionUID = 1L;
@Override
public String getGameName() { return "Nine Board Tic Tac Toe"; }
@Override
protected String getGameKey() { return "nineBoardTicTacToe"; }
@Override
protected int getGridHeight() { return 9; }
@Override
protected int getGridWidth() { return 9; }
@Override
protected boolean coordinatesStartAtOne() { return false; }
private int xSelectedBoard = 0;
private int ySelectedBoard = 0;
private int xSelectedSpot = 0;
private int ySelectedSpot = 0;
@Override
protected void handleClickOnCell(int xCell, int yCell, int xWithin, int yWithin) {
int xBoard = 1 + (xCell / 3);
int yBoard = 1 + (yCell / 3);
int xSpot = 1 + (xCell % 3);
int ySpot = 1 + (yCell % 3);
Set theMoves = gameStateHasLegalMovesMatching("\\( play " + xBoard + " " + yBoard + " " + xSpot + " " + ySpot + " (.*) \\)");
if(theMoves.size() == 1) {
xSelectedSpot = xSpot;
ySelectedSpot = ySpot;
xSelectedBoard = xBoard;
ySelectedBoard = yBoard;
submitWorkingMove(stringToMove(theMoves.iterator().next()));
}
}
@Override
protected void renderCell(Graphics g, int xCell, int yCell) {
int width = g.getClipBounds().width;
int height = g.getClipBounds().height;
int xBoard = 1 + (xCell / 3);
int yBoard = 1 + (yCell / 3);
int xSpot = 1 + (xCell % 3);
int ySpot = 1 + (yCell % 3);
g.setColor(Color.BLACK);
g.drawRect(7, 7, width-14, height-14);
if(gameStateHasFact("( currentBoard " + xBoard + " " + yBoard + " )") ||
gameStateHasFactsMatching("\\( currentBoard (.*) (.*) \\)").size() == 0) {
g.setColor(Color.BLUE);
}
if(xSpot == 1) g.fillRect(0, 0, 5, height);
if(xSpot == 3) g.fillRect(width-5, 0, 5, height);
if(ySpot == 1) g.fillRect(0, 0, width, 5);
if(ySpot == 3) g.fillRect(0, height-5, width, 5);
if(gameStateHasFact("( mark " + xBoard + " " + yBoard + " " + xSpot + " " + ySpot + " x )")) {
g.setColor(Color.GRAY);
g.fillRect(8, 8, width-15, height-15);
g.setColor(Color.BLACK);
CommonGraphics.fillWithString(g, "X", 1.2);
} else if(gameStateHasFact("( mark " + xBoard + " " + yBoard + " " + xSpot + " " + ySpot + " o )")) {
g.setColor(Color.GRAY);
g.fillRect(8, 8, width-15, height-15);
g.setColor(Color.WHITE);
CommonGraphics.fillWithString(g, "O", 1.2);
} else {
;
}
Set theMoves = gameStateHasLegalMovesMatching("\\( play " + xBoard + " " + yBoard + " " + xSpot + " " + ySpot + " (.*) \\)");
if(theMoves.size() == 1) {
g.setColor(Color.GRAY);
for(int i = 8; i < 10; i++)
g.drawRect(i, i, width-2*i, height-2*i);
}
if(xSelectedSpot == xSpot && ySelectedSpot == ySpot &&
xSelectedBoard == xBoard && ySelectedBoard == yBoard) {
g.setColor(Color.GREEN);
g.fillRect(10, 10, width-19, height-19);
}
}
@Override
public void clearMoveSelection() {
submitWorkingMove(null);
xSelectedSpot = 0;
ySelectedSpot = 0;
repaint();
}
}
/*
public class TTTxNineCanvas extends GameCanvas_SimpleGrid {
private static final long serialVersionUID = 1L;
public String getGameName() { return "Nine Board Tic Tac Toe"; }
protected String getGameKey() { return "tictactoex9"; }
protected int getGridHeight() { return 9; }
protected int getGridWidth() { return 9; }
protected boolean coordinatesStartAtOne() { return false; }
private int xSelectedBoard = 0;
private int ySelectedBoard = 0;
private int xSelectedSpot = 0;
private int ySelectedSpot = 0;
protected void handleClickOnCell(int xCell, int yCell, int xWithin, int yWithin) {
int xBoard = 1 + (xCell / 3);
int yBoard = 1 + (yCell / 3);
int xSpot = 1 + (xCell % 3);
int ySpot = 1 + (yCell % 3);
String theMove = "( mark " + xBoard + " " + yBoard + " " + xSpot + " " + ySpot + " )";
if(gameStateHasLegalMove(theMove)) {
xSelectedSpot = xSpot;
ySelectedSpot = ySpot;
xSelectedBoard = xBoard;
ySelectedBoard = yBoard;
submitWorkingMove(stringToMove(theMove));
}
}
@Override
protected void renderCell(Graphics g, int xCell, int yCell) {
int width = g.getClipBounds().width;
int height = g.getClipBounds().height;
int xBoard = 1 + (xCell / 3);
int yBoard = 1 + (yCell / 3);
int xSpot = 1 + (xCell % 3);
int ySpot = 1 + (yCell % 3);
g.setColor(Color.BLACK);
g.drawRect(7, 7, width-14, height-14);
if(gameStateHasFact("( boardtoplay " + xBoard + " " + yBoard + " )") ||
gameStateHasFact("( boardtoplay any any )")) {
g.setColor(Color.BLUE);
}
if(xSpot == 1) g.fillRect(0, 0, 5, height);
if(xSpot == 3) g.fillRect(width-5, 0, 5, height);
if(ySpot == 1) g.fillRect(0, 0, width, 5);
if(ySpot == 3) g.fillRect(0, height-5, width, 5);
if(gameStateHasFact("( cell " + xBoard + " " + yBoard + " " + xSpot + " " + ySpot + " x )")) {
g.setColor(Color.GRAY);
g.fillRect(8, 8, width-15, height-15);
g.setColor(Color.BLACK);
CommonGraphics.fillWithString(g, "X", 1.2);
} else if(gameStateHasFact("( cell " + xBoard + " " + yBoard + " " + xSpot + " " + ySpot + " o )")) {
g.setColor(Color.GRAY);
g.fillRect(8, 8, width-15, height-15);
g.setColor(Color.WHITE);
CommonGraphics.fillWithString(g, "O", 1.2);
} else {
;
}
String theMove = "( mark " + xBoard + " " + yBoard + " " + xSpot + " " + ySpot + " )";
if(gameStateHasLegalMove(theMove)) {
g.setColor(Color.GRAY);
for(int i = 8; i < 10; i++)
g.drawRect(i, i, width-2*i, height-2*i);
}
if(xSelectedSpot == xSpot && ySelectedSpot == ySpot &&
xSelectedBoard == xBoard && ySelectedBoard == yBoard) {
g.setColor(Color.GREEN);
g.fillRect(10, 10, width-19, height-19);
}
}
@Override
public void clearMoveSelection() {
submitWorkingMove(null);
xSelectedSpot = 0;
ySelectedSpot = 0;
repaint();
}
}*/
© 2015 - 2025 Weber Informatics LLC | Privacy Policy