// CC
// Nick Montfort
// April-May 2006  Philadelphia-Los Angeles

int appletWidth = 565;
int appletHeight = 565;
int fontHeight = 18;
int tock = 0;
int tick = 0;
int rest = 10;
int rate = 20;
int i = 0;
boolean rmode = false;
float nuhWide;
PFont font;

int pair[] = {
26,16,31,37,39,
9,27,19,18,31,
71,51,17,84,99,
53,62,94,40,26,

79,90,59,74,38,
91,76,82,53,64,
72,75,88,79,70,
55,67,58,41,89,

97,87,96,81,66,
70,60,80,92,2,
51,3,78,98,77,
85,80,39,95,99,

92,68,54,38,93,
90,94,87,97,95,
83,89,84,99,50,
86,31,92,85,97,

61,91,90,57,44,
96,88,98,97,29,
60,98,51,94,68,
73,52,20,36,42};

String w[] = {"bolo",
"bozo",
"byte",
"celeste",
"cello",
"cheviot",
"chicle",
"chico",
"chile",
"chinos",
"chiton",
"civil",
"coco",
"colitis",
"colon",
"combo",
"comedo",
"comestible",
"con",
"cope",
"cosmos",
"cote",
"coy",
"coyote",
"defensible",
"del",
"detective",
"detente",
"diesel",
"disco",
"distensible",
"divisible",
"dolmen",
"don",
"dos",
"dote",
"echo",
"eclipse",
"eh",
"extensible",
"fez",
"filipino",
"fin",
"flexible",
"folio",
"he",
"hotel",
"ibis",
"ion",
"kilo",
"libido",
"lid",
"limbo",
"limo",
"lo",
"me",
"meiosis",
"memento",
"memo",
"mestizo",
"mimesis",
"miscible",
"miso",
"mitosis",
"modem",
"mole",
"mote",
"oboe",
"ohm",
"ole",
"once",
"ostensible",
"pelvis",
"peso",
"pie",
"pixel",
"plebe",
"polio",
"polo",
"poncho",
"semen",
"silicosis",
"silo",
"simple",
"sin",
"so",
"sol",
"solo",
"son",
"soviet",
"temple",
"ten",
"tic",
"tilde",
"tome",
"vendible",
"veto",
"visible",
"volt",
"yen"};

void setup()
{
  size(appletWidth, appletHeight);
  framerate(rate);
  font = loadFont("ScalaSans-Caps-32.vlw");
  textFont(font, fontHeight);
}

void draw()
{
  background(0);
  int x, y;
  fill(50, 50, 50);
  for (x = 0; x < 5; x++ ) {
   for (y = 0; y < 20; y++ ) {
    text(w[(x*20)+y], 25 + x*110, 50 + y*25); }}
  int blockX = ((mouseX - 25) / 110);
  int blockY = ((mouseY - 40) / 25);
  if (blockX >= 0 && blockX <= 4 && blockY >= 0 && blockY <= 19) {
   i = (blockX * 20) + blockY;
   fill(255, 255, 50);
   text(w[i], 25 + (i/20)*110, 50 + (i%20)*25);
   int j=pair[i];
   text(w[j], 25 + (j/20)*110, 50 + (j%20)*25); }
}
