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
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.
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.
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!!!
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.