import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class NullAndCard extends JApplet { private Left lpanel; private Bottom bpanel; private FlipCard card; public void init() { setBackground ( Color.black ); getContentPane().setLayout(null); lpanel = new Left ( ); lpanel.setLocation ( 5, 5 ); lpanel.setSize ( 100, 400 ); getContentPane().add ( lpanel ); bpanel = new Bottom ( ); bpanel.setLocation ( 5, 410 ); bpanel.setSize ( 580, 115 ); getContentPane().add ( bpanel ); card = new FlipCard ( ); card.setLocation ( 110, 5 ); card.setSize ( 475, 400 ); getContentPane().add ( card ); } public Insets getInsets ( ) { return new Insets ( 5, 5, 5, 5 ); } class Left extends JPanel { public Left ( ) { setBackground ( Color.darkGray ); } } class Bottom extends JPanel { public Bottom ( ) { setBackground ( Color.gray ); } } class FlipCard extends JPanel { private CardLayout cards; private Intropanel ipanel; private Gamepanel gpanel; private Exitpanel epanel; public FlipCard ( ) { cards = new CardLayout ( ); this.setLayout ( cards ); setBackground ( Color.white ); ipanel = new Intropanel ( this ); ipanel.setBackground( Color.blue ); this.add ( ipanel, "INTRO" ); gpanel = new Gamepanel ( this ); gpanel.setBackground( Color.red ); this.add ( gpanel, "GAME" ); epanel = new Exitpanel ( this ); epanel.setBackground( Color.green ); this.add ( epanel, "GAME" ); } public void WaitForImage ( JPanel component, Image image ) { MediaTracker tracker = new MediaTracker ( component ); try { tracker.addImage ( image, 0 ); tracker.waitForID ( 0 ); } catch ( InterruptedException e ) { e.printStackTrace ( ); } } public Insets getInsets ( ) { return new Insets ( 5, 5, 5, 5 ); } public class Intropanel extends JPanel implements MouseListener { private FlipCard flip; private Image image; public Intropanel ( FlipCard f ) { flip = f; addMouseListener(this); image = getImage ( getDocumentBase ( ), "intro.gif" ); WaitForImage ( this, image ); } public void paintComponent(Graphics g) { super.paintComponent(g); boolean b = g.drawImage ( image, 45, 70, this ); } public void mousePressed(MouseEvent evt) { if ( evt.isShiftDown() ) cards.first ( flip ); else if ( evt.isMetaDown() ) cards.previous ( flip ); else cards.next ( flip ); } public void mouseEntered(MouseEvent evt) { } public void mouseExited(MouseEvent evt) { } public void mouseClicked(MouseEvent evt) { } public void mouseReleased(MouseEvent evt) { } } public class Gamepanel extends JPanel { private FlipCard flip; public String [] name = { "PRESS", "THE", "BUTTONS", "TO", "MOVE", "ON", "TO", "NEXT", "PANEL" }; private Buttonpanel [] bpanel; public Gamepanel ( FlipCard f ) { flip = f; bpanel = new Buttonpanel [9]; setLayout ( new GridLayout (3, 3) ); for ( int i = 0; i < 9; i++ ) { bpanel[i] = new Buttonpanel ( this, name[i], i ); bpanel[i].setBackground( Color.red ); this.add ( bpanel[i] ); } } public boolean CheckAll ( ) { for ( int i = 0; i < 9; i++ ) if ( !bpanel[i].HasBeenPressed ( ) ) return false; return true; } public class Buttonpanel extends JPanel implements ActionListener { Gamepanel game; boolean pressed; public JButton generic; int number; public Buttonpanel ( Gamepanel g, String s, int i ) { number = i; pressed = false; game = g; setLayout(null); generic = new JButton ( s ); generic.addActionListener ( this ); generic.setLocation ( 10, 10 ); generic.setSize ( 135, 110 ); this.add ( generic ); } public boolean HasBeenPressed ( ) { return pressed; } public void actionPerformed ( ActionEvent evt ) { String command = evt.getActionCommand(); if ( command.equals ( gpanel.name[number] ) ) { pressed = true; generic.setVisible ( false ); if ( game.CheckAll ( ) ) { cards.next ( flip ); for ( int i = 0; i < 9; i++ ) { gpanel.bpanel[i].pressed = false; gpanel.bpanel[i].generic.setVisible ( true ); } } } } } } public class Exitpanel extends JPanel implements KeyListener { private FlipCard flip; private Image image; public Exitpanel ( FlipCard f ) { flip = f; addKeyListener(this); image = getImage ( getDocumentBase ( ), "exit.gif" ); WaitForImage ( this, image ); } public void paintComponent ( Graphics g ) { super.paintComponent ( g ); boolean b = g.drawImage ( image, 45, 70, this ); this.requestFocus(); } public void keyTyped ( KeyEvent e ) {} public void keyPressed ( KeyEvent e ) { int value = e.getKeyCode(); if ( value == KeyEvent.VK_ENTER ) cards.first ( flip ); } public void keyReleased ( KeyEvent e ) {} } } }