// Fred's graphical display of the PEGGED Programmer Of The Month // (POTM) solution for the 1Q/1997 PEGGED puzzle. Details at: // http://www.cs.washington.edu/homes/corin/POTM.PAGES/ for the USofA // http://www.lbi.ro/potm/ in Europe // Adapted from the original by John Cottrell at jcottrel@ix.netcom.com // The original plays an interactive remove the pegs game. Try it at: // http://ddi.digital.net/~cottrell/Peg2.html // Beware: this is my first Java program ... the fact that it works at // all is a tribute to the language (since I'm not much of a programmer). // I've tried to comment it pretty well so that I can figure out what // it does, but there may be remnants of the original stuff from John's // program that I missed ... use or steal or whatever as you wish! // Assumes we start on a 490x250 display with an additional 30 pixels // above the display area for the buttons - fit pegs to the display // called with: // *********************************************************************** import java.awt.*; public class applet1 extends java.applet.Applet { final boolean DEBUG = false; int spacing, holedia, pegdia, hoffset, voffset; int jump_peg, diadiff; int x_temp, y_temp; int index=0; int row,column; long millis; Button reset, slow, fast, step, counter; int PEG='X' ; int HOLE='O' ; int SPACE='_' ; // This is the board map ... it is generated from a preprocessing // program that reads the problem file and the solution file // ################### BEGIN DATA INPUT ##################### int rowlim=21; int collim=37; int moves=734; // 'O' is an open hole, 'X' is a filled hole, '_' is not available int board_table[][] = { { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','O','O','O','O','O','X','X','X','X','X','X','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','_','_','_','_','X','X','X','X','X','X','_','_','_','_','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','_','_','_','_','X','X','X','X','X','X','_','_','_','_','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','_','_','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','_','_','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','_','_','X','X','X','X','X','X','X','X','X','X','X','X','_','_','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','_','_','_','_','_','_','_','_','_','_','_','_','_','_','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','O','O','X','X','X','X','O','O','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { 'X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, }; // zero is a walk, one is a jump ... the other four numbers are // the starting row/column and the ending row/column. // unlike the puzzle, the first row and column are ZERO. int moves_table[][] = { { 1 ,4,1,4,3 }, { 1 ,2,2,4,2 }, { 1 ,2,0,2,2 }, { 1 ,0,0,2,0 }, { 1 ,0,1,2,1 }, { 1 ,1,2,3,2 }, { 1 ,2,0,2,2 }, { 1 ,2,4,4,4 }, { 1 ,0,4,2,4 }, { 1 ,3,2,1,2 }, { 1 ,0,2,0,4 }, { 1 ,1,2,1,4 }, { 1 ,3,0,3,2 }, { 1 ,5,0,3,0 }, { 1 ,3,3,3,1 }, { 1 ,3,0,3,2 }, { 1 ,2,5,4,5 }, { 1 ,5,2,5,0 }, { 1 ,3,2,5,2 }, { 1 ,2,3,2,5 }, { 1 ,7,1,5,1 }, { 1 ,0,4,2,4 }, { 1 ,6,0,4,0 }, { 1 ,5,2,5,0 }, { 1 ,4,0,6,0 }, { 1 ,2,6,4,6 }, { 1 ,2,4,2,6 }, { 1 ,0,5,2,5 }, { 1 ,6,3,6,1 }, { 1 ,2,7,4,7 }, { 1 ,6,0,6,2 }, { 1 ,1,6,3,6 }, { 1 ,7,2,5,2 }, { 1 ,1,8,1,6 }, { 1 ,9,2,7,2 }, { 1 ,0,6,2,6 }, { 1 ,4,4,4,2 }, { 1 ,4,2,6,2 }, { 1 ,9,0,9,2 }, { 1 ,2,5,2,7 }, { 1 ,7,0,9,0 }, { 1 ,3,8,1,8 }, { 1 ,0,8,2,8 }, { 1 ,10,0,8,0 }, { 1 ,2,8,2,6 }, { 1 ,12,0,10,0 }, { 1 ,14,0,12,0 }, { 1 ,16,0,14,0 }, { 1 ,18,0,16,0 }, { 1 ,20,0,18,0 }, { 1 ,19,2,19,0 }, { 1 ,19,0,17,0 }, { 1 ,17,1,19,1 }, { 1 ,20,1,18,1 }, { 1 ,19,4,19,2 }, { 1 ,17,4,19,4 }, { 1 ,20,4,18,4 }, { 1 ,20,2,20,4 }, { 1 ,20,5,20,3 }, { 1 ,17,3,19,3 }, { 1 ,19,2,19,4 }, { 1 ,18,4,20,4 }, { 1 ,20,3,20,5 }, { 1 ,17,0,15,0 }, { 1 ,15,1,17,1 }, { 1 ,20,6,20,4 }, { 1 ,19,6,19,4 }, { 1 ,20,4,18,4 }, { 1 ,18,1,18,3 }, { 1 ,18,4,18,2 }, { 1 ,16,3,16,1 }, { 1 ,17,1,15,1 }, { 1 ,18,2,16,2 }, { 1 ,15,0,13,0 }, { 1 ,17,5,19,5 }, { 1 ,18,7,18,5 }, { 1 ,19,5,17,5 }, { 1 ,20,7,18,7 }, { 1 ,14,1,16,1 }, { 1 ,16,1,16,3 }, { 1 ,15,3,17,3 }, { 1 ,14,3,14,1 }, { 1 ,16,5,16,3 }, { 1 ,17,3,15,3 }, { 1 ,14,4,16,4 }, { 1 ,15,3,15,1 }, { 1 ,12,2,14,2 }, { 1 ,13,0,13,2 }, { 1 ,17,6,17,4 }, { 1 ,17,4,15,4 }, { 1 ,15,1,13,1 }, { 1 ,20,9,20,7 }, { 1 ,17,7,19,7 }, { 1 ,20,7,18,7 }, { 1 ,0,10,0,8 }, { 1 ,14,5,14,7 }, { 1 ,3,6,1,6 }, { 1 ,0,8,0,6 }, { 1 ,0,6,2,6 }, { 1 ,16,6,14,6 }, { 1 ,15,4,15,6 }, { 1 ,19,9,19,7 }, { 1 ,19,7,17,7 }, { 1 ,12,0,12,2 }, { 1 ,6,2,8,2 }, { 1 ,9,2,7,2 }, { 1 ,8,0,8,2 }, { 1 ,8,3,6,3 }, { 1 ,5,3,7,3 }, { 1 ,5,6,3,6 }, { 1 ,10,1,12,1 }, { 1 ,2,6,4,6 }, { 1 ,13,1,11,1 }, { 1 ,11,2,11,0 }, { 1 ,13,2,11,2 }, { 1 ,14,6,14,8 }, { 1 ,11,2,9,2 }, { 0 ,13,3,13,2 }, { 1 ,14,2,12,2 }, { 1 ,11,0,9,0 }, { 1 ,9,3,9,1 }, { 1 ,9,0,9,2 }, { 1 ,16,7,14,7 }, { 1 ,16,9,16,7 }, { 1 ,17,7,15,7 }, { 1 ,18,8,16,8 }, { 1 ,20,11,20,9 }, { 1 ,18,9,16,9 }, { 1 ,18,10,20,10 }, { 1 ,7,3,7,1 }, { 1 ,20,9,20,11 }, { 1 ,9,2,7,2 }, { 1 ,7,1,7,3 }, { 1 ,5,5,3,5 }, { 1 ,4,7,4,5 }, { 1 ,3,5,5,5 }, { 1 ,5,4,5,6 }, { 1 ,14,7,16,7 }, { 1 ,16,8,16,6 }, { 1 ,14,8,16,8 }, { 1 ,16,6,14,6 }, { 1 ,20,12,20,10 }, { 1 ,18,11,20,11 }, { 1 ,20,10,20,12 }, { 1 ,8,5,8,3 }, { 1 ,7,3,9,3 }, { 1 ,2,9,0,9 }, { 1 ,0,12,0,10 }, { 1 ,0,9,0,11 }, { 1 ,10,3,8,3 }, { 1 ,11,4,11,2 }, { 0 ,15,9,15,8 }, { 1 ,16,8,14,8 }, { 1 ,12,2,10,2 }, { 1 ,10,5,10,3 }, { 1 ,10,2,10,4 }, { 1 ,14,9,14,7 }, { 1 ,20,13,20,11 }, { 1 ,17,11,17,9 }, { 1 ,14,6,14,8 }, { 1 ,18,12,20,12 }, { 1 ,17,9,15,9 }, { 1 ,20,11,20,13 }, { 1 ,10,4,8,4 }, { 1 ,5,8,3,8 }, { 1 ,5,6,5,8 }, { 1 ,8,3,8,5 }, { 1 ,4,9,2,9 }, { 1 ,2,10,2,8 }, { 1 ,2,8,4,8 }, { 1 ,4,10,2,10 }, { 1 ,1,10,3,10 }, { 1 ,2,12,2,10 }, { 1 ,0,11,2,11 }, { 1 ,20,14,20,12 }, { 1 ,18,13,20,13 }, { 1 ,20,12,20,14 }, { 1 ,6,9,4,9 }, { 1 ,2,10,2,12 }, { 1 ,4,8,4,10 }, { 1 ,8,5,10,5 }, { 1 ,14,11,14,9 }, { 1 ,14,9,16,9 }, { 1 ,15,11,15,9 }, { 1 ,16,9,14,9 }, { 1 ,14,8,14,10 }, { 1 ,15,13,15,11 }, { 1 ,16,11,14,11 }, { 1 ,16,13,16,11 }, { 1 ,16,10,16,12 }, { 1 ,20,15,20,13 }, { 1 ,18,14,20,14 }, { 1 ,20,13,20,15 }, { 1 ,6,8,4,8 }, { 1 ,4,11,4,9 }, { 1 ,4,8,4,10 }, { 1 ,4,12,4,14 }, { 1 ,2,12,4,12 }, { 1 ,3,10,3,12 }, { 1 ,2,13,4,13 }, { 1 ,0,13,2,13 }, { 1 ,1,15,1,13 }, { 1 ,10,6,10,4 }, { 1 ,8,6,10,6 }, { 1 ,12,5,10,5 }, { 1 ,11,6,9,6 }, { 1 ,10,4,10,6 }, { 1 ,10,6,8,6 }, { 1 ,1,12,1,14 }, { 1 ,17,12,15,12 }, { 1 ,20,16,20,14 }, { 1 ,18,15,20,15 }, { 1 ,20,14,20,16 }, { 1 ,9,8,9,6 }, { 1 ,8,6,10,6 }, { 1 ,6,11,6,9 }, { 1 ,4,10,6,10 }, { 1 ,2,15,4,15 }, { 1 ,2,13,2,15 }, { 1 ,0,14,2,14 }, { 1 ,11,8,9,8 }, { 1 ,10,6,10,8 }, { 1 ,14,12,16,12 }, { 1 ,14,10,14,12 }, { 1 ,12,7,10,7 }, { 1 ,12,9,12,7 }, { 1 ,16,14,14,14 }, { 1 ,17,14,17,12 }, { 1 ,17,12,15,12 }, { 1 ,12,6,12,8 }, { 1 ,20,17,20,15 }, { 1 ,18,16,20,16 }, { 1 ,10,9,12,9 }, { 1 ,20,15,20,17 }, { 1 ,10,7,10,9 }, { 1 ,9,9,11,9 }, { 1 ,6,9,6,11 }, { 1 ,8,8,6,8 }, { 1 ,8,10,8,8 }, { 1 ,9,8,7,8 }, { 1 ,6,8,8,8 }, { 1 ,8,7,8,9 }, { 1 ,4,13,4,11 }, { 1 ,5,11,3,11 }, { 1 ,3,11,3,13 }, { 1 ,2,17,4,17 }, { 1 ,2,15,2,13 }, { 1 ,2,13,4,13 }, { 1 ,0,17,2,17 }, { 1 ,14,15,14,13 }, { 1 ,20,18,20,16 }, { 1 ,19,18,19,16 }, { 1 ,20,16,18,16 }, { 1 ,0,15,0,17 }, { 1 ,16,15,18,15 }, { 1 ,15,16,15,14 }, { 1 ,14,12,14,14 }, { 0 ,15,14,15,13 }, { 1 ,17,17,19,17 }, { 1 ,15,12,15,14 }, { 1 ,18,15,18,17 }, { 1 ,8,9,6,9 }, { 1 ,6,12,6,10 }, { 1 ,6,9,6,11 }, { 1 ,12,9,10,9 }, { 1 ,12,11,12,9 }, { 1 ,18,17,20,17 }, { 1 ,20,20,20,18 }, { 1 ,20,22,20,20 }, { 1 ,20,24,20,22 }, { 1 ,20,26,20,24 }, { 1 ,20,28,20,26 }, { 1 ,20,30,20,28 }, { 1 ,20,32,20,30 }, { 1 ,20,34,20,32 }, { 1 ,20,36,20,34 }, { 1 ,18,35,20,35 }, { 1 ,20,35,20,33 }, { 1 ,19,33,19,35 }, { 1 ,19,36,19,34 }, { 1 ,18,34,20,34 }, { 1 ,16,35,18,35 }, { 1 ,18,36,18,34 }, { 1 ,16,36,18,36 }, { 1 ,18,33,18,35 }, { 1 ,18,36,18,34 }, { 1 ,20,33,20,31 }, { 1 ,17,34,19,34 }, { 1 ,20,31,20,29 }, { 1 ,20,34,18,34 }, { 1 ,15,34,17,34 }, { 1 ,18,34,16,34 }, { 1 ,13,34,15,34 }, { 1 ,18,32,20,32 }, { 1 ,18,31,20,31 }, { 1 ,14,36,14,34 }, { 1 ,20,32,20,30 }, { 1 ,15,34,13,34 }, { 1 ,15,36,15,34 }, { 1 ,16,34,14,34 }, { 1 ,16,33,18,33 }, { 1 ,16,32,18,32 }, { 1 ,18,33,18,31 }, { 1 ,20,29,20,27 }, { 1 ,16,30,16,32 }, { 1 ,12,36,14,36 }, { 1 ,12,35,14,35 }, { 1 ,13,34,15,34 }, { 1 ,14,36,14,34 }, { 1 ,18,30,16,30 }, { 1 ,20,30,18,30 }, { 1 ,15,34,13,34 }, { 1 ,18,31,16,31 }, { 1 ,14,33,16,33 }, { 1 ,15,31,17,31 }, { 1 ,16,33,16,31 }, { 1 ,17,31,15,31 }, { 1 ,18,29,20,29 }, { 1 ,20,27,20,25 }, { 1 ,19,27,19,29 }, { 1 ,20,29,18,29 }, { 1 ,10,36,12,36 }, { 1 ,10,35,12,35 }, { 1 ,8,36,10,36 }, { 1 ,8,35,10,35 }, { 1 ,6,36,8,36 }, { 1 ,6,35,8,35 }, { 1 ,4,36,6,36 }, { 1 ,4,35,6,35 }, { 1 ,2,36,4,36 }, { 1 ,0,36,2,36 }, { 1 ,2,35,4,35 }, { 1 ,1,34,1,36 }, { 1 ,1,36,3,36 }, { 1 ,3,34,1,34 }, { 1 ,0,34,2,34 }, { 1 ,0,32,0,34 }, { 1 ,3,36,5,36 }, { 1 ,1,32,1,34 }, { 1 ,0,35,0,33 }, { 1 ,1,34,3,34 }, { 1 ,3,33,3,35 }, { 1 ,0,30,0,32 }, { 1 ,3,35,5,35 }, { 1 ,3,32,1,32 }, { 1 ,0,33,0,31 }, { 1 ,5,36,7,36 }, { 1 ,1,31,1,33 }, { 1 ,1,33,3,33 }, { 1 ,3,31,1,31 }, { 1 ,0,31,2,31 }, { 1 ,5,35,7,35 }, { 1 ,5,34,3,34 }, { 1 ,3,34,3,32 }, { 1 ,7,36,9,36 }, { 1 ,5,33,3,33 }, { 1 ,5,31,3,31 }, { 1 ,2,31,4,31 }, { 1 ,3,33,3,31 }, { 1 ,2,30,0,30 }, { 1 ,1,28,1,30 }, { 1 ,0,30,2,30 }, { 1 ,0,28,0,30 }, { 1 ,3,30,1,30 }, { 1 ,0,30,2,30 }, { 1 ,7,35,9,35 }, { 1 ,7,34,5,34 }, { 1 ,6,32,6,34 }, { 1 ,5,34,7,34 }, { 1 ,4,32,6,32 }, { 1 ,3,31,5,31 }, { 1 ,3,28,1,28 }, { 1 ,2,30,2,28 }, { 1 ,11,33,11,35 }, { 1 ,13,34,11,34 }, { 1 ,17,28,19,28 }, { 1 ,18,30,18,28 }, { 1 ,12,36,12,34 }, { 1 ,11,35,11,33 }, { 1 ,9,36,11,36 }, { 1 ,9,34,11,34 }, { 1 ,7,34,9,34 }, { 1 ,1,28,3,28 }, { 1 ,0,26,0,28 }, { 1 ,3,28,3,30 }, { 1 ,2,27,0,27 }, { 1 ,0,28,0,26 }, { 1 ,5,30,5,32 }, { 1 ,7,32,7,34 }, { 1 ,5,32,7,32 }, { 1 ,9,35,11,35 }, { 1 ,7,31,7,33 }, { 1 ,3,30,5,30 }, { 1 ,12,34,10,34 }, { 1 ,7,34,7,32 }, { 1 ,11,36,11,34 }, { 1 ,15,30,17,30 }, { 1 ,15,32,15,30 }, { 1 ,17,30,17,28 }, { 1 ,17,27,17,29 }, { 1 ,19,28,17,28 }, { 1 ,0,25,0,27 }, { 1 ,2,26,0,26 }, { 1 ,12,33,14,33 }, { 1 ,0,27,0,25 }, { 1 ,13,31,15,31 }, { 1 ,14,33,14,31 }, { 1 ,15,31,13,31 }, { 1 ,17,28,17,30 }, { 1 ,14,30,16,30 }, { 1 ,17,30,15,30 }, { 1 ,9,33,9,35 }, { 1 ,11,34,9,34 }, { 1 ,9,35,9,33 }, { 1 ,9,33,7,33 }, { 1 ,7,33,7,31 }, { 1 ,7,31,5,31 }, { 1 ,6,30,4,30 }, { 1 ,4,29,4,31 }, { 1 ,5,28,5,30 }, { 1 ,4,27,4,29 }, { 1 ,4,31,6,31 }, { 1 ,9,31,7,31 }, { 1 ,8,30,6,30 }, { 1 ,6,31,8,31 }, { 1 ,6,30,4,30 }, { 1 ,7,29,5,29 }, { 1 ,4,30,4,28 }, { 1 ,4,25,4,27 }, { 1 ,0,24,0,26 }, { 1 ,1,24,1,26 }, { 1 ,0,26,2,26 }, { 1 ,12,32,14,32 }, { 1 ,12,31,14,31 }, { 1 ,14,32,14,30 }, { 1 ,14,30,16,30 }, { 1 ,15,28,17,28 }, { 1 ,16,30,16,28 }, { 1 ,17,28,15,28 }, { 1 ,19,25,19,27 }, { 1 ,19,27,17,27 }, { 1 ,20,25,20,23 }, { 1 ,8,31,8,33 }, { 1 ,11,33,9,33 }, { 1 ,8,33,10,33 }, { 1 ,4,28,4,26 }, { 1 ,6,27,6,29 }, { 1 ,5,29,7,29 }, { 1 ,2,25,2,27 }, { 1 ,2,27,4,27 }, { 1 ,14,29,16,29 }, { 1 ,15,27,15,29 }, { 1 ,16,29,14,29 }, { 1 ,17,27,15,27 }, { 1 ,17,26,19,26 }, { 1 ,18,24,18,26 }, { 1 ,19,26,17,26 }, { 1 ,11,31,11,33 }, { 1 ,11,33,9,33 }, { 1 ,10,31,10,33 }, { 1 ,9,33,9,31 }, { 1 ,9,30,9,32 }, { 0 ,10,33,9,33 }, { 1 ,9,33,9,31 }, { 1 ,4,27,6,27 }, { 1 ,4,26,2,26 }, { 1 ,3,24,3,26 }, { 1 ,2,26,4,26 }, { 1 ,4,23,4,25 }, { 1 ,11,30,9,30 }, { 1 ,2,23,4,23 }, { 1 ,13,30,11,30 }, { 1 ,2,21,2,23 }, { 1 ,0,22,2,22 }, { 1 ,2,23,2,21 }, { 1 ,13,29,15,29 }, { 1 ,13,28,15,28 }, { 1 ,0,23,2,23 }, { 1 ,14,27,16,27 }, { 1 ,15,29,15,27 }, { 1 ,16,27,14,27 }, { 1 ,16,26,18,26 }, { 1 ,16,25,18,25 }, { 1 ,18,26,18,24 }, { 1 ,20,23,20,21 }, { 1 ,10,28,10,30 }, { 1 ,18,24,20,24 }, { 1 ,18,23,20,23 }, { 1 ,20,24,20,22 }, { 1 ,8,29,10,29 }, { 1 ,9,31,9,29 }, { 1 ,8,28,6,28 }, { 1 ,6,27,6,29 }, { 1 ,6,29,8,29 }, { 1 ,4,26,4,24 }, { 1 ,2,24,2,22 }, { 1 ,20,21,20,23 }, { 1 ,18,22,20,22 }, { 1 ,20,23,20,21 }, { 1 ,8,27,6,27 }, { 1 ,10,30,10,28 }, { 1 ,5,25,5,27 }, { 1 ,5,27,7,27 }, { 1 ,8,29,10,29 }, { 1 ,0,20,0,22 }, { 1 ,3,22,1,22 }, { 1 ,0,22,2,22 }, { 1 ,11,29,13,29 }, { 1 ,12,27,12,29 }, { 1 ,13,29,11,29 }, { 1 ,10,28,12,28 }, { 1 ,11,30,11,28 }, { 1 ,14,27,12,27 }, { 1 ,14,26,16,26 }, { 1 ,15,24,15,26 }, { 1 ,16,26,14,26 }, { 1 ,17,24,15,24 }, { 1 ,20,17,20,19 }, { 1 ,20,20,20,22 }, { 1 ,18,21,20,21 }, { 1 ,20,22,20,20 }, { 1 ,9,27,9,29 }, { 1 ,9,29,11,29 }, { 1 ,8,25,8,27 }, { 1 ,6,26,8,26 }, { 1 ,5,24,3,24 }, { 1 ,5,23,3,23 }, { 1 ,3,24,3,22 }, { 1 ,3,22,1,22 }, { 1 ,2,20,0,20 }, { 1 ,1,22,1,20 }, { 1 ,7,27,9,27 }, { 1 ,0,20,2,20 }, { 1 ,11,11,11,9 }, { 1 ,12,28,10,28 }, { 1 ,12,8,12,10 }, { 1 ,11,26,11,28 }, { 1 ,9,27,11,27 }, { 1 ,13,26,11,26 }, { 1 ,12,27,10,27 }, { 1 ,16,23,18,23 }, { 1 ,16,22,18,22 }, { 1 ,10,27,10,29 }, { 1 ,18,23,18,21 }, { 1 ,11,25,11,27 }, { 1 ,10,29,12,29 }, { 0 ,11,28,12,28 }, { 1 ,12,29,12,27 }, { 1 ,12,27,10,27 }, { 1 ,20,19,20,21 }, { 1 ,19,20,19,18 }, { 1 ,17,21,19,21 }, { 1 ,13,25,15,25 }, { 1 ,20,21,18,21 }, { 1 ,15,24,15,26 }, { 1 ,14,23,14,25 }, { 1 ,15,26,13,26 }, { 1 ,8,12,8,10 }, { 1 ,7,11,5,11 }, { 1 ,5,13,3,13 }, { 1 ,5,11,5,13 }, { 1 ,3,13,3,15 }, { 1 ,7,13,7,11 }, { 1 ,10,9,12,9 }, { 1 ,7,25,5,25 }, { 1 ,7,24,5,24 }, { 1 ,5,25,5,23 }, { 1 ,8,10,6,10 }, { 1 ,5,13,7,13 }, { 0 ,6,10,7,10 }, { 1 ,7,10,7,12 }, { 1 ,4,20,4,18 }, { 1 ,2,20,4,20 }, { 1 ,4,21,4,19 }, { 1 ,2,16,4,16 }, { 1 ,2,21,4,21 }, { 1 ,0,18,0,16 }, { 1 ,0,16,2,16 }, { 1 ,2,18,2,20 }, { 1 ,12,13,12,11 }, { 1 ,0,19,2,19 }, { 1 ,12,24,14,24 }, { 0 ,12,11,12,12 }, { 1 ,14,24,14,26 }, { 1 ,14,26,12,26 }, { 1 ,14,14,16,14 }, { 1 ,16,17,16,15 }, { 1 ,16,14,16,16 }, { 1 ,12,9,12,11 }, { 1 ,17,16,15,16 }, { 1 ,17,19,19,19 }, { 1 ,19,18,19,20 }, { 1 ,18,21,18,19 }, { 1 ,16,20,18,20 }, { 1 ,8,23,8,25 }, { 1 ,6,23,8,23 }, { 1 ,19,20,17,20 }, { 1 ,8,26,8,24 }, { 1 ,4,22,4,20 }, { 1 ,6,21,4,21 }, { 1 ,5,14,3,14 }, { 1 ,3,14,3,16 }, { 1 ,5,23,5,21 }, { 1 ,2,16,2,18 }, { 1 ,3,19,3,17 }, { 1 ,4,21,6,21 }, { 1 ,9,26,11,26 }, { 1 ,15,21,17,21 }, { 1 ,12,26,10,26 }, { 1 ,1,18,3,18 }, { 1 ,15,23,15,21 }, { 1 ,2,20,2,18 }, { 1 ,17,21,17,19 }, { 1 ,18,18,18,20 }, { 1 ,15,20,15,22 }, { 1 ,16,19,16,17 }, { 1 ,9,25,11,25 }, { 1 ,17,18,17,20 }, { 1 ,10,27,10,25 }, { 1 ,10,12,8,12 }, { 1 ,18,20,16,20 }, { 1 ,5,15,3,15 }, { 1 ,4,17,2,17 }, { 1 ,3,15,3,17 }, { 1 ,7,12,9,12 }, { 1 ,2,17,4,17 }, { 1 ,12,11,12,13 }, { 1 ,11,25,13,25 }, { 1 ,13,22,13,24 }, { 1 ,11,23,13,23 }, { 0 ,13,25,12,25 }, { 1 ,15,22,13,22 }, { 1 ,13,23,13,25 }, { 1 ,13,25,11,25 }, { 1 ,14,18,16,18 }, { 1 ,16,17,16,19 }, { 1 ,15,16,15,18 }, { 1 ,8,14,8,12 }, { 1 ,8,12,10,12 }, { 1 ,10,13,8,13 }, { 1 ,7,13,9,13 }, { 1 ,9,23,11,23 }, { 1 ,7,22,5,22 }, { 1 ,6,20,6,22 }, { 1 ,5,22,7,22 }, { 1 ,10,25,10,23 }, { 1 ,11,23,9,23 }, { 1 ,5,16,3,16 }, { 1 ,4,18,4,16 }, { 1 ,3,16,5,16 }, { 1 ,8,24,10,24 }, { 1 ,4,20,6,20 }, { 1 ,2,18,4,18 }, { 1 ,11,25,11,23 }, { 1 ,14,16,14,18 }, { 1 ,16,19,16,21 }, { 1 ,13,21,15,21 }, { 1 ,16,21,14,21 }, { 1 ,8,23,10,23 }, { 1 ,8,22,6,22 }, { 1 ,8,21,6,21 }, { 1 ,7,20,5,20 }, { 1 ,6,22,6,20 }, { 1 ,4,19,4,17 }, { 1 ,6,20,4,20 }, { 1 ,6,19,4,19 }, { 1 ,4,20,4,18 }, { 1 ,4,17,4,19 }, { 1 ,6,18,4,18 }, { 1 ,5,16,5,18 }, { 1 ,4,19,4,17 }, { 0 ,4,17,4,18 }, { 1 ,12,13,10,13 }, { 1 ,12,22,14,22 }, { 1 ,13,20,15,20 }, { 1 ,14,22,14,20 }, { 1 ,10,12,12,12 }, { 1 ,12,15,12,13 }, { 1 ,12,12,12,14 }, { 1 ,14,18,16,18 }, { 1 ,13,18,13,20 }, { 1 ,15,20,15,18 }, { 1 ,16,18,14,18 }, { 1 ,10,23,12,23 }, { 1 ,11,21,11,23 }, { 1 ,12,23,10,23 }, { 1 ,9,22,11,22 }, { 1 ,10,13,8,13 }, { 1 ,8,16,8,14 }, { 1 ,10,24,10,22 }, { 1 ,8,13,8,15 }, { 1 ,4,18,6,18 }, { 1 ,10,14,8,14 }, { 1 ,8,14,8,16 }, { 1 ,13,20,15,20 }, { 1 ,12,20,12,22 }, { 1 ,14,18,14,20 }, { 1 ,10,15,12,15 }, { 1 ,15,20,13,20 }, { 1 ,12,14,10,14 }, { 1 ,10,20,12,20 }, { 1 ,13,20,11,20 }, { 1 ,10,17,10,15 }, { 1 ,12,16,10,16 }, { 1 ,10,21,10,23 }, { 1 ,12,22,10,22 }, { 1 ,10,23,10,21 }, { 1 ,9,15,11,15 }, { 1 ,12,15,10,15 }, { 1 ,8,20,10,20 }, { 1 ,9,16,11,16 }, { 1 ,10,14,10,16 }, { 1 ,9,21,11,21 }, { 1 ,8,17,10,17 }, { 1 ,11,16,9,16 }, { 1 ,8,19,8,17 }, { 1 ,8,16,10,16 }, { 1 ,6,18,8,18 }, { 1 ,9,19,9,17 }, { 1 ,8,17,8,19 }, { 1 ,7,19,9,19 }, { 1 ,11,20,9,20 }, { 1 ,9,20,9,18 }, { 1 ,10,18,10,20 }, { 1 ,11,18,11,20 }, { 1 ,11,21,11,19 }, { 1 ,12,19,10,19 }, { 1 ,9,18,9,16 }, { 1 ,9,16,11,16 }, { 1 ,11,16,11,18 }, { 1 ,10,20,10,18 }, { 1 ,10,17,10,19 }, { 0 ,10,19,10,18 }, { 1 ,11,18,9,18 }, }; // ################### END DATA INPUT ##################### // ########################################################################## public void init() { // Assumes we start on a 490x250 display with an additional 30 pixels // above the display area for the buttons - fit pegs to the display // called with: spacing = (245/collim)*2; // space between holes (even #pixels) if (spacing > (125/rowlim)*2) spacing = (125/rowlim)*2; holedia = spacing-2; // size of holes (pixels) pegdia = holedia-2; // size of pegs (pixels) diadiff=(holedia-pegdia)/2; hoffset=(490-collim*spacing)/2; // horizontal offset (to center pic) voffset=30+(250-rowlim*spacing)/2;// vertical offset (to center pic) // x increases left to right - like the column number // y increases top to bottom - like the row - add 30 because of title this.setLayout(new FlowLayout(1,5,5)); slow = new Button("SLOWER"); reset = new Button("SOLVE BOARD"); step = new Button("STEP BY STEP"); fast = new Button("FASTER"); counter = new Button(String.valueOf(moves)); this.add(slow); this.add(reset); this.add(step); this.add(fast); this.add(counter); millis=10000; // Start off very fast Graphics g = getGraphics(); this.showStatus("THIS IS THE STARTING POSITION."); } // end init // ########################################################################## public void rest() { int jj, timer=0; for(jj=0; jj-->