Advertisement
jdalbey

HiLoGame.java

Apr 9th, 2016
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 7.38 KB | None | 0 0
  1. /**
  2. *  Source code auto-generated by Simple GUI Extension for BlueJ
  3. */
  4. import javax.swing.UIManager.LookAndFeelInfo;
  5. import java.awt.*;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.awt.event.KeyAdapter;
  9. import java.awt.event.KeyEvent;
  10. import java.awt.event.MouseAdapter;
  11. import java.awt.event.MouseEvent;
  12. import java.awt.event.MouseWheelEvent;
  13. import java.awt.event.MouseWheelListener;
  14. import javax.swing.border.Border;
  15. import javax.swing.*;
  16.  
  17. /** Graphical High Low Game.  The user guesses whether the next card will be
  18.  * higher or lower than the current card.
  19.  * @author jdalbey
  20.  * @version 2016.4.9
  21.  */
  22. public class HiLoGame extends JFrame
  23. {
  24.     public enum Guess{ low, high };
  25.    
  26.     private int bankroll;   // how much money the player has
  27.     private int currentNum; // the current displayed number
  28.     private int maxHigh;    // the highest number that can be dealt
  29.  
  30.     private JMenuBar menuBar;
  31.     private JButton button1;
  32.     private JButton button2;
  33.     private JLabel label1;
  34.     private JLabel label2;
  35.     private JTextField txtNumber;
  36.     private JTextField txtBalance;
  37.  
  38.     //Constructor
  39.     public HiLoGame()
  40.     {
  41.         this.setTitle("Hi Lo Game");
  42.         this.setSize(366,225);
  43.         //menu generate method
  44.         generateMenu();
  45.         this.setJMenuBar(menuBar);
  46.  
  47.         //pane with null layout
  48.         JPanel contentPane = new JPanel(null);
  49.         contentPane.setPreferredSize(new Dimension(366,225));
  50.         contentPane.setBackground(new Color(192,192,192));
  51.  
  52.  
  53.         button1 = new JButton();
  54.         button1.setBounds(13,90,112,34);
  55.         button1.setBackground(new Color(214,217,223));
  56.         button1.setForeground(new Color(0,0,0));
  57.         button1.setEnabled(true);
  58.         button1.setFont(new Font("DejaVu Sans",0,12));
  59.         button1.setText("Guess High");
  60.         button1.setVisible(true);
  61.         //Set action for button click
  62.         //Call defined method
  63.         button1.addActionListener(new ActionListener() {
  64.             public void actionPerformed(ActionEvent evt) {
  65.                 guessHigh(evt);
  66.             }
  67.         });
  68.  
  69.  
  70.         button2 = new JButton();
  71.         button2.setBounds(14,139,110,33);
  72.         button2.setBackground(new Color(214,217,223));
  73.         button2.setForeground(new Color(0,0,0));
  74.         button2.setEnabled(true);
  75.         button2.setFont(new Font("DejaVu Sans",0,12));
  76.         button2.setText("Guess Low");
  77.         button2.setVisible(true);
  78.         //Set action for button click
  79.         //Call defined method
  80.         button2.addActionListener(new ActionListener() {
  81.             public void actionPerformed(ActionEvent evt) {
  82.                 guessLow(evt);
  83.             }
  84.         });
  85.  
  86.  
  87.         label1 = new JLabel();
  88.         label1.setBounds(16,31,90,35);
  89.         label1.setBackground(new Color(214,217,223));
  90.         label1.setForeground(new Color(0,0,0));
  91.         label1.setEnabled(true);
  92.         label1.setFont(new Font("DejaVu Sans",0,12));
  93.         label1.setText("Number");
  94.         label1.setVisible(true);
  95.  
  96.         label2 = new JLabel();
  97.         label2.setBounds(177,27,87,41);
  98.         label2.setBackground(new Color(214,217,223));
  99.         label2.setForeground(new Color(0,0,0));
  100.         label2.setEnabled(true);
  101.         label2.setFont(new Font("DejaVu Sans",0,12));
  102.         label2.setText("Balance");
  103.         label2.setVisible(true);
  104.  
  105.         txtNumber = new JTextField();
  106.         txtNumber.setBounds(75,30,54,32);
  107.         txtNumber.setBackground(new Color(255,255,255));
  108.         txtNumber.setForeground(new Color(0,0,0));
  109.         txtNumber.setEnabled(true);
  110.         txtNumber.setFont(new Font("DejaVu Sans",0,12));
  111.         txtNumber.setText("0");
  112.         txtNumber.setVisible(true);
  113.         txtNumber.setEditable(false);
  114.  
  115.         txtBalance = new JTextField();
  116.         txtBalance.setBounds(247,30,71,34);
  117.         txtBalance.setBackground(new Color(255,255,255));
  118.         txtBalance.setForeground(new Color(0,0,0));
  119.         txtBalance.setEnabled(true);
  120.         txtBalance.setFont(new Font("DejaVu Sans",0,12));
  121.         txtBalance.setText("100");
  122.         txtBalance.setVisible(true);
  123.         txtBalance.setEditable(false);
  124.  
  125.         //adding components to contentPane panel
  126.         contentPane.add(button1);
  127.         contentPane.add(button2);
  128.         contentPane.add(label1);
  129.         contentPane.add(label2);
  130.         contentPane.add(txtNumber);
  131.         contentPane.add(txtBalance);
  132.  
  133.         //adding panel to JFrame and seting of window position and close operation
  134.         this.add(contentPane);
  135.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  136.         this.setLocationRelativeTo(null);
  137.         this.pack();
  138.         this.setVisible(true);
  139.        
  140.         // initialize the game
  141.         bankroll = 100;
  142.         maxHigh = 13;
  143.         // A random integer value in the range [1,maxHigh]
  144.         currentNum = 1 + (int)(Math.random() * ((maxHigh - 1) + 1));
  145.        
  146.         refresh();
  147.     }
  148.  
  149.     //Method actionPerformed for button1
  150.     private void guessHigh (ActionEvent evt)
  151.     {
  152.         takeTurn(Guess.high);
  153.         refresh();
  154.     }
  155.    
  156.     //Method actionPerformed for button2
  157.     private void guessLow (ActionEvent evt)
  158.     {
  159.         takeTurn(Guess.low);
  160.         refresh();
  161.     }
  162.  
  163.     /**
  164.      *  Take a turn
  165.      *  @param guess The user's guess if the next number is higher or lower than current.
  166.      *  @post outcome is computed and bankroll updated, a new currentNum is selected randomly.
  167.      */
  168.     public void takeTurn(Guess guess)
  169.     {
  170.         // pick the next num
  171.         int newNum  = 1 + (int)(Math.random() * ((maxHigh - 1) + 1));
  172.         // compare to previous num
  173.         int diff = newNum - currentNum;
  174.         // Evaluate user's guess
  175.         if (diff > 0)
  176.         {
  177.             // Change the amount of money based on correctness of guess
  178.             if ( guess == Guess.high )
  179.             {
  180.                 bankroll += 10;
  181.             }
  182.             else
  183.             {
  184.                 bankroll -= 10;
  185.             }
  186.         }
  187.         else if (diff < 0)
  188.         {
  189.             // Change the amount of money based on correctness of guess
  190.             if ( guess == Guess.low )
  191.             {
  192.                 bankroll += 10;
  193.             }
  194.             else
  195.             {
  196.                 bankroll -= 10;
  197.             }
  198.         }    
  199.         // if numbers are same nothing happens
  200.         currentNum = newNum;
  201.     }
  202.     /* Update the fields with current values */
  203.     private void refresh()
  204.     {
  205.         txtNumber.setText(""+currentNum);
  206.         txtBalance.setText(""+bankroll);
  207.     }        
  208.     //method for generate menu
  209.     public void generateMenu()
  210.     {
  211.         menuBar = new JMenuBar();
  212.         JMenu file = new JMenu("File");
  213.         JMenuItem exit = new JMenuItem("Exit   ");
  214.         exit.addActionListener(new ActionListener()
  215.         {
  216.             public void actionPerformed(ActionEvent e)
  217.             {
  218.                 dispose();
  219.             }
  220.         });      
  221.         file.add(exit);
  222.         menuBar.add(file);
  223.     }
  224.  
  225.  
  226.  
  227.      public static void main(String[] args)
  228.      {
  229.         System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
  230.         javax.swing.SwingUtilities.invokeLater(new Runnable()
  231.         {
  232.             public void run()
  233.             {
  234.                 new HiLoGame();
  235.             }
  236.         });
  237.     }
  238.  
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement