Advertisement
JHawkins

Project Pinball - all classes v0.7b

Apr 6th, 2014
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 15.99 KB | None | 0 0
  1. === Game.java ===
  2. package Game;
  3.  
  4. import java.awt.Color;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.Window;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.KeyEvent;
  11. import java.awt.event.KeyListener;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.event.MouseMotionListener;
  14. import java.util.LinkedList;
  15. import javax.swing.JFrame;
  16. import javax.swing.JMenu;
  17. import javax.swing.JMenuBar;
  18. import javax.swing.JOptionPane;
  19. import javax.swing.JPanel;
  20. import javax.swing.Timer;
  21.  
  22. public class Game implements KeyListener, MouseMotionListener
  23. {
  24.  
  25.     //Declaration of the variables
  26.     //<editor-fold defaultstate="collapsed" desc=" Variables ">
  27.  
  28.     //<editor-fold defaultstate="collapsed" desc=" Player Variables ">
  29.     /** @param    player_lives     Frame size of X */
  30.     private int player_lives = 3;
  31.     //</editor-fold>
  32.    
  33.     //<editor-fold defaultstate="collapsed" desc=" Scale Variables ">
  34.     /** @param    frame_getX     Frame size of X */
  35.     private double frame_getX = -1;
  36.    
  37.     /** @param    frame_getY     Frame size of Y */
  38.     private double frame_getY = -1;
  39.     //</editor-fold>
  40.    
  41.     //<editor-fold defaultstate="collapsed" desc=" Movement Variables">
  42.     /** @param    ball_deltaX   Ball accellaration to X-Coordinate */
  43.     private int ball_deltaX = 1;
  44.    
  45.     /** @param    ball_deltaY   Ball accellaration to Y-Coordinate */
  46.     private int ball_deltaY = 1;
  47.     //</editor-fold>
  48.    
  49.     //<editor-fold defaultstate="collapsed" desc=" Ball Variables">
  50.     /** @param    ball_posX     Ball position on X-Coordinate */
  51.     private double ball_posX = -1.0;
  52.    
  53.     /** @param    ball_posY     Ball position on Y-Coordinate */
  54.     private double ball_posY = -1.0;
  55.    
  56.     /** @return   ball_radius   Ball radius */
  57.     private final int ball_radius = 10;
  58.     //</editor-fold>
  59.    
  60.     //<editor-fold defaultstate="collapsed" desc=" Paddle Variables">
  61.     /** @param    paddle_posX     Paddle position on X-Coordinate */
  62.     private double paddle_posX = -1.0;
  63.    
  64.     /** @param    paddle_posY     Paddle position on Y-Coordinate */
  65.     private double paddle_posY = -1.0;
  66.    
  67.     /** @param    paddle_width     Paddle scale (width) */
  68.     private int paddle_width = 100;
  69.    
  70.     /** @param    paddle_height     Paddle scale (height) */
  71.     private int paddle_height = 10;
  72.     //</editor-fold>
  73.    
  74.     //<editor-fold defaultstate="collapsed" desc=" Brick Variables">
  75.     LinkedList level_bricklist = new LinkedList();
  76.    
  77.     /** @param    brick_positionX   Postition of Brick on the X-Coordinate */
  78.     private int brick_positionX = -1;
  79.    
  80.     /** @param    brick_positionY   Postition of Brick on the Y-Coordinate */
  81.     private int brick_positionY = -1;
  82.    
  83.     /** @param    brick_lenght   Lenght of the Brick */
  84.     private int brick_lenght = -1;
  85.    
  86.     /** @param    brick_height   Height of the Brick */
  87.     private int brick_height = -1;
  88.    
  89.     /** @param    brick_isVisible   Returns visibility */
  90.     private boolean brick_isVisible = true;
  91.    
  92.     /** @param    level_counter   Returns the actual level */
  93.     private int level_counter = 0;
  94.    
  95.     //</editor-fold>
  96.    
  97.     //Create new GUI and Panel
  98.     /** @param    game     JFrame, the Frame of the Game. */
  99.     final JFrame game = new JFrame();
  100.    
  101.     /** @param    canvas     JPanel, where the Magic happens. */
  102.     JPanel canvas = new paintObjects();
  103.    
  104.     //Creates a menubar for a JFrame
  105.     /** @param    menuBar     JManu, contains all statistics.
  106.      *                    <br>Available menus:
  107.      *                      <ul><b>returnToMenu</ul>
  108.      *                      <ul><b>pointCounter</ul>
  109.      *                      <ul><b>liveCounter</ul>
  110.      *                      <ul><b>levelCounter</ul>                      
  111.      */
  112.     JMenuBar menuBar = new JMenuBar();
  113.    
  114.     //</editor-fold>
  115.    
  116.    
  117.    
  118.     public void drawFrame(int frame_drawSizeX, int frame_drawSizeY)
  119.     {
  120.         System.out.println("Entering drawFrame();");
  121.        
  122.         //<editor-fold defaultstate="collapsed" desc=" Declaration and Definition of JFrame ">
  123.         game.setType(Window.Type.UTILITY);
  124.         game.setResizable(false);
  125.         game.setSize(frame_drawSizeX, frame_drawSizeY);
  126.         game.setLocationRelativeTo(null);
  127.         game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  128.         game.setVisible(true);
  129.        
  130.         canvas.addMouseMotionListener(this);
  131.         game.addKeyListener(this);
  132.         //</editor-fold>
  133.  
  134.         //<editor-fold defaultstate="collapsed" desc=" JFrame Dynamic Scaling ">
  135.         frame_getX = frame_drawSizeX;
  136.         frame_getY = frame_drawSizeY;
  137.         scaling();
  138.         //</editor-fold>
  139.        
  140.         //<editor-fold defaultstate="collapsed" desc=" Declaration and Definition of JMenu ">
  141.        
  142.         //Add the menubar to the frame
  143.         game.setJMenuBar(menuBar);
  144.  
  145.         //Define and add dropdown menus to the menubar
  146.         final JMenu returnToMenu = new JMenu("Return to Menu");
  147.         final JMenu pointCounter = new JMenu("Your Points: 0");
  148.         final JMenu liveCounter = new JMenu("Remaining Lives: 0");
  149.         final JMenu levelCounter = new JMenu("Level: 0");
  150.  
  151.         //Make them visible:
  152.         menuBar.add(returnToMenu);
  153.         menuBar.add(pointCounter);
  154.         menuBar.add(liveCounter);
  155.         menuBar.add(levelCounter);
  156.         //</editor-fold>
  157.        
  158.         //<editor-fold defaultstate="collapsed" desc=" Objects of class Brick/Levels ">
  159.        
  160.         Brick brick = new Brick();
  161.         Level level = new Level();
  162.        
  163.         //</editor-fold>
  164.        
  165.         game.setPreferredSize(new Dimension(frame_drawSizeX, frame_drawSizeY));
  166.         game.add(canvas);
  167.        
  168.         int delay = 40; //Milliseconds for delay
  169.        
  170.         ActionListener taskPerformer = new ActionListener()
  171.         {
  172.             //Run through this with delay
  173.             @Override
  174.             public void actionPerformed(ActionEvent evt)
  175.             {
  176.              
  177.               liveCounter.setText("Remaining Lives: " + player_lives);
  178.                
  179.               //Move the ball
  180.               ball_posX += ball_deltaX;
  181.               ball_posY += ball_deltaY;
  182.              
  183.               //<editor-fold defaultstate="collapsed" desc=" *Brick Variables SOUT ">
  184.              
  185.               // System.out.format("brick_positionX = %d \nbrick_positionY = %d \nbrick_lenght = %d \nbrick_height = %d \nbrick_isVisible = %b\n\n", brick_positionX, brick_positionY, brick_lenght, brick_height, brick_isVisible);
  186.              
  187.               //</editor-fold>
  188.              
  189.               game.repaint();
  190.              
  191.               //<editor-fold defaultstate="collapsed" desc=" Ball: Frame Collision ">
  192.              
  193.               //Collision of the ball hitting left border
  194.               if (ball_posX < 0)
  195.               {
  196.                    ball_deltaX *= -1;
  197.               }
  198.              
  199.               //Collision of the ball hitting right border
  200.               if (ball_posX + (2*ball_radius) >= game.getWidth())
  201.               {
  202.                    ball_deltaX *= -1;
  203.               }
  204.              
  205.               //Collision of the ball hitting upper border
  206.               if (ball_deltaY < 0)
  207.               {
  208.                   ball_deltaY *= -1;
  209.               }
  210.                    
  211.              
  212.               //Collision of the ball hitting lower border
  213.               if (ball_posY + ball_radius >= game.getHeight())
  214.               {
  215.                   if(player_lives > 0)
  216.                   {
  217.                     JOptionPane.showMessageDialog(null, "You lost one life.");
  218.                    
  219.                     player_lives -= 1;
  220.                     resetBall();
  221.                   }
  222.                   else
  223.                   {
  224.                     Object[] options =
  225.                     {
  226.                         "Yes.",
  227.                         "No.",
  228.                     };
  229.                    
  230.                     int optionDlg_result = JOptionPane.showOptionDialog(null,
  231.                         " YOU LOST. "
  232.                         + "Do you want to start over again?",
  233.                         "Lost.",
  234.                         JOptionPane.YES_NO_CANCEL_OPTION,
  235.                         JOptionPane.QUESTION_MESSAGE,
  236.                         null,
  237.                         options,
  238.                         options[1]);
  239.                    
  240.                     if(optionDlg_result == 0)
  241.                     {
  242.                         game.dispose();
  243.                         drawFrame(player_lives, player_lives);
  244.                     }
  245.                     else
  246.                     {
  247.                         exitGame();
  248.                     }
  249.                    
  250.                   }
  251.               }
  252.                  
  253.            
  254.              
  255.               //</editor-fold>
  256.              
  257.               //<editor-fold defaultstate="collapsed" desc=" Ball: Paddle Collision ">
  258.              
  259.               //Collision of the ball hitting left paddle
  260.               if (ball_posX < 0)
  261.               {
  262.                     System.out.println("Collision left");
  263.                     ball_deltaX *= -1;
  264.               }
  265.                    
  266.               //Collision of the ball hitting right paddle
  267.               if (ball_posX + (2*ball_radius) >= game.getWidth())
  268.               {
  269.                   System.out.println("Collision right");
  270.                   ball_deltaX *= -1;
  271.               }
  272.              
  273.               //Collision of the ball hitting upper paddle
  274.               if ( (ball_posY+ball_radius) >= paddle_posY  && (ball_posY+ball_radius) <= (paddle_posY+paddle_height)  &&  (ball_posX+ball_radius) >= paddle_posX  && (ball_posX+ball_radius) <= (paddle_posX+paddle_width))
  275.               {
  276.                     System.out.println("Collision up");
  277.                     ball_deltaY *= -1;
  278.               }
  279.               //</editor-fold>
  280.             }
  281.         };
  282.         new Timer(delay, taskPerformer).start();
  283.     }
  284.  
  285.     public void resetBall()
  286.     {
  287.         JOptionPane.showMessageDialog(null, "Remaining lives: " + player_lives);
  288.         ball_posX = paddle_posX + (paddle_width/2); //Centered position
  289.         ball_posY = frame_getY*0.65; //65% of the Screen
  290.         ball_deltaX = 1;
  291.         ball_deltaY = 1;
  292.     }
  293.    
  294.     public void exitGame()
  295.     {
  296.         game.setVisible(false);
  297.         game.dispose();
  298.         Menu menu = new Menu();
  299.         menu.setVisible(true);
  300.     }
  301.    
  302.     public void scaling()
  303.     {
  304.        // System.out.format("\n\nBefore Scaling:\nball_posX = %f\nball_posY = %f\npaddle_posX = %f\npaddle_posY = %f\n\n", ball_posX, ball_posY, paddle_posX, paddle_posY);
  305.        // System.out.format("X: %f  ...  Y: %f\n", frame_getX, frame_getY);
  306.  
  307.         //Getting the paddle into a centered position
  308.         paddle_posX = frame_getX /2;
  309.        
  310.         paddle_posY = frame_getY*0.8; //From 80% of the Screen
  311.        
  312.         //Getting the ball into a centered position
  313.         ball_posX =  paddle_posX + (paddle_width/2);
  314.        
  315.         ball_posY = frame_getY*0.65; //From 65% of the Screen
  316.        
  317.        
  318.  
  319.         // System.out.format("\n\nAfter Scaling:\nball_posX = %f\nball_posY = %f\npaddle_posX = %f\npaddle_posY = %f\n\n", ball_posX, ball_posY, paddle_posX, paddle_posY);
  320.         // System.out.format("X: %f  ...  Y: %f\n", frame_getX, frame_getY);
  321.     }
  322.  
  323.    
  324.     // Additional abstract Methods
  325.     //<editor-fold defaultstate="collapsed" desc=" All abstract Methods ">
  326.    
  327.     @Override
  328.     public void keyTyped(KeyEvent ke) {}
  329.  
  330.     // Keyboard Controlls
  331.     @Override
  332.     public void keyPressed(KeyEvent ke)
  333.     {
  334.         System.out.println("Key Pressed!");
  335.         if(ke.getKeyCode() == KeyEvent.VK_RIGHT)
  336.         {
  337.           paddle_posX += 3;  
  338.         }
  339.  
  340.         if(ke.getKeyCode() == KeyEvent.VK_LEFT)
  341.         {
  342.           paddle_posX -= 3;  
  343.         }
  344.     }
  345.  
  346.     @Override
  347.     public void keyReleased(KeyEvent ke) {}
  348.    
  349.     //Mouse Controlls
  350.     @Override
  351.     public void mouseDragged(MouseEvent me) {
  352.        
  353.     }
  354.     //</editor-fold>
  355.    
  356.     // Movement of the paddle when Mouse is moved
  357.     @Override
  358.     public void mouseMoved(MouseEvent me)
  359.     {
  360.         paddle_posX = me.getX() - paddle_width / 2;
  361.  
  362.         if (paddle_posX < 0 || me.getX() < 0)
  363.         {
  364.           paddle_posX = 0;
  365.         }
  366.  
  367.         if (paddle_posX + paddle_width >= canvas.getWidth())
  368.         {
  369.           paddle_posX = canvas.getWidth() - paddle_width;
  370.         }
  371.     }
  372.    
  373.     // Drawing objects
  374.     class paintObjects extends JPanel
  375.     {
  376.        
  377.         @Override
  378.         protected void paintComponent(Graphics g)
  379.         {
  380.            
  381.             super.paintComponent(g);
  382.            
  383.             g.setColor(Color.BLACK);
  384.            
  385.             //g draws ball
  386.             g.fillOval( (int) ball_posX, (int) ball_posY, ball_radius*2, ball_radius*2);
  387.            
  388.             //g draws paddle
  389.             g.fillRect( (int) paddle_posX, (int) paddle_posY, paddle_width, paddle_height);
  390.            
  391.            
  392.            
  393.             //g draws bricks
  394.             //<editor-fold defaultstate="collapsed" desc=" *Brick Variables SOUT ">
  395.            
  396.             // System.out.format("brick_positionX = %d \nbrick_positionY = %d \nbrick_lenght = %d \nbrick_height = %d \nbrick_isVisible = %b\n\n", brick_positionX, brick_positionY, brick_lenght, brick_height, brick_isVisible);
  397.              
  398.             //</editor-fold>
  399.              
  400.             // System.out.println("SIZE: " + (int) level_bricklist.size());
  401.              
  402.             if(brick_isVisible == true)
  403.             {
  404.                 for(int i=0; i<level_bricklist.size(); i+=4)
  405.                 {
  406.                     g.drawRect( (int) level_bricklist.get(i), (int) level_bricklist.get(i+1), brick_lenght, brick_height);
  407.                 }
  408.                
  409.             }
  410.            
  411.         }
  412.     }  
  413.  
  414.  
  415. }
  416.  
  417.  
  418.  
  419.  
  420. === Brick.java ===
  421. package Game;
  422.  
  423.  
  424. public class Brick
  425. {
  426.     private int brick_positionX, brick_positionY, brick_lenght, brick_height;
  427.     private boolean isVisible;
  428.    
  429.     public boolean addBrick(int brick_positionX, int brick_positionY, int brick_lenght, int brick_height, boolean isVisible)
  430.     {
  431.         System.out.println("Brick.addBrick();");
  432.         this.brick_positionX = brick_positionX;
  433.         this.brick_positionY = brick_positionY;
  434.         this.brick_lenght = brick_lenght;
  435.         this.brick_height = brick_height;
  436.         this.isVisible = isVisible;
  437.         return true;
  438.     }
  439.  
  440.     public int getBrick_positionX()
  441.     {
  442.         return brick_positionX;
  443.     }
  444.  
  445.     public int getBrick_positionY()
  446.     {
  447.         return brick_positionY;
  448.     }
  449.  
  450.     public int getBrick_lenght()
  451.     {
  452.         return brick_lenght;
  453.     }
  454.  
  455.     public int getBrick_height()
  456.     {
  457.         return brick_height;
  458.     }
  459.    
  460.     public boolean getIsVisible()
  461.     {
  462.         return isVisible;
  463.     }
  464.    
  465. }
  466.  
  467.  
  468.  
  469.  
  470.  
  471. === Level.java ===
  472. package Game;
  473.  
  474. import java.util.LinkedList;
  475.  
  476. public class Level
  477. {
  478.     private int level_counter = 0;
  479.  
  480.     public void Level()
  481.     {
  482.         System.out.println("Entering the Level();");
  483.        
  484.         //Creating the LinkedList level_bricklist
  485.         LinkedList level_bricklist = new LinkedList();
  486.        
  487.         //Creating Object brick
  488.         Brick brick = new Brick();
  489.        
  490.         switch(level_counter)
  491.         {
  492.             case 0:{
  493.                         System.out.println("Adding Bricks to Level 0...");
  494.                         level_bricklist.add(brick.addBrick(400, 30, 50, 50, true));
  495.                         level_bricklist.add(brick.addBrick(500, 30, 50, 50, true));
  496.                         level_bricklist.add(brick.addBrick(600, 30, 50, 50, true));
  497.                         break;
  498.                    }
  499.            
  500.         }
  501.     }
  502.  
  503.     public void setLevel_counter(int level_counter)
  504.     {
  505.         this.level_counter = level_counter;
  506.     }
  507.    
  508. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement