/* Written by Nick Exner * * Free to distribute */ import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.AudioClip; public class TempPlate extends Applet { AudioClip beep; int t1=15, t2=3, t3=30, t4=40; boolean paintSpot=false; int t1Tab=0, t2Tab=0, t3Tab=0, t4Tab=0, xPosLog=12, yPosLog=260; int spotX=0,spotY=0, unitSize=5,origX=0, origY=0, xCord=0, yCord=0; int xpos=69, ypos=72; MyFrame window; Button moveB; Frame dog; Button clearB; Button doAllB; public void init(){ beep = getAudioClip(getCodeBase(),"shortbeep.au"); moveB = new Button("Move"); clearB= new Button("Clear"); doAllB= new Button("Run 500"); add(moveB); add(doAllB); add(clearB); dog=new Frame("hi"); dog.resize(100,100); window = new MyFrame("Trial Stats"); window.resize(150,125); Point d = location(); window.move((d.x+400),d.y); window.hide(); window.setBackground(Color.white); reset(); } public void reset() { spotX=origX; spotY=origY; xCord=0; yCord=0; } public void resetAll() { reset(); origX=0; origY=0; t1Tab=t2Tab=t3Tab=t4Tab=0; repaint(); } public void paint(Graphics g) { t1=window.t1; t2=window.t2; t3=window.t3; t4=window.t4; //System.out.println("Spotx: "+spotX+" Spoty: "+spotY); // if (spotX!=0 && spotY!=0){ if (paintSpot) { g.drawOval(spotX-2,spotY-2,4,4); // Draw point // Label coordinates findCord(); g.drawString("("+xCord+","+yCord+")",spotX+5,spotY+5); } g.drawString("Temperature No. of Walks Total Temp.",xPosLog,yPosLog); g.drawString(""+window.t1+".00 C",xPosLog+20,yPosLog+15); g.drawString(""+t2+".00 C",xPosLog+20,yPosLog+30); g.drawString(""+t3+".00 C",xPosLog+20,yPosLog+45); g.drawString(""+t4+".00 C",xPosLog+20,yPosLog+60); if ((t1Tab+t2Tab+t3Tab+t4Tab)!=0) g.drawString(""+((t1Tab*window.t1)+(t2Tab*window.t2)+(t3Tab*window.t3)+(t4Tab*window.t4))+"/"+(t1Tab+t2Tab+t3Tab+t4Tab)+" = " + roundDouble(((t1Tab*window.t1)+(t2Tab*window.t2)+(t3Tab*window.t3)+(t4Tab*window.t4)*1.0)/(t1Tab+t2Tab+t3Tab+t4Tab),2), xPosLog,yPosLog+75); else if (!paintSpot) g.drawString("Please click on a point.",xPosLog,yPosLog+75); else g.drawString("Temperature measured in Celsius.",xPosLog,yPosLog+75); g.drawString(""+t1Tab,xPosLog+115,yPosLog+15); g.drawString(""+t2Tab,xPosLog+115,yPosLog+30); g.drawString(""+t3Tab,xPosLog+115,yPosLog+45); g.drawString(""+t4Tab,xPosLog+115,yPosLog+60); g.drawString(""+(t1Tab*window.t1),xPosLog+205,yPosLog+15); g.drawString(""+(t2Tab*window.t2),xPosLog+205,yPosLog+30); g.drawString(""+(t3Tab*window.t3),xPosLog+205,yPosLog+45); g.drawString(""+(t4Tab*window.t4),xPosLog+205,yPosLog+60); g.drawRect(69,72,250,140); //was 140 g.drawString("(0,0)",65,228); // was 65 g.drawString("(0,5)",41,77); // was 41 g.drawString("(10,5)",315,65); g.drawString("(10,0)",290,228); g.drawLine(68,213,341,213); // Left right line g.drawLine(341,213,333,221); g.drawLine(341,213,333,205); g.drawLine(68,55,68,213); // Up down line g.drawLine(68,55,60,63); g.drawLine(68,55,76,63); g.drawOval(317,71,4,4); g.drawOval(317,211,4,4); g.drawOval(66,71,4,4); g.drawOval(66,211,4,4); // Log Window g.drawRect(xPosLog-4,yPosLog+3,250,74); // Major Rect g.drawRect(xPosLog-4,yPosLog-15,250,17); // Top Rect g.drawLine(xPosLog-4,yPosLog+16,xPosLog+246,yPosLog+16); // Horiz Lines g.drawLine(xPosLog-4,yPosLog+31,xPosLog+246,yPosLog+31); g.drawLine(xPosLog-4,yPosLog+46,xPosLog+246,yPosLog+46); g.drawLine(xPosLog-4,yPosLog+61,xPosLog+246,yPosLog+61); g.drawLine(xPosLog+78,yPosLog+61,xPosLog+78,yPosLog+3); // Vert Lines g.drawLine(xPosLog+165,yPosLog+61,xPosLog+165,yPosLog+3); g.drawString("1",195,62); g.drawString("2",13,141); g.drawString("3",336,141); g.drawString("4",195,237); g.setFont(new Font("Arial",Font.PLAIN,24)); g.drawString("T = "+window.t1,183,60); g.drawString("T =",1,139); g.drawString(""+window.t2,39,139); g.drawString("T = "+window.t3,324,139); g.drawString("T = "+window.t4,183,235); g.drawString("X",368,218); g.drawString("Y",62,30); } public boolean mouseDown(Event evt, int x, int y) { // System.out.println("x: "+(x)+"y: "+(y)); // Debug position if (x>=69 && x <=319) if (y >=72 && y <=213){ origX=x; origY=y; spotX=x; spotY=y; paintSpot=true; reset(); repaint(); } else // T1 Openwin if (x>=180 && x <= 254) if (y >= 37 && y <= 57) { //openwin t1 window.modify=1; window.show(); repaint(); } // T2 Openwin if (x>=0 && x <= 67) if (y >= 120 && y <= 140) { //openwin t2 window.modify=2; repaint(); window.show(); } // T3 Openwin if (x>=323 && x <= 394) if (y >= 120 && y <= 140) { //openwin t3 window.modify=3; repaint(); window.show(); } // T4 Openwin if (x>=181 && x <= 253) if (y >= 217 && y <= 235) { //openwin t4 window.modify=4; repaint(); window.show(); } return true; } public void movePoint(){ if (!isNull()) { switch ((1+(int) (Math.random() * 4))) { case 1: spotX+=25; break; case 2: spotX-=25; break; case 3: spotY+=28; break; default: spotY-=28; } if (spotX != 0 && spotX <=69) { t2Tab++; reset(); } if (spotX!=0 && spotX >=319) { t3Tab++; reset(); } if (spotY != 0 && spotY <=72) { t1Tab++; reset(); } if (spotY!=0 && spotY >=213){ t4Tab++; reset(); } } } public boolean action(Event evt, Object arg) { if (evt.target instanceof Button){ if(arg.equals("Move")) { movePoint(); } if(arg.equals("Clear")) { spotX=0; spotY=0; paintSpot=false; resetAll(); beep.play(); } if(arg.equals("Run 500")) { if (paintSpot) { if(spotX!=0 && spotX!=0) t1Tab=t2Tab=t3Tab=t4Tab=0; while ((t1Tab+t2Tab+t3Tab+t4Tab)<500) { movePoint(); } beep.play(); } } repaint(); } return true; } public boolean isNull() { if(spotX == 0 && spotY == 0) return true; else return false; } public double roundDouble(double x, int place) { double times=1.0; for (int j=0;j 99) value=99; else if (value < 0) value=0; switch(x) { case 1: t1=value; break; case 2: t2=value; break; case 3: t3=value; break; default: t4=value; } } public boolean isResizable() { return false; } public void paint( Graphics g) { g.drawString("Trials Performed: ",5,35); } public boolean action(Event evt, Object arg) { if (evt.target instanceof Button){ if(arg.equals("Cancel")) { hide(); } if(arg.equals("Ok")) { try { k=inputB.getText(); changeVal(modify,(int)Integer.parseInt((String)k)); hide(); } catch (NumberFormatException e) { } } } if (evt.target instanceof TextField) { try { k=inputB.getText(); changeVal(modify,(int)Integer.parseInt((String)k)); hide(); } catch (NumberFormatException e) { } } return true; } } // End class MyFrame