// Johann Shudlick // April 29, 1999 // Final Project // Create an appicaiton for tutoring and testing elemtentary school kids import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class testFrame extends Frame implements ActionListener { private String stateName[] = { "GeoWhiz", "Arizona", "California", "Colorado", "Idaho", "Kansas", "Montana", "Nebraska", "Nevada", "New Mexico", "North Dakota", "Oklahoma", "Oregon", "South Dakota", "Texas", "Utah", "Washington", "Wyoming" }; private String capitolName[] = { "", "Phoenix", "Sacramento", "Denver", "Boise", "Topeka", "Helena", "Lincoln", "Carson City", "Santa Fe", "Bismark", "Oklahoma City", "Salem", "Pierre", "Austin", "Salt Lake City", "Olympia", "Cheyenne" }; private String userStates[], userCapitols[]; private Label num[], name, instr1, instr2, instr3, st1, st2, st3, ca1, ca2, ca3; private TextField state[], capitol[], nameInput; private GeoWhiz gw; private int stateX = 30, stateY = 245, capX = 120, capY = 245, index = 1, correct = 0, incorrect = 0; private Button forward, back, done, review, study; private MyCanvas canny; private resultsFrame score; private reviewFrame r; private Font f; public boolean sta[], cap[]; testFrame( GeoWhiz parent ) { super( "Test Yourself!!!" ); setSize( 640, 435 ); gw = parent; addWindowListener( new WindowHide(this) ); setLayout( null ); f = new Font( "Arial Black", Font.BOLD, 32); canny = new MyCanvas( this ); add( canny); canny.setLocation( 3, 23 ); forward = new Button ( "Next State?" ); add( forward ); forward.addActionListener( this ); forward.setBounds( 225, 80, 90, 30 ); back = new Button ( "Last State?" ); add( back ); back.addActionListener( this ); back.setBounds( 325, 80, 90, 30 ); done = new Button ( "Grade Now!" ); add( done ); done.addActionListener( this ); done.setBounds( 275, 120, 90, 30 ); study = new Button ( "Study Again!" ); add( study ); study.addActionListener( this ); study.setBounds( 375, 120, 90, 30 ); review = new Button ( "Review More!" ); add( review ); review.addActionListener( this ); review.setBounds( 475, 120, 90, 30 ); name = new Label( "Enter Your Name:" ); add( name ); name.setBounds( 450, 70, 120, 18 ); nameInput = new TextField( "Unknown User" ); add( nameInput ); nameInput.setBounds( 460, 90, 140, 20 ); instr1 = new Label( "INSTRUCTIONS: Click through the states using the buttons above." ); add( instr1 ); instr1.setBounds( 225, 160, 400, 20 ); instr2 = new Label( "Enter the name and capital of each state in the appropriate box below." ); add( instr2 ); instr2.setBounds( 235, 175, 400, 20 ); instr3 = new Label( "Click the 'Grade Now!' button when finished." ); add( instr3 ); instr3.setBounds( 235, 190, 400, 20 ); num = new Label[ 18 ]; state = new TextField[ 18 ]; userStates = new String[ 18 ]; userCapitols = new String[ 18 ]; sta = new boolean[ 18 ]; cap = new boolean[ 18 ]; st1 = new Label( "State" ); add( st1); st1.setBounds( 59, 222, 50, 20); st2 = new Label( "State" ); add( st2); st2.setBounds( 269, 222, 50, 20); st3 = new Label( "State" ); add( st3); st3.setBounds( 479, 222, 50, 20); ca1 = new Label( "Capital" ); add( ca1); ca1.setBounds( 139, 222, 50, 20); ca2 = new Label( "Capital" ); add( ca2); ca2.setBounds( 349, 222, 50, 20); ca3 = new Label( "Capital" ); add( ca3); ca3.setBounds( 559, 222, 50, 20); for( int i = 1; i < 18; i++ ) { state[ i ] = new TextField( 15 ); add( state[ i ] ); state[ i ].setBounds( stateX, stateY, 80, 20); num[i] = new Label( "#" + i ); add( num[ i ] ); num[ i ].setBounds( stateX - 22, stateY, 80, 20 ); stateY = stateY + 25; if( i == 6) { stateX = 240; stateY = 245; } if( i == 12 ) { stateX = 450; stateY = 245; } } capitol = new TextField[ 18 ]; for( int i = 1; i < 18; i++ ) { capitol[ i ] = new TextField( 15 ); add( capitol[ i ] ); capitol[ i ].setBounds( capX, capY, 80, 20); capY = capY + 25; if( i == 6 ) { capX = 330; capY = 245; } if( i == 12 ) { capX = 540; capY = 245; } } } public void paint(Graphics g ) { g.setFont( f ); g.drawString( "This is state number " + index, 225, 60 ); } public int getIndex() {return index;} public Image loadPics( int a ) { return gw.getImage( gw.getDocumentBase(), "state" + a + ".jpg" ); } public void actionPerformed( ActionEvent e ) { if( e.getSource() == review ) { r = new reviewFrame( gw ); r.setVisible( true ); gw.getTestFrame().setVisible(false); } if( e.getSource() == study ) { gw.getTestFrame().setVisible(false); gw.getStudyFrame().setVisible(true); } if( e.getSource() == forward ) { index = (index + 1) % 18; canny.repaint(); repaint(); } if( e.getSource() == back && index > 1 ) { index--; canny.repaint(); repaint(); } if( e.getSource() == done) { for( int i = 1; i < 18; i++ ) { userStates[i] = state[ i ].getText(); userCapitols[ i ] = capitol[ i ].getText(); } for( int i = 1; i < 18; i++ ) { if( userStates[ i ].equalsIgnoreCase( stateName[ i ]) ) correct++; else { incorrect++; sta[ i ] = true; } if( userCapitols[ i ].equalsIgnoreCase( capitolName[ i ]) ) correct++; else { incorrect++; cap[ i ] = true; } } score = new resultsFrame( correct, incorrect, gw ); score.setVisible(true); } } } class MyCanvas extends Canvas { private Image statePic[]; private Font fun; private testFrame s; private int q; MyCanvas( testFrame r ) { setSize( 202, 202 ); setVisible( true ); s = r; fun = new Font( "Arial Black", Font.BOLD, 32); statePic = new Image[ 18 ]; for( int i = 1; i < 18; i++) statePic[ i ] = s.loadPics( i ); } public void paint( Graphics g ) { q = s.getIndex(); g.drawRect( 1, 1, 200, 200 ); g.drawImage( statePic[ q ], 5, 5, 195, 195, this ); g.setFont( fun ); g.drawString( "This is state number " + q, 225, 60 ); } }