// 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 reviewFrame extends Frame implements ItemListener, ActionListener { private int num, order[], stateOrder[], capitolOrder[], picOrder[], stateIndex, capitolIndex, picIndex; 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 picName[]; public boolean used[]; private GeoWhiz gw; private CheckboxGroup stateNames, capitolNames, picNames; private Checkbox states[], capitols[], pics[], temp1, temp2, temp3; private int stateX = 25, stateY = 25, capX = 150 , capY = 25, picX = 275, picY = 25, seconds = 150; private Image map; private Button test, study, again; private reviewFrame z; private Label hint,ins1, ins2, ins3; reviewFrame( GeoWhiz parent) { super( "Review What You've Learned!!!" ); setSize( 640, 400 ); addWindowListener( new WindowDispose(this) ); setLayout( null ); gw = parent; map = gw.getImage( gw.getDocumentBase(), "numberedMap.jpg" ); hint = new Label( "<-- Try to beat the clock!!!" ); add( hint ); hint.setBounds( 455, 300, 275, 25 ); ins1 = new Label( "TO REVIEW: Click on the name, capital, and" ); add( ins1 ); ins1.setBounds( 395, 330, 275, 10 ); ins2 = new Label( "location for each state. Text will dim if" ); add( ins2 ); ins2.setBounds( 395, 341, 275, 10 ); ins3 = new Label( "three corresponding options are checked." ); add( ins2 ); ins2.setBounds( 395, 352, 275, 10 ); test = new Button ( "Test Now!" ); add( test ); test.addActionListener( this ); test.setBounds( 395, 265, 75, 25 ); study = new Button ( "Study More!" ); add( study ); study.addActionListener( this ); study.setBounds( 475, 265, 75, 25 ); again = new Button ( "Try Again!" ); add( again ); again.addActionListener( this ); again.setBounds( 555, 265, 75, 25 ); picName = new String[ 18 ]; for( int i = 1; i < 18; i++) picName[ i ] = new String( "Number " + i ); order = new int[18]; stateOrder = new int[18]; picOrder = new int[18]; capitolOrder = new int[18]; used = new boolean[18]; ResortArray(); stateNames = new CheckboxGroup(); states = new Checkbox[ 18 ]; for( int i = 1; i < 18; i++) { stateOrder[i] = order[i]; states[ i ] = new Checkbox( stateName[ stateOrder[i] ], stateNames, false ); states[ i ].addItemListener(this); add( states[ i ] ); states[ i ].setBounds( stateX, stateY, 100, 15 ); stateY = stateY + 20; } ResortArray( ); capitolNames = new CheckboxGroup(); capitols = new Checkbox[ 18 ]; for( int i = 1; i < 18; i++) { capitolOrder[i] = order[i]; capitols[ i ] = new Checkbox( capitolName[ capitolOrder[i] ], capitolNames, false ); capitols[ i ].addItemListener(this); add( capitols[ i ] ); capitols[ i ].setBounds( capX, capY, 100, 15 ); capY = capY + 20; } ResortArray( ); picNames = new CheckboxGroup(); pics = new Checkbox[ 18 ]; for( int i = 1; i < 18; i++) { picOrder[i] = order[i]; pics[ i ] = new Checkbox( picName[ picOrder[i] ], picNames, false ); pics[ i ].addItemListener(this); add( pics[ i ] ); pics[ i ].setBounds( picX, picY, 100, 15 ); picY = picY + 20; } } public void paint( Graphics g ) { g.drawRect( 395, 25, 232, 232 ); g.drawRect( 395, 300, 40, 25 ); g.drawImage( map, 396, 26, 230, 230, this ); g.drawString( "" + seconds, 405, 320 ); if( seconds > 0) { try { Thread.sleep( 1000 ); } catch ( InterruptedException exception) { System.out.println( exception.toString() ); } seconds--; repaint(); } else hint.setText( "Looks like the clock beat you..." ); } public void actionPerformed( ActionEvent e ) { if( e.getSource() == again ) { z = new reviewFrame( gw ); z.setVisible( true ); gw.getReviewFrame().setVisible(false); } if( e.getSource() == test ) { gw.getTestFrame().setVisible(true); gw.getReviewFrame().setVisible(false); z.setVisible( false ); } if( e.getSource() == study ) { gw.getReviewFrame().setVisible(false); gw.getStudyFrame().setVisible(true); z.setVisible( false ); } } public void itemStateChanged( ItemEvent e ) { temp1 = stateNames.getSelectedCheckbox(); temp2 = capitolNames.getSelectedCheckbox(); temp3 = picNames.getSelectedCheckbox(); for( int i = 1; i < 18; i++ ) { if( temp1 == states[ i ] ) stateIndex = i; if( temp2 == capitols[ i ] ) capitolIndex = i; if( temp3 == pics[ i ] ) picIndex = i; } if( stateOrder[ stateIndex ]== capitolOrder[ capitolIndex ] && stateOrder[ stateIndex ]== picOrder[ picIndex ] ) { states[ stateIndex ].setEnabled( false ); capitols[ capitolIndex ].setEnabled( false ); pics[ picIndex ].setEnabled( false ); } } public void ResortArray( ) { for( int i = 1; i < 18; i++ ) { num = ( 1 + (int)(Math.random() * 17 ) ); while( used[ num ] ) num = ( 1 + (int)(Math.random() * 17 ) ); order[ i ] = num; used[ num ] = true; } for( int i = 1; i < 18; i++ ) used[ i ] = false; } }