// 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 applet3 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=25; int collim=49; int moves=528; // 'O' is an open hole, 'X' is a filled hole, '_' is not available int board_table[][] = { { 'X','X','X','X','O','O','X','X','O','O','X','X','O','X','X','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','O','O','X','X','O','O','X','X','O','X','X','0'}, { 'O','_','O','O','X','O','X','X','X','O','X','O','O','_','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','_','O','O','X','O','X','X','X','O','X','O','O','_','O','0'}, { 'O','_','X','X','X','O','X','X','X','O','X','X','X','_','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','_','X','X','X','O','X','X','X','O','X','X','X','_','O','0'}, { '_','_','X','O','X','_','_','_','_','_','X','X','X','_','O','O','O','O','X','X','X','X','X','X','X','X','X','X','O','O','O','O','O','O','_','_','X','O','X','_','_','_','_','_','X','X','X','_','O','0'}, { '_','_','X','O','X','X','X','O','X','X','X','X','X','_','_','O','O','O','O','X','X','X','X','X','X','X','X','X','X','O','O','O','O','O','_','_','X','O','X','X','X','O','X','X','X','X','X','_','X','0'}, { '_','_','X','O','X','X','X','X','X','O','O','X','X','_','_','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','O','O','O','O','_','_','X','O','X','X','X','X','X','O','O','X','X','_','O','0'}, { 'X','X','X','O','O','O','X','X','X','O','X','X','X','_','_','O','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','O','O','O','X','X','X','O','O','O','X','X','X','O','X','X','X','_','O','0'}, { 'X','O','O','X','X','X','X','X','O','O','X','X','X','_','X','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','X','O','O','X','X','X','X','X','O','O','X','X','X','_','X','0'}, { '_','_','_','_','_','O','O','O','O','O','X','X','X','X','X','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','_','_','_','_','_','O','O','O','O','O','X','X','X','X','X','0'}, { '_','_','_','_','_','_','O','O','O','_','_','_','_','_','_','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','_','_','_','_','_','_','O','O','O','_','_','_','_','_','_','0'}, { '_','_','_','_','_','O','O','O','O','O','_','_','_','_','_','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','O','O','_','_','_','_','_','0'}, { '_','_','_','_','_','_','O','O','O','_','_','_','_','_','_','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','_','_','_','_','_','_','O','O','O','_','_','_','_','_','_','0'}, { 'X','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','X','0'}, { '_','_','_','_','X','O','X','X','X','O','X','_','_','X','X','X','X','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','_','_','_','_','X','O','X','X','X','O','X','_','_','_','_','0'}, { '_','_','_','O','O','O','X','X','X','O','O','O','_','_','X','X','X','X','O','O','_','_','_','_','_','_','_','O','O','O','O','O','O','O','_','_','_','O','O','O','X','X','X','O','O','O','_','_','_','0'}, { '_','_','_','O','X','X','X','X','X','X','X','O','_','_','_','X','X','X','X','O','_','_','_','_','_','_','_','O','O','O','O','O','O','O','_','_','_','O','X','X','X','X','X','X','X','O','_','_','_','0'}, { 'O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','0'}, { 'X','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','0'}, { '_','_','_','O','X','X','X','O','X','X','X','O','_','_','_','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { '_','_','_','O','X','X','X','X','X','X','X','O','_','_','_','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { '_','_','_','O','O','O','X','X','X','O','O','O','_','_','_','O','O','O','O','O','O','O','O','O','O','O','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','O','X','X','X','O','X','_','_','_','_','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','0'}, { '_','_','_','_','_','O','O','O','O','O','_','_','_','_','_','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','_','_','X','0'}, { '_','_','_','_','_','_','O','O','O','_','_','_','_','_','_','O','O','O','O','O','O','O','O','O','O','O','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','_','_','X','0'}, { 'O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','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 ,0,2,0,4 }, { 1 ,0,0,0,2 }, { 1 ,0,48,0,46 }, { 1 ,3,2,1,2 }, { 1 ,2,3,2,5 }, { 1 ,3,46,1,46 }, { 1 ,0,2,2,2 }, { 1 ,0,46,2,46 }, { 1 ,0,45,0,43 }, { 0 ,4,48,5,48 }, { 1 ,0,4,2,4 }, { 1 ,2,5,2,3 }, { 1 ,2,44,0,44 }, { 1 ,2,2,2,4 }, { 1 ,2,46,2,44 }, { 1 ,0,44,0,42 }, { 1 ,8,48,6,48 }, { 1 ,8,46,8,48 }, { 1 ,5,48,7,48 }, { 1 ,19,48,17,48 }, { 1 ,21,48,19,48 }, { 1 ,21,46,21,48 }, { 1 ,22,48,20,48 }, { 1 ,24,48,22,48 }, { 1 ,24,46,24,48 }, { 0 ,24,48,23,48 }, { 1 ,23,48,21,48 }, { 1 ,20,48,18,48 }, { 1 ,19,47,17,47 }, { 1 ,20,46,20,48 }, { 1 ,21,48,19,48 }, { 1 ,24,44,24,46 }, { 1 ,22,45,24,45 }, { 1 ,24,46,24,44 }, { 1 ,24,43,24,45 }, { 1 ,19,45,19,47 }, { 1 ,21,45,19,45 }, { 1 ,22,44,24,44 }, { 1 ,24,45,24,43 }, { 1 ,19,48,19,46 }, { 1 ,24,42,24,44 }, { 1 ,22,43,24,43 }, { 1 ,24,44,24,42 }, { 1 ,4,4,6,4 }, { 1 ,2,4,4,4 }, { 1 ,6,1,6,3 }, { 1 ,4,2,6,2 }, { 1 ,6,3,6,5 }, { 0 ,7,3,6,3 }, { 1 ,5,46,3,46 }, { 1 ,3,44,5,44 }, { 1 ,3,46,3,44 }, { 1 ,2,44,4,44 }, { 0 ,6,2,6,1 }, { 1 ,0,6,0,8 }, { 1 ,0,41,0,43 }, { 1 ,2,42,0,42 }, { 1 ,0,43,0,41 }, { 1 ,6,0,6,2 }, { 1 ,18,48,16,48 }, { 1 ,24,41,24,43 }, { 1 ,23,41,23,43 }, { 1 ,24,43,22,43 }, { 1 ,7,46,5,46 }, { 1 ,8,45,8,43 }, { 0 ,8,48,8,47 }, { 0 ,7,48,8,48 }, { 1 ,6,3,6,1 }, { 0 ,6,1,7,1 }, { 1 ,1,7,1,9 }, { 1 ,7,0,7,2 }, { 1 ,2,7,2,9 }, { 1 ,7,45,7,43 }, { 1 ,5,45,5,43 }, { 1 ,1,10,1,8 }, { 1 ,0,8,2,8 }, { 1 ,4,44,4,46 }, { 1 ,4,46,6,46 }, { 1 ,2,9,2,7 }, { 1 ,2,7,2,5 }, { 0 ,1,6,2,6 }, { 1 ,2,6,2,4 }, { 1 ,4,5,4,7 }, { 0 ,2,4,3,4 }, { 1 ,6,5,8,5 }, { 1 ,3,4,5,4 }, { 1 ,0,41,0,39 }, { 0 ,17,0,16,0 }, { 1 ,18,4,20,4 }, { 1 ,21,4,19,4 }, { 1 ,19,46,17,46 }, { 1 ,19,44,17,44 }, { 1 ,21,44,19,44 }, { 1 ,20,42,20,44 }, { 1 ,22,43,20,43 }, { 1 ,8,48,8,46 }, { 0 ,6,46,5,46 }, { 1 ,6,44,6,46 }, { 1 ,1,41,1,39 }, { 1 ,5,46,7,46 }, { 0 ,16,0,16,1 }, { 1 ,17,46,17,48 }, { 1 ,16,48,18,48 }, { 0 ,18,48,18,47 }, { 1 ,19,45,17,45 }, { 1 ,17,44,17,46 }, { 0 ,18,47,17,47 }, { 1 ,17,47,17,45 }, { 1 ,20,44,18,44 }, { 1 ,21,42,23,42 }, { 1 ,22,40,22,42 }, { 1 ,23,42,21,42 }, { 1 ,24,40,22,40 }, { 0 ,7,2,7,3 }, { 1 ,7,3,7,5 }, { 1 ,8,43,6,43 }, { 1 ,6,6,4,6 }, { 1 ,5,4,5,6 }, { 1 ,8,46,6,46 }, { 0 ,6,46,6,45 }, { 1 ,6,42,6,44 }, { 1 ,6,45,6,43 }, { 1 ,4,43,4,41 }, { 1 ,2,41,2,39 }, { 1 ,1,39,1,37 }, { 0 ,16,1,16,2 }, { 1 ,18,5,18,7 }, { 1 ,1,37,3,37 }, { 1 ,21,7,21,9 }, { 1 ,19,42,19,44 }, { 1 ,2,39,2,37 }, { 1 ,20,6,18,6 }, { 1 ,19,4,19,6 }, { 1 ,0,36,0,38 }, { 1 ,2,37,4,37 }, { 1 ,0,39,0,37 }, { 1 ,20,7,20,9 }, { 1 ,18,6,20,6 }, { 1 ,21,6,19,6 }, { 1 ,19,44,17,44 }, { 1 ,21,41,21,43 }, { 1 ,21,43,19,43 }, { 1 ,24,38,24,40 }, { 1 ,21,40,23,40 }, { 1 ,24,40,22,40 }, { 1 ,6,7,6,9 }, { 1 ,4,6,6,6 }, { 1 ,6,43,4,43 }, { 1 ,4,40,4,42 }, { 1 ,4,43,4,41 }, { 1 ,0,10,0,12 }, { 0 ,16,2,16,3 }, { 1 ,19,43,17,43 }, { 1 ,17,44,17,42 }, { 1 ,15,43,15,45 }, { 1 ,23,38,23,40 }, { 1 ,23,40,21,40 }, { 1 ,18,42,16,42 }, { 1 ,4,7,6,7 }, { 1 ,6,40,6,42 }, { 0 ,17,45,16,45 }, { 1 ,6,42,4,42 }, { 1 ,4,42,4,40 }, { 1 ,0,34,0,36 }, { 1 ,15,5,15,3 }, { 1 ,3,36,1,36 }, { 1 ,0,37,0,35 }, { 1 ,16,3,14,3 }, { 1 ,18,8,20,8 }, { 1 ,19,6,19,8 }, { 1 ,16,45,14,45 }, { 1 ,19,40,17,40 }, { 1 ,21,40,19,40 }, { 1 ,19,41,17,41 }, { 1 ,22,38,22,40 }, { 1 ,21,38,21,40 }, { 1 ,22,40,20,40 }, { 1 ,20,40,18,40 }, { 1 ,24,36,24,38 }, { 1 ,22,37,24,37 }, { 1 ,20,38,20,40 }, { 1 ,20,41,20,39 }, { 1 ,24,38,24,36 }, { 0 ,12,0,12,1 }, { 0 ,12,48,12,47 }, { 1 ,8,5,6,5 }, { 1 ,7,7,5,7 }, { 1 ,6,5,6,7 }, { 1 ,5,7,7,7 }, { 1 ,4,8,6,8 }, { 1 ,3,10,5,10 }, { 1 ,4,12,4,10 }, { 1 ,2,11,4,11 }, { 1 ,4,40,6,40 }, { 1 ,2,12,4,12 }, { 0 ,0,14,0,15 }, { 1 ,5,38,5,40 }, { 1 ,5,10,3,10 }, { 1 ,5,41,5,39 }, { 1 ,4,12,4,10 }, { 1 ,0,12,0,14 }, { 1 ,20,8,18,8 }, { 1 ,19,10,19,8 }, { 1 ,4,9,4,11 }, { 1 ,2,10,4,10 }, { 1 ,21,9,19,9 }, { 1 ,24,35,24,37 }, { 1 ,22,36,24,36 }, { 1 ,24,37,24,35 }, { 0 ,12,1,12,2 }, { 1 ,15,7,15,5 }, { 0 ,12,47,12,46 }, { 1 ,14,7,14,5 }, { 1 ,15,42,17,42 }, { 1 ,15,5,13,5 }, { 0 ,13,4,14,4 }, { 1 ,14,3,14,5 }, { 1 ,14,41,14,39 }, { 1 ,7,6,7,8 }, { 0 ,13,44,14,44 }, { 1 ,4,39,6,39 }, { 1 ,14,45,14,43 }, { 1 ,3,38,5,38 }, { 1 ,4,36,4,38 }, { 0 ,0,35,0,36 }, { 1 ,0,36,2,36 }, { 1 ,19,8,17,8 }, { 1 ,18,9,20,9 }, { 0 ,17,8,18,8 }, { 1 ,18,7,18,9 }, { 0 ,21,10,21,9 }, { 1 ,21,9,19,9 }, { 1 ,18,40,16,40 }, { 1 ,17,42,17,40 }, { 1 ,19,39,17,39 }, { 1 ,19,37,19,39 }, { 1 ,24,34,24,36 }, { 1 ,22,35,24,35 }, { 1 ,20,39,18,39 }, { 1 ,24,36,24,34 }, { 0 ,12,2,12,3 }, { 0 ,14,43,14,44 }, { 0 ,12,46,12,45 }, { 1 ,15,40,15,42 }, { 1 ,13,41,13,43 }, { 1 ,4,10,4,12 }, { 1 ,15,42,13,42 }, { 1 ,6,8,8,8 }, { 1 ,13,42,13,44 }, { 1 ,14,44,12,44 }, { 1 ,6,40,8,40 }, { 1 ,6,39,8,39 }, { 1 ,8,39,8,41 }, { 1 ,4,38,6,38 }, { 1 ,6,36,4,36 }, { 1 ,7,41,9,41 }, { 0 ,2,36,3,36 }, { 1 ,0,14,0,16 }, { 1 ,19,9,17,9 }, { 1 ,21,37,19,37 }, { 1 ,24,33,24,35 }, { 1 ,23,33,23,35 }, { 1 ,24,35,22,35 }, { 1 ,14,5,12,5 }, { 0 ,12,3,12,4 }, { 1 ,12,45,12,43 }, { 1 ,8,11,8,9 }, { 1 ,6,11,8,11 }, { 1 ,3,36,5,36 }, { 1 ,6,9,6,11 }, { 1 ,18,39,16,39 }, { 1 ,16,40,16,38 }, { 1 ,19,36,17,36 }, { 1 ,21,36,19,36 }, { 1 ,18,38,18,36 }, { 1 ,21,35,23,35 }, { 1 ,21,34,23,34 }, { 1 ,23,35,23,33 }, { 1 ,15,39,13,39 }, { 1 ,15,38,17,38 }, { 1 ,12,4,12,6 }, { 0 ,17,40,17,39 }, { 1 ,9,41,11,41 }, { 1 ,8,12,8,10 }, { 1 ,8,10,6,10 }, { 1 ,5,11,7,11 }, { 1 ,8,8,8,10 }, { 1 ,6,12,8,12 }, { 1 ,4,12,6,12 }, { 1 ,6,34,6,36 }, { 0 ,6,10,7,10 }, { 1 ,7,38,5,38 }, { 0 ,5,36,5,37 }, { 1 ,5,38,5,36 }, { 0 ,0,16,0,17 }, { 1 ,14,8,16,8 }, { 1 ,15,10,15,8 }, { 1 ,15,8,17,8 }, { 1 ,17,8,17,10 }, { 1 ,18,10,16,10 }, { 1 ,17,39,17,37 }, { 1 ,19,35,17,35 }, { 1 ,19,37,19,35 }, { 1 ,22,33,24,33 }, { 1 ,23,31,23,33 }, { 1 ,24,33,22,33 }, { 1 ,24,31,24,33 }, { 1 ,21,33,23,33 }, { 1 ,21,32,23,32 }, { 1 ,24,33,22,33 }, { 1 ,12,6,14,6 }, { 0 ,13,7,14,7 }, { 1 ,14,6,14,8 }, { 0 ,12,43,12,42 }, { 1 ,7,10,7,12 }, { 1 ,5,36,7,36 }, { 0 ,0,17,1,17 }, { 1 ,20,35,18,35 }, { 1 ,19,33,21,33 }, { 1 ,22,33,20,33 }, { 1 ,22,30,22,32 }, { 1 ,23,32,21,32 }, { 0 ,13,8,13,9 }, { 0 ,12,42,11,42 }, { 1 ,11,42,11,40 }, { 0 ,13,9,14,9 }, { 1 ,14,8,14,10 }, { 1 ,10,40,12,40 }, { 1 ,8,13,8,11 }, { 1 ,8,10,8,12 }, { 0 ,8,12,8,11 }, { 1 ,6,12,8,12 }, { 1 ,7,37,7,35 }, { 0 ,1,17,2,17 }, { 0 ,14,10,15,10 }, { 1 ,16,10,14,10 }, { 1 ,17,36,19,36 }, { 1 ,18,34,18,36 }, { 1 ,19,36,17,36 }, { 0 ,17,35,17,34 }, { 1 ,17,37,17,35 }, { 1 ,21,31,21,33 }, { 1 ,20,34,18,34 }, { 1 ,21,33,19,33 }, { 1 ,22,28,22,30 }, { 1 ,24,29,22,29 }, { 1 ,12,40,14,40 }, { 0 ,13,39,14,39 }, { 1 ,22,29,22,31 }, { 1 ,14,40,14,38 }, { 1 ,24,30,22,30 }, { 1 ,10,38,10,40 }, { 0 ,10,37,10,38 }, { 0 ,10,36,10,37 }, { 1 ,8,11,8,13 }, { 1 ,3,19,5,19 }, { 0 ,10,38,10,39 }, { 0 ,10,37,10,36 }, { 1 ,10,35,10,37 }, { 1 ,10,40,10,38 }, { 0 ,2,17,3,17 }, { 1 ,22,31,22,29 }, { 1 ,14,10,12,10 }, { 1 ,14,38,12,38 }, { 1 ,10,38,10,36 }, { 1 ,7,35,7,33 }, { 1 ,3,17,3,19 }, { 1 ,17,34,19,34 }, { 1 ,18,32,18,34 }, { 1 ,19,34,17,34 }, { 1 ,17,35,17,33 }, { 1 ,20,32,18,32 }, { 1 ,18,31,18,33 }, { 1 ,19,30,19,32 }, { 1 ,24,28,22,28 }, { 1 ,19,33,19,31 }, { 1 ,24,27,24,25 }, { 1 ,23,27,23,25 }, { 1 ,24,25,22,25 }, { 1 ,8,13,8,15 }, { 0 ,7,14,8,14 }, { 1 ,18,33,16,33 }, { 1 ,20,31,18,31 }, { 1 ,21,30,19,30 }, { 1 ,21,27,23,27 }, { 1 ,22,29,22,27 }, { 1 ,23,27,21,27 }, { 1 ,22,25,22,27 }, { 0 ,12,10,12,11 }, { 0 ,12,38,12,37 }, { 1 ,10,33,10,35 }, { 1 ,8,14,8,16 }, { 1 ,10,36,10,34 }, { 0 ,7,33,7,32 }, { 1 ,4,21,2,21 }, { 1 ,3,19,3,21 }, { 1 ,19,29,17,29 }, { 0 ,12,11,12,12 }, { 1 ,21,29,19,29 }, { 0 ,12,37,12,36 }, { 0 ,10,32,9,32 }, { 0 ,9,32,8,32 }, { 1 ,6,29,6,31 }, { 1 ,8,32,6,32 }, { 1 ,6,32,6,30 }, { 1 ,2,21,4,21 }, { 0 ,16,33,15,33 }, { 1 ,18,31,18,29 }, { 1 ,19,28,17,28 }, { 1 ,19,26,17,26 }, { 1 ,19,30,19,28 }, { 1 ,20,26,22,26 }, { 1 ,22,26,22,28 }, { 1 ,20,28,18,28 }, { 1 ,22,28,20,28 }, { 0 ,13,13,12,13 }, { 1 ,14,14,12,14 }, { 1 ,13,15,13,17 }, { 0 ,12,36,12,35 }, { 0 ,10,34,10,33 }, { 0 ,8,16,8,17 }, { 1 ,14,15,16,15 }, { 1 ,15,17,15,19 }, { 1 ,15,16,13,16 }, { 0 ,12,14,12,15 }, { 1 ,6,27,6,29 }, { 1 ,12,12,12,14 }, { 1 ,17,17,15,17 }, { 1 ,16,15,16,17 }, { 1 ,4,20,6,20 }, { 1 ,5,22,5,20 }, { 1 ,6,29,4,29 }, { 1 ,5,27,5,29 }, { 1 ,4,29,6,29 }, { 1 ,6,30,6,28 }, { 1 ,6,21,6,19 }, { 1 ,4,22,4,20 }, { 1 ,4,20,6,20 }, { 1 ,5,23,7,23 }, { 1 ,3,27,5,27 }, { 1 ,5,19,7,19 }, { 1 ,5,26,5,28 }, { 1 ,4,25,4,27 }, { 1 ,4,28,4,26 }, { 0 ,15,33,15,32 }, { 1 ,19,27,17,27 }, { 1 ,21,27,19,27 }, { 1 ,17,28,19,28 }, { 1 ,20,28,18,28 }, { 0 ,12,35,12,34 }, { 0 ,10,33,11,33 }, { 0 ,8,17,7,17 }, { 0 ,7,17,7,18 }, { 1 ,7,18,7,20 }, { 1 ,5,25,5,23 }, { 1 ,5,28,7,28 }, { 1 ,4,23,6,23 }, { 1 ,3,26,5,26 }, { 1 ,16,18,18,18 }, { 1 ,17,20,17,18 }, { 1 ,3,24,5,24 }, { 1 ,18,18,16,18 }, { 1 ,3,22,3,24 }, { 1 ,16,18,16,16 }, { 1 ,14,17,16,17 }, { 1 ,16,16,16,18 }, { 0 ,15,32,15,31 }, { 1 ,18,29,16,29 }, { 1 ,12,14,12,16 }, { 0 ,11,33,12,33 }, { 1 ,12,34,12,32 }, { 1 ,6,20,8,20 }, { 1 ,3,24,3,26 }, { 1 ,6,26,4,26 }, { 1 ,3,26,5,26 }, { 1 ,16,18,16,20 }, { 0 ,16,20,16,19 }, { 0 ,15,31,15,30 }, { 1 ,17,26,17,28 }, { 1 ,18,28,16,28 }, { 0 ,19,27,18,27 }, { 0 ,7,28,7,27 }, { 1 ,6,24,6,26 }, { 1 ,12,16,14,16 }, { 0 ,14,16,14,17 }, { 0 ,5,26,5,25 }, { 1 ,13,17,15,17 }, { 0 ,15,19,15,18 }, { 1 ,15,17,15,19 }, { 1 ,16,19,14,19 }, { 1 ,16,28,16,30 }, { 1 ,16,30,14,30 }, { 0 ,18,27,17,27 }, { 0 ,12,32,12,31 }, { 0 ,8,20,8,21 }, { 0 ,7,27,7,26 }, { 1 ,6,22,6,24 }, { 1 ,7,26,5,26 }, { 1 ,6,24,4,24 }, { 1 ,5,26,5,24 }, { 1 ,4,24,6,24 }, { 0 ,14,30,13,30 }, { 0 ,17,27,16,27 }, { 0 ,13,30,12,30 }, { 1 ,12,31,12,29 }, { 0 ,8,21,8,22 }, { 0 ,14,19,13,19 }, { 0 ,16,27,15,27 }, { 0 ,8,22,7,22 }, { 1 ,7,22,7,24 }, { 1 ,6,24,8,24 }, { 0 ,13,19,12,19 }, { 0 ,15,27,14,27 }, { 0 ,12,19,12,20 }, { 0 ,12,29,12,28 }, { 0 ,14,27,13,27 }, { 0 ,12,20,12,21 }, { 0 ,13,27,12,27 }, { 1 ,12,28,12,26 }, { 0 ,8,24,9,24 }, { 0 ,12,21,12,22 }, { 0 ,9,24,10,24 }, { 0 ,12,22,12,23 }, { 0 ,12,23,12,24 }, { 0 ,12,24,12,25 }, { 1 ,12,26,12,24 }, { 0 ,12,24,11,24 }, { 1 ,10,24,12,24 }, }; // ################### 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-->