org.ggp.base.apps.kiosk.templates.GameCanvas_Chessboard 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.templates;
import java.awt.Color;
import java.awt.Graphics;
/**
* GameCanvas_Chessboard is a fixed grid template designed for visualizing
* games that are played on a chess board. It establishes the basic graphical
* conventions for this class of games: an 8x8 board with alternating colors.
* It also defines the coordinates-to-letters mapping that appears in several
* chess board games, such as chess and checkers.
*
* @author Sam Schreiber
*/
public abstract class GameCanvas_Chessboard extends GameCanvas_FancyGrid {
private static final long serialVersionUID = 1L;
@Override
protected int getGridHeight() { return 8; }
@Override
protected int getGridWidth() { return 8; }
@Override
protected final boolean useGridVisualization() { return true; }
@Override
protected final boolean coordinatesStartAtOne() { return true; }
@Override
protected final void renderCellBackground(Graphics g, int xCell, int yCell) {
int width = g.getClipBounds().width;
int height = g.getClipBounds().height;
// Alternating colors for the board
if( (xCell + yCell) % 2 == 0) {
g.setColor(Color.GRAY);
g.fillRect(0, 0, width, height);
}
}
// This function only works properly when coordinates start at one.
public static final String coordinateToLetter(int x) {
return "" + ((char) ('a' + x - 1));
}
}