// an applet by John Sklar
// see credits in the game
// written in java Swing
import javax.swing.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class JMathGame extends JApplet implements ActionListener
{
int answer,j,c,pressCounter;
int[] list = {0,1,2,3,4};
int[] index ={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int[][] card ={ {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31},
{2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31},
{4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31},
{8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31},
{16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}};
Font bigFont = new Font("Courier",Font.BOLD,30);
Font msgFont = new Font("Serif",Font.BOLD,24);
Font smallFont = new Font("Serif",Font.BOLD,16);
JButton[] block = new JButton[16];
JButton yes = new JButton("YES");
JButton no = new JButton("NO");
JButton reset = new JButton("Reset");
JButton Directions = new JButton("Directions");
JButton credits = new JButton("Credits");
JLabel message = new JLabel("Guess a number from 1 - 31, is it here?");
JLabel bottommessage = new JLabel("An Applet by John Sklar!");
JPanel top,middle,bottom;
public void init()
{
getContentPane().setLayout(new FlowLayout());
top = new JPanel();
middle = new JPanel();
bottom = new JPanel();
getContentPane().add(top);
getContentPane().add(middle);
getContentPane().add(bottom);
top.add(message);
for(c=0;c < 16;++c)
{ // create each button
block[c]=new JButton();
}
//set a grid in the center of the flowlayout
middle.setLayout(new GridLayout(5,4,4,4));
// alternate the color of the blocks
for(c=0;c < 16;++c){
j++;
if(j<5)
utility.Colorgrid( block[c],c);
if(j>4 && j <9)
utility.Colorgrid(block[c],c+1);
if(j>8 && j < 13)
utility.Colorgrid(block[c],c);
if(j>12)
utility.Colorgrid(block[c],c+1);
block[c].setFont(bigFont);
middle.add(block[c]);
}
yes.setFont(msgFont);
no.setFont(msgFont);
reset.setFont(msgFont);
message.setFont(msgFont);
bottommessage.setFont(msgFont);
yes.setBackground(Color.white);
yes.setForeground(Color.red);
no.setBackground(Color.white);
no.setForeground(Color.red);
Directions.setBackground(Color.white);
credits.setBackground(Color.white);
middle.add(Directions);
middle.add(yes);
middle.add(no);
middle.add(credits);
middle.setBackground(Color.black);
Directions.setFont(smallFont);
credits.setFont(smallFont);
Directions.addActionListener(this);
credits.addActionListener(this);
yes.addActionListener(this);
no.addActionListener(this);
bottom.add(bottommessage);
bottom.add(reset);
reset.setVisible(false);
bottommessage.setVisible(true);
reset.addActionListener(this);
}
public void start()
{
answer=j=c=pressCounter=0;
utility.mix(index);
utility.mix(list);
for(c=0;c < 16;++c)
{
block[c].setText(Integer.toString(card[list[pressCounter]][index[c]]));
}
}
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if(source == credits)
utility.credits();
else if(source == Directions)
utility.directions();
else {
if(pressCounter==0)
message.setText("Is Your Number Here?");
if(source == yes)
answer+=card[list[pressCounter]][0];
if(++pressCounter< 5){
utility.mix(index);
for(c=0;c < 16;++c)
{
block[c].setText(Integer.toString(card[list[pressCounter]][index[c]]));
}
}
else{
for(c=0;c < 16;++c)
{
block[c].setText(Integer.toString(answer));
}
reset.setEnabled(true);
yes.setEnabled(false);
no.setEnabled(false);
message.setText("You picked the number " + answer);
reset.setVisible(true);
bottommessage.setVisible(false);
}
if(source == reset)
{
start();
reset.setEnabled(false);
yes.setEnabled(true);
no.setEnabled(true);
message.setText("Guess a number from 1 - 31, is it here?");
reset.setVisible(false);
bottommessage.setVisible(true);
}
}
}
}