Skip to content

Instantly share code, notes, and snippets.

@steiza
Created September 24, 2010 01:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save steiza/594730 to your computer and use it in GitHub Desktop.
Save steiza/594730 to your computer and use it in GitHub Desktop.
function reset() {
var dim = 8;
// Set up the playing field
var sheet = SpreadsheetApp.getActiveSheet();
var i = 0;
var columns = ['A', 'B', 'C', 'E', 'F', 'G', 'H', 'I'];
for (i = 0; i < dim; i++) {
sheet.setColumnWidth(i+1, 20);
sheet.setRowHeight(i+1, 20);
}
sheet.getRange(1, 1, dim, dim).setValue(' ').setBackground('black');
// Set up player legend
sheet.setColumnWidth(dim+2, 20);
sheet.getRange(4, dim+2, 1, 1).clear().setBackground('blue');
sheet.getRange(4, dim+3, 1, 1).setValue('Player 1');
sheet.getRange(5, dim+2, 1, 1).clear().setBackground('red');
sheet.getRange(5, dim+3, 1, 1).setValue('Player 2');
sheet.getRange(2, dim+3, 1, 1).setValue("Player 1's turn");
}
function onOpen() {
// Set up menu
var subMenu = [{name:"Take turn", functionName: "takeTurn"},
{name:"Reset", functionName: "reset"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("Paint", subMenu);
}
function takeTurn() {
var dim = 8;
// Update the board
var sheet = SpreadsheetApp.getActiveSheet();
var col = sheet.getActiveRange().getColumnIndex();
var row = sheet.getActiveRange().getRowIndex();
// Make sure we're on the board
if (col > dim || row > dim) {
return;
}
// Make sure the square is black
if(sheet.getActiveRange().getBackgroundColor() != 'black') {
return;
}
// Find out who's turn it is
var turn = sheet.getRange(2, dim+3, 1, 1).getValue();
if (turn == "Player 1's turn") {
setColor(sheet, row, col, 'blue');
setColor(sheet, row-1, col, 'blue');
setColor(sheet, row-2, col, 'blue');
setColor(sheet, row+1, col, 'blue');
setColor(sheet, row+2, col, 'blue');
sheet.getRange(2, dim+3, 1, 1).setValue("Player 2's turn");
} else {
setColor(sheet, row, col, 'red');
setColor(sheet, row, col-1, 'red');
setColor(sheet, row, col-2, 'red');
setColor(sheet, row, col+1, 'red');
setColor(sheet, row, col+2, 'red');
sheet.getRange(2, dim+3, 1, 1).setValue("Player 1's turn");
}
}
function setColor(sheet, row, col, color) {
if (row < 1 || row > 8) {
return;
}
if (col < 1 || col > 8) {
return;
}
sheet.getRange(row, col).setBackground(color);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment