Script started on Sun May 05 18:58:30 1996Dave Shaffer% cat IQPuzzle1.java import java.awt.*; import java.applet.Applet; import java.net.*; public class IQPuzzle1 extends Applet { Frame window; MyWindow winnerwin; MyDial infowin; Completed_puzzle completed_puzzle; Uncompleted_puzzle uncompleted_puzzle; TextField statusline; TextField timeslot; String s; Button restartbutton; Choice newpuzzlebutton; Button showwinnersbutton; Button infobutton; Panel canvasPanel; URL theURL; public void init() { this.setBackground(Color.gray); setLayout(new FlowLayout()); Panel titlePanel = new Panel(); infobutton = new Button("Info"); titlePanel.add (infobutton); newpuzzlebutton = new Choice(); newpuzzlebutton.addItem("Puzzle1"); newpuzzlebutton.addItem("Puzzle2"); newpuzzlebutton.addItem("Puzzle3"); titlePanel.add (newpuzzlebutton); showwinnersbutton = (new Button("Show Winners")); titlePanel.add (showwinnersbutton); restartbutton = (new Button("ReStart")); titlePanel.add (restartbutton); setLayout(new FlowLayout()); canvasPanel = new Panel(); completed_puzzle = new Completed_puzzle(); completed_puzzle.setBackground(Color.yellow); uncompleted_puzzle = new Uncompleted_puzzle(this,s); uncompleted_puzzle.setBackground(Color.yellow); canvasPanel.add (completed_puzzle); canvasPanel.add (uncompleted_puzzle); setLayout(new FlowLayout()); Panel footerPanel = new Panel(); footerPanel.add(new Label("Status", Label.LEFT)); statusline = new TextField(s,40); timeslot =new TextField(" 00:00 "); statusline.setEditable(false); timeslot.setEditable(false); footerPanel.add(statusline); footerPanel.add(timeslot); setLayout(new BorderLayout()); this.add("North", titlePanel); this.add("Center", canvasPanel); this.add("South", footerPanel); } public boolean action(Event evt, Object arg) { if (evt.target == infobutton) { System.out.print(" Start button pressed\n"); infowin = new MyDial("Frame"); infowin.show(); return true; } if (evt.target == showwinnersbutton) { System.out.print(" show winners button pressed\n"); winnerwin = new MyWindow("Frame"); winnerwin.show(); return true; } if (evt.target == restartbutton) { System.out.print(" restart button pressed\n"); uncompleted_puzzle.restart(); return true; } if (evt.target == newpuzzlebutton) { if (newpuzzlebutton.getSelectedItem() == "Puzzle1") { return true; } if (newpuzzlebutton.getSelectedItem() == "Puzzle2") { String urladdress2 = "http://cs.millersv.edu/~dashaffe/java_progs/assign2/IQPuzzle2.html"; try {theURL = new URL(urladdress2);} catch (MalformedURLException e) {} getAppletContext().showDocument(theURL); return true; } if (newpuzzlebutton.getSelectedItem() == "Puzzle3") { String urladdress3 = "http://cs.millersv.edu/~dashaffe/java_progs/assign2/IQPuzzle3.html"; try {theURL = new URL(urladdress3);} catch (MalformedURLException e) {} getAppletContext().showDocument(theURL); return true; } } return true; } } class Completed_puzzle extends Canvas { public void paint(Graphics g) { int w = size().width; int h = size().height; g.drawRect(0, 0, w - 1, h - 1); g.drawString("Completed Puzzle", (w - g.getFontMetrics().stringWidth("Canvas"))/2, 10); g.setFont(new Font("Helvetica", Font.PLAIN, 8)); g.fillRect(100,25,4,4); g.fillRect(50,75,4,4); g.fillRect(150,75,4,4); g.fillRect(50,150,4,4); g.fillRect(150,150,4,4); g.drawLine(102,27,52,77); g.drawLine(102,27,152,77); g.drawLine(52,77,152,77); g.drawLine(52,77,52,152); g.drawLine(52,77,152,152); g.drawLine(152,77,152,152); g.drawLine(152,77,52,152); g.drawLine(52,152,152,152); } public Dimension minimumSize() { return new Dimension(200,200); } public Dimension preferredSize() { return minimumSize(); } } class Uncompleted_puzzle extends Canvas { final Point A = new Point(102,27); final Point B = new Point(52,77); final Point C = new Point(152,77); final Point D = new Point(52,152); final Point E = new Point(152,152); boolean Edge_A_B = false; boolean Edge_A_C = false; boolean Edge_B_C = false; boolean Edge_B_D = false; boolean Edge_B_E = false; boolean Edge_C_D = false; boolean Edge_C_E = false; boolean Edge_D_E = false; final int MAXLINES = 8; Point starts[] = new Point[MAXLINES]; Point ends[] = new Point[MAXLINES]; Point anchor = new Point(-1,-1); Point currentpoint; int currline = 0; Circle c; IQPuzzle1 outerparent; Uncompleted_puzzle(IQPuzzle1 target, String statmessage) { this.outerparent = target; } public void paint(Graphics g) { int w = size().width; int h = size().height; g.drawRect(0, 0, w - 1, h - 1); g.drawString("Solve Puzzle", (w - g.getFontMetrics().stringWidth("Canvas"))/2, 10); g.setFont(new Font("Helvetica", Font.PLAIN, 8)); g.fillRect(100,25,4,4); g.fillRect(50,75,4,4); g.fillRect(150,75,4,4); g.fillRect(50,150,4,4); g.fillRect(150,150,4,4); //draw existing lines for (int i= 0; i < currline; i++) { g.drawLine(starts[i].x, starts[i].y, ends[i].x, ends[i].y); } //draw current line if (currentpoint != null) g.drawLine(anchor.x,anchor.y ,currentpoint.x ,currentpoint.y); } public void restart() { Edge_A_B = false; Edge_A_C = false; Edge_B_C = false; Edge_B_D = false; Edge_B_E = false; Edge_C_D = false; Edge_C_E = false; Edge_D_E = false; currline = 0; anchor.x = -1; anchor.y = -1; currentpoint = null; String s; s = " "; showMessage(s); repaint(); } public boolean mouseUp(Event evt, int x, int y) { c = new Circle(); int userpoint = c.check((double)x,(double)y); if (userpoint > 0) { if (userpoint == 1) { x = 102; y = 27; } else if (userpoint == 2) { x = 52; y = 77; } else if (userpoint == 3) { x = 152; y = 77; } else if (userpoint == 4) { x = 52; y = 152; } else if (userpoint == 5) { x = 152; y = 152; } if (anchor.x == -1) { // first point anchor.x = x; anchor.y = y; String s; s = " "; showMessage(s); return true; } else { currentpoint = new Point(x,y); if (check_line(anchor,currentpoint)) { String s; s = " "; showMessage(s); addline(x,y); return true; } else { currentpoint = null; String s; s = "Cannot draw that line"; showMessage(s); System.out.print(" bad line\n"); return true; } } } else { String s; s = "Click on a valid point"; showMessage(s); System.out.print(" bad point\n"); return true; } } boolean check_line (Point anchor, Point end) { if ((anchor.x == A.x) && (anchor.y == A.y)) { if ((end.x == B.x)&&(end.y == B.y)) { if (Edge_A_B == false) { Edge_A_B = true; return true; } else { return false; } } if ((end.x==C.x)&&(end.y==C.y)) { if (Edge_A_C == false) { Edge_A_C = true; return true; } else { return false; } } } // end outermost if else if ((anchor.x == B.x) && (anchor.y == B.y)) { if ((end.x == A.x)&&(end.y == A.y)) { if (Edge_A_B == false) { Edge_A_B = true; return true; } else { return false; } } if ((end.x==C.x)&&(end.y==C.y)) { if (Edge_B_C == false) { Edge_B_C = true; return true; } else { return false; } } if ((end.x == D.x)&&(end.y == D.y)) { if (Edge_B_D == false) { Edge_B_D = true; return true; } else { return false; } } if ((end.x==E.x)&&(end.y==E.y)) { if (Edge_B_E == false) { Edge_B_E = true; return true; } else { return false; } } } // end else if else if ((anchor.x == C.x) && (anchor.y == C.y)) { if ((end.x == A.x)&&(end.y == A.y)) { if (Edge_A_C == false) { Edge_A_C = true; return true; } else { return false; } } if ((end.x==B.x)&&(end.y==B.y)) { if (Edge_B_C == false) { Edge_B_C = true; return true; } else { return false; } } if ((end.x == D.x)&&(end.y == D.y)) { if (Edge_C_D == false) { Edge_C_D = true; return true; } else { return false; } } if ((end.x==E.x)&&(end.y==E.y)) { if (Edge_C_E == false) { Edge_C_E = true; return true; } else { return false; } } } // end else if else if ((anchor.x == D.x) && (anchor.y == D.y)) { if ((end.x==B.x)&&(end.y==B.y)) { if (Edge_B_D == false) { Edge_B_D = true; return true; } else { return false; } } if ((end.x == C.x)&&(end.y == C.y)) { if (Edge_C_D == false) { Edge_C_D = true; return true; } else { return false; } } if ((end.x==E.x)&&(end.y==E.y)) { if (Edge_D_E == false) { Edge_D_E = true; return true; } else { return false; } } } // end else if else if ((anchor.x == E.x) && (anchor.y == E.y)) { if ((end.x==B.x)&&(end.y==B.y)) { if (Edge_B_E == false) { Edge_B_E = true; return true; } else { return false; } } if ((end.x == C.x)&&(end.y == C.y)) { if (Edge_C_E == false) { Edge_C_E = true; return true; } else { return false; } } if ((end.x==D.x)&&(end.y==D.y)) { if (Edge_D_E == false) { Edge_D_E = true; return true; } else { return false; } } } return false; } void showMessage (String message) { outerparent.statusline.setText(message); } void addline (int x, int y) { starts[currline] = anchor; ends[currline] = new Point(x,y); currline++; repaint(); anchor = currentpoint; if (currline == MAXLINES) { String s; s = "CONGRATULATIONS!!! Puzzle Solved "; showMessage(s); } } public Dimension minimumSize() { return new Dimension(200,200); } public Dimension preferredSize() { return minimumSize(); } } class Circle { final Point A = new Point(102,27); final Point B = new Point(52,77); final Point C = new Point(152,77); final Point D = new Point(52,152); final Point E = new Point(152,152); public Circle() { } double r = 5.0; // is point (a,b) inside this circle? public int check(double a, double b) { if (isInside(a,b,A)) return 1; if (isInside(a,b,B)) return 2; if (isInside(a,b,C)) return 3; if (isInside(a,b,D)) return 4; if (isInside(a,b,E)) return 5; return 0; } public boolean isInside(double a, double b,Point thepoint) { double dx = a - thepoint.x; double dy = b - thepoint.y; double distance = Math.sqrt(dx*dx + dy*dy); if (distance < r) return true; else return false; } } Dave Shaffer% Dave Shaffer% Dave Shaffer% Dave Shaffer% cat IQPuzzle2.java import java.awt.*; import java.applet.Applet; import java.net.*; public class IQPuzzle2 extends Applet { Frame window; MyWindow winnerwin; MyDial infowin; Completed_puzzle2 completed_puzzle2; Uncompleted_puzzle2 uncompleted_puzzle2; TextField statusline; TextField timeslot; String s; Button restartbutton; Choice newpuzzlebutton; Button showwinnersbutton; Button infobutton; Panel canvasPanel; URL theURL; public void init() { this.setBackground(Color.gray); setLayout(new FlowLayout()); Panel titlePanel = new Panel(); infobutton = new Button("Info"); titlePanel.add (infobutton); newpuzzlebutton = new Choice(); newpuzzlebutton.addItem("Puzzle1"); newpuzzlebutton.addItem("Puzzle2"); newpuzzlebutton.addItem("Puzzle3"); titlePanel.add (newpuzzlebutton); showwinnersbutton = (new Button("Show Winners")); titlePanel.add (showwinnersbutton); restartbutton = (new Button("ReStart")); titlePanel.add (restartbutton); setLayout(new FlowLayout()); canvasPanel = new Panel(); completed_puzzle2 = new Completed_puzzle2(); completed_puzzle2.setBackground(Color.yellow); uncompleted_puzzle2 = new Uncompleted_puzzle2(this,s); uncompleted_puzzle2.setBackground(Color.yellow); canvasPanel.add (completed_puzzle2); canvasPanel.add (uncompleted_puzzle2); setLayout(new FlowLayout()); Panel footerPanel = new Panel(); footerPanel.add(new Label("Status", Label.LEFT)); statusline = new TextField(s,40); timeslot =new TextField(" 00:00 "); statusline.setEditable(false); timeslot.setEditable(false); footerPanel.add(statusline); footerPanel.add(timeslot); setLayout(new BorderLayout()); this.add("North", titlePanel); this.add("Center", canvasPanel); this.add("South", footerPanel); } public boolean action(Event evt, Object arg) { if (evt.target == infobutton) { System.out.print(" Start button pressed\n"); infowin = new MyDial("Frame"); infowin.show();; return true; } if (evt.target == showwinnersbutton) { System.out.print(" show winners button pressed\n"); winnerwin = new MyWindow("Frame"); winnerwin.show(); return true; } if (evt.target == restartbutton) { System.out.print(" restart button pressed\n"); uncompleted_puzzle2.restart(); return true; } if (evt.target == newpuzzlebutton) { System.out.print(" new puzzle button pressed\n"); if (newpuzzlebutton.getSelectedItem() == "Puzzle2") { return true; } if (newpuzzlebutton.getSelectedItem() == "Puzzle1") { String urladdress2 = "http://cs.millersv.edu/~dashaffe/java_progs/assign2/IQPuzzle1.html"; try {theURL = new URL(urladdress2);} catch (MalformedURLException e) {} getAppletContext().showDocument(theURL); return true; } if (newpuzzlebutton.getSelectedItem() == "Puzzle3") { String urladdress1 = "http://cs.millersv.edu/~dashaffe/java_progs/assign2/IQPuzzle3.html"; try {theURL = new URL(urladdress1);} catch (MalformedURLException e) {} getAppletContext().showDocument(theURL); return true; } } return true; } // public void start(){ // //Create a window with a menu at the top. // window = new MyWindow("Dave's Little App"); // window.pack(); // Rectangle bounds = bounds(); // Rectangle wbounds = window.bounds(); // //window.move(bounds.x + (bounds.width - wbounds.width)/2, // //bounds.y + (bounds.height - wbounds.height)/2); // window.move(bounds.x + bounds.width + 15, bounds.y); // window.show(); // } } //class MyWindow extends Frame { // final String FILEDIALOGMENUITEM = "File dialog..."; // MyWindow(String title) { // super("Dave's Little App"); // MenuBar mb = new MenuBar(); // Menu m = new Menu("Menu"); // m.add(new MenuItem("Cars")); // m.add(new CheckboxMenuItem("Women")); // m.add(new MenuItem("More Women")); // m.add(new MenuItem("-")); // m.add(new MenuItem(FILEDIALOGMENUITEM)); // mb.add(m); // setMenuBar(mb); // MenuBar mb2 = new MenuBar(); // Menu m2 = new Menu("People"); // m2.add(new MenuItem("Chris")); // m2.add(new CheckboxMenuItem("Dave")); // m2.add(new MenuItem("Beavis")); // m2.add(new MenuItem("Butt-Head")); // m2.add(new MenuItem("Nikki")); // mb2.add(m2); // setMenuBar(mb2); // //Put a list in the window. // List l = new List(3, false); // l.addItem("List item 1"); // l.addItem("List item 2"); // l.addItem("List item 3"); // l.addItem("List item 4"); // l.addItem("List item 5"); // l.addItem("List item 6"); // l.addItem("List item 7"); // add("Center", l); // } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class Completed_puzzle2 extends Canvas { public void paint(Graphics g) { int w = size().width; int h = size().height; g.drawRect(0, 0, w - 1, h - 1); g.drawString("Completed Puzzle", (w - g.getFontMetrics().stringWidth("Canvas"))/2, 10); g.setFont(new Font("Helvetica", Font.PLAIN, 32)); g.fillRect(25,30,4,4); g.fillRect(50,30,4,4); g.fillRect(100,30,4,4); g.fillRect(150,30,4,4); g.fillRect(175,30,4,4); g.fillRect(75,65,4,4); g.fillRect(125,65,4,4); g.fillRect(50,100,4,4); g.fillRect(150,100,4,4); g.fillRect(75,135,4,4); g.fillRect(125,135,4,4); g.fillRect(25,170,4,4); g.fillRect(50,170,4,4); g.fillRect(100,170,4,4); g.fillRect(150,170,4,4); g.fillRect(175,170,4,4); g.drawLine(27,32,27,170); g.drawLine(27,32,52,32); g.drawLine(52,32,102,32); g.drawLine(52,32,52,102); g.drawLine(52,32,77,67); g.drawLine(102,32,152,32); g.drawLine(102,32,77,67); g.drawLine(102,32,127,67); g.drawLine(152,32,177,32); g.drawLine(152,32,127,67); g.drawLine(152,32,152,102); g.drawLine(177,32,177,172); g.drawLine(77,67,127,67); g.drawLine(77,67,52,102); g.drawLine(77,67,77,137); g.drawLine(127,67,152,102); g.drawLine(127,67,127,137); g.drawLine(52,102,77,137); g.drawLine(52,102,52,172); g.drawLine(77,137,127,137); g.drawLine(77,137,52,172); g.drawLine(77,137,102,172); g.drawLine(127,137,152,100); g.drawLine(127,137,102,172); g.drawLine(127,137,152,172); g.drawLine(152,102,152,172); g.drawLine(27,172,52,172); g.drawLine(52,172,102,172); g.drawLine(102,172,152,172); g.drawLine(152,172,177,172); g.drawLine(77,67,127,137); g.drawLine(127,67,77,137); } public Dimension minimumSize() { return new Dimension(200,200); } public Dimension preferredSize() { return minimumSize(); } } class Uncompleted_puzzle2 extends Canvas { final Point A = new Point(27,32); final Point B = new Point(52,32); final Point C = new Point(102,32); final Point D = new Point(152,32); final Point E = new Point(177,32); final Point F = new Point(77,67); final Point G = new Point(127,67); final Point H = new Point(52,102); final Point I = new Point(152,102); final Point J = new Point(77,137); final Point K = new Point(127,137); final Point L = new Point(27,172); final Point M = new Point(52,172); final Point N = new Point(102,172); final Point O = new Point(152,172); final Point P = new Point(177,172); boolean Edge_A_B = false; boolean Edge_A_L = false; boolean Edge_B_C = false; boolean Edge_B_H = false; boolean Edge_B_F = false; boolean Edge_C_D = false; boolean Edge_C_F = false; boolean Edge_C_G = false; boolean Edge_D_E = false; boolean Edge_D_G = false; boolean Edge_D_I = false; boolean Edge_E_P = false; boolean Edge_F_H = false; boolean Edge_F_J = false; boolean Edge_F_K = false; boolean Edge_F_G = false; boolean Edge_G_J = false; boolean Edge_G_K = false; boolean Edge_G_I = false; boolean Edge_H_J = false; boolean Edge_H_M = false; boolean Edge_I_K = false; boolean Edge_I_O = false; boolean Edge_J_K = false; boolean Edge_J_M = false; boolean Edge_J_N = false; boolean Edge_K_N = false; boolean Edge_K_O = false; boolean Edge_L_M = false; boolean Edge_M_N = false; boolean Edge_N_O = false; boolean Edge_O_P = false; final int MAXLINES = 32; Point starts[] = new Point[MAXLINES]; Point ends[] = new Point[MAXLINES]; Point anchor = new Point(-1,-1); Point currentpoint; int currline = 0; Circle2 c; IQPuzzle2 outerparent; Uncompleted_puzzle2(IQPuzzle2 target, String statmessage) { this.outerparent = target; } public void paint(Graphics g) { int w = size().width; int h = size().height; g.drawRect(0, 0, w - 1, h - 1); g.drawString("Solve Puzzle", (w - g.getFontMetrics().stringWidth("Canvas"))/2, 10); g.setFont(new Font("Helvetica", Font.PLAIN, 32)); g.fillRect(25,30,4,4); g.fillRect(50,30,4,4); g.fillRect(100,30,4,4); g.fillRect(150,30,4,4); g.fillRect(175,30,4,4); g.fillRect(75,65,4,4); g.fillRect(125,65,4,4); g.fillRect(50,100,4,4); g.fillRect(150,100,4,4); g.fillRect(75,135,4,4); g.fillRect(125,135,4,4); g.fillRect(25,170,4,4); g.fillRect(50,170,4,4); g.fillRect(100,170,4,4); g.fillRect(150,170,4,4); g.fillRect(175,170,4,4); //draw existing lines for (int i= 0; i < currline; i++) { g.drawLine(starts[i].x, starts[i].y, ends[i].x, ends[i].y); } //draw current line if (currentpoint != null) g.drawLine(anchor.x,anchor.y ,currentpoint.x ,currentpoint.y); } public void restart() { Edge_A_B = false; Edge_A_L = false; Edge_B_C = false; Edge_B_H = false; Edge_B_F = false; Edge_C_D = false; Edge_C_F = false; Edge_C_G = false; Edge_D_E = false; Edge_D_G = false; Edge_D_I = false; Edge_E_P = false; Edge_F_H = false; Edge_F_J = false; Edge_F_K = false; Edge_F_G = false; Edge_G_J = false; Edge_G_K = false; Edge_G_I = false; Edge_H_J = false; Edge_H_M = false; Edge_I_K = false; Edge_I_O = false; Edge_J_K = false; Edge_J_M = false; Edge_J_N = false; Edge_K_N = false; Edge_K_O = false; Edge_L_M = false; Edge_M_N = false; Edge_N_O = false; Edge_O_P = false; currline = 0; anchor.x = -1; anchor.y = -1; currentpoint = null; String s; s = " "; showMessage(s); repaint(); } public boolean mouseUp(Event evt, int x, int y) { c = new Circle2(); int userpoint = c.check((double)x,(double)y); if (userpoint > 0) { if (userpoint == 1) { x = 27; y = 32; } else if (userpoint == 2) { x = 52; y = 32; } else if (userpoint == 3) { x = 102; y = 32; } else if (userpoint == 4) { x = 152; y = 32; } else if (userpoint == 5) { x = 177; y = 32; } else if (userpoint == 6) { x = 77; y = 67; } else if (userpoint == 7) { x = 127; y = 67; } else if (userpoint == 8) { x = 52; y = 102; } else if (userpoint == 9) { x = 152; y = 102; } else if (userpoint == 10) { x = 77; y = 137; } else if (userpoint == 11) { x = 127; y = 137; } else if (userpoint == 12) { x = 27; y = 172; } else if (userpoint == 13) { x = 52; y = 172; } else if (userpoint == 14) { x = 102; y = 172; } else if (userpoint == 15) { x = 152; y = 172; } else if (userpoint == 16) { x = 177; y = 172; } if (anchor.x == -1) { // first point anchor.x = x; anchor.y = y; String s; s = " "; showMessage(s); return true; } else { currentpoint = new Point(x,y); if (check_line(anchor,currentpoint)) { String s; s = " "; showMessage(s); addline(x,y); return true; } else { currentpoint = null; String s; s = "Cannot draw that line"; showMessage(s); System.out.print(" bad line\n"); return true; } } } else { String s; s = "Click on a valid point"; showMessage(s); System.out.print(" bad point\n"); return true; } } boolean check_line (Point anchor, Point end) { if ((anchor.x == A.x) && (anchor.y == A.y)) { if ((end.x == B.x)&&(end.y == B.y)) { if (Edge_A_B == false) { Edge_A_B = true; return true; } else { return false; } } if ((end.x==L.x)&&(end.y==L.y)) { if (Edge_A_L == false) { Edge_A_L = true; return true; } else { return false; } } } // end outermost if else if ((anchor.x == B.x) && (anchor.y == B.y)) { if ((end.x == A.x)&&(end.y == A.y)) { if (Edge_A_B == false) { Edge_A_B = true; return true; } else { return false; } } if ((end.x==C.x)&&(end.y==C.y)) { if (Edge_B_C == false) { Edge_B_C = true; return true; } else { return false; } } if ((end.x == H.x)&&(end.y == H.y)) { if (Edge_B_H == false) { Edge_B_H = true; return true; } else { return false; } } if ((end.x==F.x)&&(end.y==F.y)) { if (Edge_B_F == false) { Edge_B_F = true; return true; } else { return false; } } } // end else if else if ((anchor.x == C.x) && (anchor.y == C.y)) { if ((end.x == B.x)&&(end.y == B.y)) { if (Edge_B_C == false) { Edge_B_C = true; return true; } else { return false; } } if ((end.x==D.x)&&(end.y==D.y)) { if (Edge_C_D == false) { Edge_C_D = true; return true; } else { return false; } } if ((end.x == F.x)&&(end.y == F.y)) { if (Edge_C_F == false) { Edge_C_F = true; return true; } else { return false; } } if ((end.x==G.x)&&(end.y==G.y)) { if (Edge_C_G == false) { Edge_C_G = true; return true; } else { return false; } } } // end else if else if ((anchor.x == D.x) && (anchor.y == D.y)) { if ((end.x == C.x)&&(end.y == C.y)) { if (Edge_C_D == false) { Edge_C_D = true; return true; } else { return false; } } if ((end.x==E.x)&&(end.y==E.y)) { if (Edge_D_E == false) { Edge_D_E = true; return true; } else { return false; } } if ((end.x == G.x)&&(end.y == G.y)) { if (Edge_D_G == false) { Edge_D_G = true; return true; } else { return false; } } if ((end.x==I.x)&&(end.y==I.y)) { if (Edge_D_I == false) { Edge_D_I = true; return true; } else { return false; } } } // end else if else if ((anchor.x == E.x) && (anchor.y == E.y)) { if ((end.x==D.x)&&(end.y==D.y)) { if (Edge_D_E == false) { Edge_D_E = true; return true; } else { return false; } } if ((end.x == P.x)&&(end.y == P.y)) { if (Edge_E_P == false) { Edge_E_P = true; return true; } else { return false; } } } // end else if else if ((anchor.x == F.x) && (anchor.y == F.y)) { if ((end.x==B.x)&&(end.y==B.y)) { if (Edge_B_F == false) { Edge_B_F = true; return true; } else { return false; } } if ((end.x == C.x)&&(end.y == C.y)) { if (Edge_C_F == false) { Edge_C_F = true; return true; } else { return false; } } if ((end.x==H.x)&&(end.y==H.y)) { if (Edge_F_H == false) { Edge_F_H = true; return true; } else { return false; } } if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_F_J == false) { Edge_F_J = true; return true; } else { return false; } } if ((end.x==K.x)&&(end.y==K.y)) { if (Edge_F_K == false) { Edge_F_K = true; return true; } else { return false; } } if ((end.x == G.x)&&(end.y == G.y)) { if (Edge_F_G == false) { Edge_F_G = true; return true; } else { return false; } } } else if ((anchor.x == G.x) && (anchor.y == G.y)) { if ((end.x==C.x)&&(end.y==C.y)) { if (Edge_C_G == false) { Edge_C_G = true; return true; } else { return false; } } if ((end.x == D.x)&&(end.y == D.y)) { if (Edge_D_G == false) { Edge_D_G = true; return true; } else { return false; } } if ((end.x==F.x)&&(end.y==F.y)) { if (Edge_F_G == false) { Edge_F_G = true; return true; } else { return false; } } if ((end.x == I.x)&&(end.y == I.y)) { if (Edge_G_I == false) { Edge_G_I = true; return true; } else { return false; } } if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_G_J == false) { Edge_G_J = true; return true; } else { return false; } } if ((end.x == K.x)&&(end.y == K.y)) { if (Edge_G_K == false) { Edge_G_K = true; return true; } else { return false; } } } else if ((anchor.x == H.x) && (anchor.y == H.y)) { if ((end.x == B.x)&&(end.y == B.y)) { if (Edge_B_H == false) { Edge_B_H = true; return true; } else { return false; } } if ((end.x==F.x)&&(end.y==F.y)) { if (Edge_F_H == false) { Edge_F_H = true; return true; } else { return false; } } if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_H_J == false) { Edge_H_J = true; return true; } else { return false; } } if ((end.x==M.x)&&(end.y==M.y)) { if (Edge_H_M == false) { Edge_H_M = true; return true; } else { return false; } } } // end else if else if ((anchor.x == I.x) && (anchor.y == I.y)) { if ((end.x == D.x)&&(end.y == D.y)) { if (Edge_D_I == false) { Edge_D_I = true; return true; } else { return false; } } if ((end.x==G.x)&&(end.y==G.y)) { if (Edge_G_I == false) { Edge_G_I = true; return true; } else { return false; } } if ((end.x == K.x)&&(end.y == K.y)) { if (Edge_I_K == false) { Edge_I_K = true; return true; } else { return false; } } if ((end.x==O.x)&&(end.y==O.y)) { if (Edge_I_O == false) { Edge_I_O = true; return true; } else { return false; } } } // end else if else if ((anchor.x == J.x) && (anchor.y == J.y)) { if ((end.x==F.x)&&(end.y==F.y)) { if (Edge_F_J == false) { Edge_F_J = true; return true; } else { return false; } } if ((end.x == G.x)&&(end.y == G.y)) { if (Edge_G_J == false) { Edge_G_J = true; return true; } else { return false; } } if ((end.x==H.x)&&(end.y==H.y)) { if (Edge_H_J == false) { Edge_H_J = true; return true; } else { return false; } } if ((end.x == K.x)&&(end.y == K.y)) { if (Edge_J_K == false) { Edge_J_K = true; return true; } else { return false; } } if ((end.x == M.x)&&(end.y == M.y)) { if (Edge_J_M == false) { Edge_J_M = true; return true; } else { return false; } } if ((end.x == N.x)&&(end.y == N.y)) { if (Edge_J_N == false) { Edge_J_N = true; return true; } else { return false; } } } else if ((anchor.x == K.x) && (anchor.y == K.y)) { if ((end.x==F.x)&&(end.y==F.y)) { if (Edge_F_K == false) { Edge_F_K = true; return true; } else { return false; } } if ((end.x == G.x)&&(end.y == G.y)) { if (Edge_G_K == false) { Edge_G_K = true; return true; } else { return false; } } if ((end.x==I.x)&&(end.y==I.y)) { if (Edge_I_K == false) { Edge_I_K = true; return true; } else { return false; } } if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_J_K == false) { Edge_J_K = true; return true; } else { return false; } } if ((end.x == N.x)&&(end.y == N.y)) { if (Edge_K_N == false) { Edge_K_N = true; return true; } else { return false; } } if ((end.x == O.x)&&(end.y == O.y)) { if (Edge_K_O == false) { Edge_K_O = true; return true; } else { return false; } } } else if ((anchor.x == L.x) && (anchor.y == L.y)) { if ((end.x==A.x)&&(end.y==A.y)) { if (Edge_A_L == false) { Edge_A_L = true; return true; } else { return false; } } if ((end.x == M.x)&&(end.y == M.y)) { if (Edge_L_M == false) { Edge_L_M = true; return true; } else { return false; } } } // end else if else if ((anchor.x == M.x) && (anchor.y == M.y)) { if ((end.x == H.x)&&(end.y == H.y)) { if (Edge_H_M == false) { Edge_H_M = true; return true; } else { return false; } } if ((end.x==J.x)&&(end.y==J.y)) { if (Edge_J_M == false) { Edge_J_M = true; return true; } else { return false; } } if ((end.x == L.x)&&(end.y == L.y)) { if (Edge_L_M == false) { Edge_L_M = true; return true; } else { return false; } } if ((end.x==N.x)&&(end.y==N.y)) { if (Edge_M_N == false) { Edge_M_N= true; return true; } else { return false; } } } // end else if else if ((anchor.x == N.x) && (anchor.y == N.y)) { if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_J_N == false) { Edge_J_N = true; return true; } else { return false; } } if ((end.x==K.x)&&(end.y==K.y)) { if (Edge_K_N == false) { Edge_K_N = true; return true; } else { return false; } } if ((end.x == M.x)&&(end.y == M.y)) { if (Edge_M_N == false) { Edge_M_N = true; return true; } else { return false; } } if ((end.x==O.x)&&(end.y==O.y)) { if (Edge_N_O == false) { Edge_N_O= true; return true; } else { return false; } } } // end else if else if ((anchor.x == O.x) && (anchor.y == O.y)) { if ((end.x == I.x)&&(end.y == I.y)) { if (Edge_I_O == false) { Edge_I_O = true; return true; } else { return false; } } if ((end.x==K.x)&&(end.y==K.y)) { if (Edge_K_O == false) { Edge_K_O = true; return true; } else { return false; } } if ((end.x == N.x)&&(end.y == N.y)) { if (Edge_N_O == false) { Edge_N_O = true; return true; } else { return false; } } if ((end.x==P.x)&&(end.y==P.y)) { if (Edge_O_P == false) { Edge_O_P= true; return true; } else { return false; } } } // end else if else if ((anchor.x == P.x) && (anchor.y == P.y)) { if ((end.x==E.x)&&(end.y==E.y)) { if (Edge_E_P == false) { Edge_E_P = true; return true; } else { return false; } } if ((end.x == O.x)&&(end.y == O.y)) { if (Edge_O_P == false) { Edge_O_P = true; return true; } else { return false; } } } // end else if return false; } void showMessage (String message) { outerparent.statusline.setText(message); } void addline (int x, int y) { starts[currline] = anchor; ends[currline] = new Point(x,y); currline++; repaint(); anchor = currentpoint; if (currline == MAXLINES) { String s; s = "CONGRATULATIONS!!! Puzzle Solved "; showMessage(s); } } public Dimension minimumSize() { return new Dimension(200,200); } public Dimension preferredSize() { return minimumSize(); } } class Circle2{ final Point A = new Point(27,32); final Point B = new Point(52,32); final Point C = new Point(102,32); final Point D = new Point(152,32); final Point E = new Point(177,32); final Point F = new Point(77,67); final Point G = new Point(127,67); final Point H = new Point(52,102); final Point I = new Point(152,102); final Point J = new Point(77,137); final Point K = new Point(127,137); final Point L = new Point(27,172); final Point M = new Point(52,172); final Point N = new Point(102,172); final Point O = new Point(152,172); final Point P = new Point(177,172); public Circle2() { } double r = 5.0; // is point (a,b) inside this circle? public int check(double a, double b) { if (isInside(a,b,A)) return 1; if (isInside(a,b,B)) return 2; if (isInside(a,b,C)) return 3; if (isInside(a,b,D)) return 4; if (isInside(a,b,E)) return 5; if (isInside(a,b,F)) return 6; if (isInside(a,b,G)) return 7; if (isInside(a,b,H)) return 8; if (isInside(a,b,I)) return 9; if (isInside(a,b,J)) return 10; if (isInside(a,b,K)) return 11; if (isInside(a,b,L)) return 12; if (isInside(a,b,M)) return 13; if (isInside(a,b,N)) return 14; if (isInside(a,b,O)) return 15; if (isInside(a,b,P)) return 16; return 0; } public boolean isInside(double a, double b,Point thepoint) { double dx = a - thepoint.x; double dy = b - thepoint.y; double distance = Math.sqrt(dx*dx + dy*dy); if (distance < r) return true; else return false; } } Dave Shaffer% Dave Shaffer% Dave Shaffer% Dave Shaffer% cat IQPuzzle3.java import java.awt.*; import java.applet.Applet; import java.net.*; public class IQPuzzle3 extends Applet { Frame window; MyWindow winnerwin; MyDial infowin; Completed_puzzle3 completed_puzzle3; Uncompleted_puzzle3 uncompleted_puzzle3; TextField statusline; TextField timeslot; String s; Button restartbutton; Choice newpuzzlebutton; Button showwinnersbutton; Button infobutton; Panel canvasPanel; URL theURL; public void init() { this.setBackground(Color.gray); setLayout(new FlowLayout()); Panel titlePanel = new Panel(); infobutton = new Button("Info"); titlePanel.add (infobutton); newpuzzlebutton = new Choice(); newpuzzlebutton.addItem("Puzzle1"); newpuzzlebutton.addItem("Puzzle2"); newpuzzlebutton.addItem("Puzzle3"); titlePanel.add (newpuzzlebutton); showwinnersbutton = (new Button("Show Winners")); titlePanel.add (showwinnersbutton); restartbutton = (new Button("ReStart")); titlePanel.add (restartbutton); setLayout(new FlowLayout()); canvasPanel = new Panel(); completed_puzzle3 = new Completed_puzzle3(); completed_puzzle3.setBackground(Color.yellow); uncompleted_puzzle3 = new Uncompleted_puzzle3(this,s); uncompleted_puzzle3.setBackground(Color.yellow); canvasPanel.add (completed_puzzle3); canvasPanel.add (uncompleted_puzzle3); setLayout(new FlowLayout()); Panel footerPanel = new Panel(); footerPanel.add(new Label("Status", Label.LEFT)); statusline = new TextField(s,40); timeslot =new TextField(" 00:00 "); statusline.setEditable(false); timeslot.setEditable(false); footerPanel.add(statusline); footerPanel.add(timeslot); setLayout(new BorderLayout()); this.add("North", titlePanel); this.add("Center", canvasPanel); this.add("South", footerPanel); } public boolean action(Event evt, Object arg) { if (evt.target == infobutton) { System.out.print(" Start button pressed\n"); infowin = new MyDial("Frame"); infowin.show(); return true; } if (evt.target == showwinnersbutton) { System.out.print(" show winners button pressed\n"); winnerwin = new MyWindow("Frame"); winnerwin.show(); return true; } if (evt.target == restartbutton) { System.out.print(" restart button pressed\n"); uncompleted_puzzle3.restart(); return true; } if (evt.target == newpuzzlebutton) { System.out.print(" new puzzle button pressed\n"); if (newpuzzlebutton.getSelectedItem() == "Puzzle3") { return true; } if (newpuzzlebutton.getSelectedItem() == "Puzzle2") { String urladdress2 = "http://cs.millersv.edu/~dashaffe/java_progs/assign2/IQPuzzle2.html"; try {theURL = new URL(urladdress2);} catch (MalformedURLException e) {} getAppletContext().showDocument(theURL); return true; } if (newpuzzlebutton.getSelectedItem() == "Puzzle1") { String urladdress1 = "http://cs.millersv.edu/~dashaffe/java_progs/assign2/IQPuzzle1.html"; try {theURL = new URL(urladdress1);} catch (MalformedURLException e) {} getAppletContext().showDocument(theURL); return true; } } return true; } } class Completed_puzzle3 extends Canvas { public void paint(Graphics g) { int w = size().width; int h = size().height; g.drawRect(0, 0, w - 1, h - 1); g.drawString("Completed Puzzle", (w - g.getFontMetrics().stringWidth("Canvas"))/2, 10); g.setFont(new Font("Helvetica", Font.PLAIN, 8)); g.fillRect(50,10,4,4); g.fillRect(190,10,4,4); g.fillRect(10,60,4,4); g.fillRect(150,60,4,4); g.fillRect(30,90,4,4); g.fillRect(170,90,4,4); g.fillRect(50,140,4,4); g.fillRect(190,140,4,4); g.fillRect(10,190,4,4); g.fillRect(150,190,4,4); g.drawLine(52,12,192,12); g.drawLine(52,12,12,62); g.drawLine(52,12,32,92); g.drawLine(52,12,52,142); g.drawLine(192,12,152,62); g.drawLine(192,12,172,92); g.drawLine(192,12,192,142); g.drawLine(12,62,152,62); g.drawLine(12,62,32,92); g.drawLine(12,62,12,192); g.drawLine(152,62,172,92); g.drawLine(152,62,152,192); g.drawLine(32,92,52,142); g.drawLine(32,92,12,192); g.drawLine(172,92,192,142); g.drawLine(172,92,152,192); g.drawLine(52,142,192,142); g.drawLine(52,142,10,192); g.drawLine(190,142,152,192); g.drawLine(12,192,152,192); } public Dimension minimumSize() { return new Dimension(200,200); } public Dimension preferredSize() { return minimumSize(); } } class Uncompleted_puzzle3 extends Canvas { final Point A = new Point(52,12); final Point B = new Point(192,12); final Point C = new Point(12,62); final Point D = new Point(152,62); final Point E = new Point(32,92); final Point F = new Point(172,92); final Point G = new Point(52,142); final Point H = new Point(192,142); final Point I = new Point(12,192); final Point J = new Point(152,192); boolean Edge_A_B = false; boolean Edge_A_C = false; boolean Edge_A_E = false; boolean Edge_A_G = false; boolean Edge_B_D = false; boolean Edge_B_F = false; boolean Edge_B_H = false; boolean Edge_C_D = false; boolean Edge_C_E = false; boolean Edge_C_I = false; boolean Edge_D_F = false; boolean Edge_D_J = false; boolean Edge_E_G = false; boolean Edge_E_I = false; boolean Edge_F_H = false; boolean Edge_F_J = false; boolean Edge_G_H = false; boolean Edge_G_I = false; boolean Edge_H_J = false; boolean Edge_I_J = false; final int MAXLINES = 20; Point starts[] = new Point[MAXLINES]; Point ends[] = new Point[MAXLINES]; Point anchor = new Point(-1,-1); Point currentpoint; int currline = 0; Circle3 c; IQPuzzle3 outerparent; Uncompleted_puzzle3(IQPuzzle3 target, String statmessage) { this.outerparent = target; } public void paint(Graphics g) { int w = size().width; int h = size().height; g.drawRect(0, 0, w - 1, h - 1); g.drawString("Solve Puzzle", (w - g.getFontMetrics().stringWidth("Canvas"))/2, 10); g.setFont(new Font("Helvetica", Font.PLAIN, 8)); g.fillRect(50,10,4,4); g.fillRect(190,10,4,4); g.fillRect(10,60,4,4); g.fillRect(150,60,4,4); g.fillRect(30,90,4,4); g.fillRect(170,90,4,4); g.fillRect(50,140,4,4); g.fillRect(190,140,4,4); g.fillRect(10,190,4,4); g.fillRect(150,190,4,4); //draw existing lines for (int i= 0; i < currline; i++) { g.drawLine(starts[i].x, starts[i].y, ends[i].x, ends[i].y); } //draw current line if (currentpoint != null) g.drawLine(anchor.x,anchor.y ,currentpoint.x ,currentpoint.y); } public void restart() { Edge_A_B = false; Edge_A_C = false; Edge_A_E = false; Edge_A_G = false; Edge_B_D = false; Edge_B_F = false; Edge_B_H = false; Edge_C_D = false; Edge_C_E = false; Edge_C_I = false; Edge_D_F = false; Edge_D_J = false; Edge_E_G = false; Edge_E_I = false; Edge_F_H = false; Edge_F_J = false; Edge_G_H = false; Edge_G_I = false; Edge_H_J = false; Edge_I_J = false; currline = 0; anchor.x = -1; anchor.y = -1; currentpoint = null; String s; s = " "; showMessage(s); repaint(); } public boolean mouseUp(Event evt, int x, int y) { c = new Circle3(); int userpoint = c.check((double)x,(double)y); if (userpoint > 0) { if (userpoint == 1) { x = 52; y = 12; } else if (userpoint == 2) { x = 192; y = 12; } else if (userpoint == 3) { x = 12; y = 62; } else if (userpoint == 4) { x = 152; y = 62; } else if (userpoint == 5) { x = 32; y = 92; } if (userpoint == 6) { x = 172; y = 92; } else if (userpoint == 7) { x = 52; y = 142; } else if (userpoint == 8) { x = 192; y = 142; } else if (userpoint == 9) { x = 12; y = 192; } else if (userpoint == 10) { x = 152; y = 192; } if (anchor.x == -1) { // first point anchor.x = x; anchor.y = y; String s; s = " "; showMessage(s); return true; } else { currentpoint = new Point(x,y); if (check_line(anchor,currentpoint)) { String s; s = " "; showMessage(s); addline(x,y); return true; } else { currentpoint = null; String s; s = "Cannot draw that line"; showMessage(s); return true; } } } else { String s; s = "Click on a valid point"; showMessage(s); return true; } } boolean check_line (Point anchor, Point end) { if ((anchor.x == A.x) && (anchor.y == A.y)) { if ((end.x == B.x)&&(end.y == B.y)) { if (Edge_A_B == false) { Edge_A_B = true; return true; } else { return false; } } if ((end.x==C.x)&&(end.y==C.y)) { if (Edge_A_C == false) { Edge_A_C = true; return true; } else { return false; } } if ((end.x == E.x)&&(end.y == E.y)) { if (Edge_A_E == false) { Edge_A_E = true; return true; } else { return false; } } if ((end.x == G.x)&&(end.y == G.y)) { if (Edge_A_G == false) { Edge_A_G = true; return true; } else { return false; } } } // end outermost if else if ((anchor.x == B.x) && (anchor.y == B.y)) { if ((end.x == A.x)&&(end.y == A.y)) { if (Edge_A_B == false) { Edge_A_B = true; return true; } else { return false; } } if ((end.x==D.x)&&(end.y==D.y)) { if (Edge_B_D == false) { Edge_B_D = true; return true; } else { return false; } } if ((end.x == F.x)&&(end.y == F.y)) { if (Edge_B_F == false) { Edge_B_F = true; return true; } else { return false; } } if ((end.x==H.x)&&(end.y==H.y)) { if (Edge_B_H == false) { Edge_B_H = true; return true; } else { return false; } } } // end else if else if ((anchor.x == C.x) && (anchor.y == C.y)) { if ((end.x == A.x)&&(end.y == A.y)) { if (Edge_A_C == false) { Edge_A_C = true; return true; } else { return false; } } if ((end.x==D.x)&&(end.y==D.y)) { if (Edge_C_D == false) { Edge_C_D = true; return true; } else { return false; } } if ((end.x == E.x)&&(end.y == E.y)) { if (Edge_C_E == false) { Edge_C_E = true; return true; } else { return false; } } if ((end.x==I.x)&&(end.y==I.y)) { if (Edge_C_I == false) { Edge_C_I = true; return true; } else { return false; } } } // end else if else if ((anchor.x == D.x) && (anchor.y == D.y)) { if ((end.x==B.x)&&(end.y==B.y)) { if (Edge_B_D == false) { Edge_B_D = true; return true; } else { return false; } } if ((end.x == C.x)&&(end.y == C.y)) { if (Edge_C_D == false) { Edge_C_D = true; return true; } else { return false; } } if ((end.x==F.x)&&(end.y==F.y)) { if (Edge_D_F == false) { Edge_D_F = true; return true; } else { return false; } } if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_D_J == false) { Edge_D_J = true; return true; } else { return false; } } } // end else if else if ((anchor.x == E.x) && (anchor.y == E.y)) { if ((end.x==A.x)&&(end.y==A.y)) { if (Edge_A_E == false) { Edge_A_E = true; return true; } else { return false; } } if ((end.x == C.x)&&(end.y == C.y)) { if (Edge_C_E == false) { Edge_C_E = true; return true; } else { return false; } } if ((end.x==G.x)&&(end.y==G.y)) { if (Edge_E_G == false) { Edge_E_G = true; return true; } else { return false; } } if ((end.x == I.x)&&(end.y == I.y)) { if (Edge_E_I == false) { Edge_E_I = true; return true; } else { return false; } } } else if ((anchor.x == F.x) && (anchor.y == F.y)) { if ((end.x==B.x)&&(end.y==B.y)) { if (Edge_B_F == false) { Edge_B_F = true; return true; } else { return false; } } if ((end.x == D.x)&&(end.y == D.y)) { if (Edge_D_F == false) { Edge_D_F = true; return true; } else { return false; } } if ((end.x==H.x)&&(end.y==G.y)) { if (Edge_F_H == false) { Edge_F_H = true; return true; } else { return false; } } if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_F_J == false) { Edge_F_J = true; return true; } else { return false; } } } else if ((anchor.x == G.x) && (anchor.y == G.y)) { if ((end.x==A.x)&&(end.y==A.y)) { if (Edge_A_G == false) { Edge_A_G = true; return true; } else { return false; } } if ((end.x == E.x)&&(end.y == E.y)) { if (Edge_E_G == false) { Edge_E_G = true; return true; } else { return false; } } if ((end.x==H.x)&&(end.y==H.y)) { if (Edge_G_H == false) { Edge_G_H = true; return true; } else { return false; } } if ((end.x == I.x)&&(end.y == I.y)) { if (Edge_G_I == false) { Edge_G_I = true; return true; } else { return false; } } } else if ((anchor.x == H.x) && (anchor.y == H.y)) { if ((end.x==B.x)&&(end.y==B.y)) { if (Edge_B_H == false) { Edge_B_H = true; return true; } else { return false; } } if ((end.x == F.x)&&(end.y == F.y)) { if (Edge_F_H == false) { Edge_F_H = true; return true; } else { return false; } } if ((end.x==G.x)&&(end.y==G.y)) { if (Edge_G_H == false) { Edge_G_H = true; return true; } else { return false; } } if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_H_J == false) { Edge_H_J = true; return true; } else { return false; } } } else if ((anchor.x == I.x) && (anchor.y == I.y)) { if ((end.x==C.x)&&(end.y==C.y)) { if (Edge_C_I == false) { Edge_C_I = true; return true; } else { return false; } } if ((end.x == E.x)&&(end.y == E.y)) { if (Edge_E_I == false) { Edge_E_I = true; return true; } else { return false; } } if ((end.x==G.x)&&(end.y==G.y)) { if (Edge_G_I == false) { Edge_G_I = true; return true; } else { return false; } } if ((end.x == J.x)&&(end.y == J.y)) { if (Edge_I_J == false) { Edge_I_J = true; return true; } else { return false; } } } else if ((anchor.x == J.x) && (anchor.y == J.y)) { if ((end.x==D.x)&&(end.y==D.y)) { if (Edge_D_J == false) { Edge_D_J = true; return true; } else { return false; } } if ((end.x == F.x)&&(end.y == F.y)) { if (Edge_F_J == false) { Edge_F_J = true; return true; } else { return false; } } if ((end.x==H.x)&&(end.y==H.y)) { if (Edge_H_J == false) { Edge_H_J = true; return true; } else { return false; } } if ((end.x == I.x)&&(end.y == I.y)) { if (Edge_I_J == false) { Edge_I_J = true; return true; } else { return false; } } } return false; } void showMessage (String message) { outerparent.statusline.setText(message); } void addline (int x, int y) { starts[currline] = anchor; ends[currline] = new Point(x,y); currline++; repaint(); anchor = currentpoint; if (currline == MAXLINES) { String s; s = "CONGRATULATIONS!!! Puzzle Solved "; showMessage(s); } } public Dimension minimumSize() { return new Dimension(200,200); } public Dimension preferredSize() { return minimumSize(); } } class Circle3 { final Point A = new Point(52,12); final Point B = new Point(192,12); final Point C = new Point(12,62); final Point D = new Point(152,62); final Point E = new Point(32,92); final Point F = new Point(172,92); final Point G = new Point(52,142); final Point H = new Point(192,142); final Point I = new Point(12,192); final Point J = new Point(152,192); public Circle3() { } double r = 5.0; // is point (a,b) inside this circle? public int check(double a, double b) { if (isInside(a,b,A)) return 1; if (isInside(a,b,B)) return 2; if (isInside(a,b,C)) return 3; if (isInside(a,b,D)) return 4; if (isInside(a,b,E)) return 5; if (isInside(a,b,F)) return 6; if (isInside(a,b,G)) return 7; if (isInside(a,b,H)) return 8; if (isInside(a,b,I)) return 9; if (isInside(a,b,J)) return 10; return 0; } public boolean isInside(double a, double b,Point thepoint) { double dx = a - thepoint.x; double dy = b - thepoint.y; double distance = Math.sqrt(dx*dx + dy*dy); if (distance < r) return true; else return false; } } //class MyWindow extends Frame { // final String FILEDIALOGMENUITEM = "File dialog..."; // MyWindow(String title) { // super("Dave's Little App"); // MenuBar mb = new MenuBar(); // Menu m = new Menu("Menu"); // m.add(new MenuItem("Cars")); // m.add(new CheckboxMenuItem("Women")); // m.add(new MenuItem("More Women")); // m.add(new MenuItem("-")); // m.add(new MenuItem(FILEDIALOGMENUITEM)); // mb.add(m); // setMenuBar(mb); // MenuBar mb2 = new MenuBar(); // Menu m2 = new Menu("People"); // m2.add(new MenuItem("Chris")); // m2.add(new CheckboxMenuItem("Dave")); // m2.add(new MenuItem("Beavis")); // m2.add(new MenuItem("Butt-Head")); // m2.add(new MenuItem("Nikki")); // mb2.add(m2); // setMenuBar(mb2); // //Put a list in the window. // List l = new List(3, false); // l.addItem("List item 1"); // l.addItem("List item 2"); // l.addItem("List item 3"); // l.addItem("List item 4"); // l.addItem("List item 5"); // l.addItem("List item 6"); // l.addItem("List item 7"); // add("Center", l); // } Dave Shaffer% Dave Shaffer% Dave Shaffer% Dave Shaffer% cat IQPuzzle1.html Test your IQ

Test your "IQ"

Puzzle 1


Instructions
Winner log
MU Computer Science Home Page

This puzzle was exclusively created by:
Chris Ly
Dave Shaffer.
We welcome all your comments.



Instructions

The objective of this puzzle is to connect the points with lines in the uncompleted puzzle so it matches the completed puzzle. You can not draw over existing lines. You first choose a starting point, then click on a different valid point (see completed puzzle) to connect both points with a line. Pick another valid point from the last point you just picked and connect those two points. Repeat this process over and over again until all lines are drawn to match the completed puzzle.

Keep your eye on the status line below the puzzles, this will give you feedback while you are trying to solve the puzzle.

If you come to a point where no lines can be drawn, you lose. Press the restart button and give it another shot.

There are three puzzles to choose from, so go have some fun!!! (If you select another puzzle and nothing happends, move the mouse around and this should help.


Winner Log

Due to time limitations this feature was not implemented. The plan was to have a winner log to keep track of the "ten best times" When you start to solve the puzzle the timer (beside the status line) would keep track of your time. When you completed the puzzle successfully, your time would be compared with the times in winner log. If your time was better than at least one of the ten times in the winner log, your information would be added.

To do this we designed a server to listen for the puzzle client. (If your score was to be added) The server would keep track of the puzzle players name, date solved, and time it took to solve. We thought it would be interesting for people to compete others from all around the world.


Back to Dave's Place
Dave Shaffer% Dave Shaffer% Dave Shaffer% Dave Shaffer% cat IQPuzzle2.html Test your IQ

Test your "IQ"

Puzzle 2


Instructions
Winner log
MU Computer Science Home Page

This puzzle was exclusively created by:
Chris Ly
Dave Shaffer.
We welcome all your comments.



Instructions

The objective of this puzzle is to connect the points with lines in the uncompleted puzzle so it matches the completed puzzle. You can not draw over existing lines. You first choose a starting point, then click on a different valid point (see completed puzzle) to connect both points with a line. Pick another valid point from the last point you just picked and connect those two points. Repeat this process over and over again until all lines are drawn to match the completed puzzle.

Keep your eye on the status line below the puzzles, this will give you feedback while you are trying to solve the puzzle.

If you come to a point where no lines can be drawn, you lose. Press the restart button and give it another shot.

There are three puzzles to choose from, so go have some fun!!!


Winner Log

Due to time limitations this feature was not implemented. The plan was to have a winner log to keep track of the "ten best times" When you start to solve the puzzle the timer (beside the status line) would keep track of your time. When you completed the puzzle successfully, your time would be compared with the times in winner log. If your time was better than at least one of the ten times in the winner log, your information would be added.

To do this we designed a server to listen for the puzzle client. (If your score was to be added) The server would keep track of the puzzle players name, date solved, and time it took to solve. We thought it would be interesting for people to compete others from all around the world.


Back to Dave's Place
Dave Shaffer% Dave Shaffer% Dave Shaffer% Dave Shaffer% cat MyWindow.java import java.awt.*; public class MyWindow extends Frame { protected Button button; TextArea messagearea; String message; MyWindow(String title) { super("Winner Log for IQ Puzzles"); MenuBar mb = new MenuBar(); Menu m2 = new Menu("Options",true); // Button button = new Button("Quit"); m2.add(new MenuItem("-")); m2.add(new MenuItem("Quit")); mb.add(m2); setMenuBar(mb); message = new String("This Area Is Not Yet Functional"); messagearea = new TextArea(message); this.setLayout(new BorderLayout()); this.add("Center",messagearea); this.show(); } public boolean action(Event evt, Object obj) { if (evt.target instanceof MenuItem) { String label = (String)obj; if (label.equals("Quit")) { this.hide(); this.dispose(); } } else if (evt.target == button) { this.hide(); this.dispose(); } else if (evt.id == Event.WINDOW_DESTROY) { hide(); } return true; } public boolean handleEvent(Event event) { if (event.id == Event.WINDOW_DESTROY) { dispose(); return true; } else { return super.handleEvent(event); } } } Dave Shaffer% Dave Shaffer% Dave Shaffer% Dave Shaffer% cat MyDial.java import java.awt.*; import java.lang.*; public class MyDial extends Frame { Button quit; TextArea messagearea; String message; MyDial(String title) { super("IQPuzzle Designers"); Font f = new Font ("TimesRoman", Font.BOLD,36); quit = new Button("Quit"); message = new String("Chris Ly and Dave Shaffer\n Millersville University\n CopyRight (c) 1996"); messagearea = new TextArea(message); this.setLayout(new BorderLayout()); this.add("Center",messagearea); Panel p = new Panel(); p.setLayout(new FlowLayout(FlowLayout.CENTER)); p.add(quit); this.add("South",p); this.show(); } public boolean action(Event evt, Object obj) { if (evt.target instanceof MenuItem) { String label = (String)obj; if (label.equals("Quit")) { this.hide(); this.dispose(); } } else if (evt.target == quit) { this.hide(); this.dispose(); } else if (evt.id == Event.WINDOW_DESTROY) { hide(); } return true; } public boolean handleEvent(Event event) { if (event.id == Event.WINDOW_DESTROY) { dispose(); return true; } else { return super.handleEvent(event); } } } Dave Shaffer% ls Circle.class IQPuzzle2.java Circle2.class IQPuzzle3.class Circle3.class IQPuzzle3.html Completed_puzzle.class IQPuzzle3.java Completed_puzzle2.class IQPuzzleCode Completed_puzzle3.class MyDial.class IQPuzzle1.class MyDial.java IQPuzzle1.html MyWindow.class IQPuzzle1.java MyWindow.java IQPuzzle1.java.save Uncompleted_puzzle.class IQPuzzle2.class Uncompleted_puzzle2.class IQPuzzle2.html Uncompleted_puzzle3.class Dave Shaffer% Dave Shaffer% Dave Shaffer% exit script done on Sun May 05 19:02:25 1996