/* * Guessing Game */ //AUTHOR - Bunning import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JPanel; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class GuessingGame extends JFrame implements ActionListener { /* * Note: MAX_NUMBER should be equal to ROWS * COLS You can change these values to * create a larger game board. For example, try using the following assignments: * ROWS = 16, COLS = 16, MAX_NUMBER = 256, NUM_TRIES = 7 */ //constants private static final boolean WIN=true, LOSS=false; private static final int ROWS = 5, COLS = 5, MAX_NUMBER = 25, NUM_TRIES = 4; //fields private Container content; private JPanel northPanel,centerPanel,southPanel; private JTextField banner,score; private int secretNumber,wins,losses,tries; private JButton jbArray[],resetButton; private boolean waitingForReset=false; public GuessingGame() //constructor { wins=0; losses=0; resetButton = createResetButton(); banner = createJTextField(" You have "+NUM_TRIES+" tries to guess the hidden number "); banner.setHorizontalAlignment(JTextField.CENTER); score = createJTextField(" Wins: "+wins+" Losses: "+losses+" "); score.setHorizontalAlignment(JTextField.CENTER); content = getContentPane(); content.setLayout(new BorderLayout()); northPanel = new JPanel(); centerPanel = new JPanel(); southPanel = new JPanel(); content.add(northPanel,BorderLayout.NORTH); northPanel.add(banner); content.add(southPanel,BorderLayout.SOUTH); southPanel.setLayout(new FlowLayout()); southPanel.add(resetButton); southPanel.add(score); content.add(centerPanel,BorderLayout.CENTER); centerPanel.setLayout(new GridLayout(ROWS,COLS)); jbArray = new JButton[MAX_NUMBER+1]; for (int i=1; i<=MAX_NUMBER; i++) { jbArray[i]=(JButton)createGameButton(i); centerPanel.add(jbArray[i]); } resetGame(); } /* * resetGame * * Resets the game board for the next game. * */ private void resetGame() { resetButton.removeActionListener(this); waitingForReset=false; tries=NUM_TRIES; tryMessage(tries); secretNumber= (int) (Math.random()*MAX_NUMBER+1); //Picks the Number to be Guessed activateAllGameButtons(); // For Testing: System.out.println("The secret number is "+secretNumber); } private JTextField createJTextField (String s) { JTextField temp = new JTextField(s); temp.setFont(new Font("Helvetica",Font.PLAIN,14)); temp.setBorder(new EmptyBorder(10,10,10,10)); temp.setEditable(false); return(temp); } private JButton createResetButton() { JButton temp = new JButton("Reset"); temp.setFont(new Font("Helvetica",Font.PLAIN,12)); temp.removeActionListener(this); return(temp); } private JButton createGameButton (int i) { String s=Integer.toString(i); JButton temp = new JButton(s); temp.setFont(new Font("Helvetica",Font.PLAIN,12)); temp.setForeground(Color.black); //set color of the game button text temp.setBackground(Color.yellow); //set the game button background color return(temp); } public void actionPerformed(ActionEvent e) //Returns the pushed button # { if (waitingForReset==true) resetGame(); else { String textInButton = ((JButton)e.getSource()).getText(); int numberOfButton=Integer.parseInt(textInButton); processNumberSelect(numberOfButton); } } private void processNumberSelect (int guess) { if (guess==secretNumber) gameWon(); else if (--tries <= 0 ) gameLost(); else { tryMessage(tries); if (guess