Want more features on Pastebin? Sign Up, it's FREE!
Guest

GameScreen.java

By: bassex96 on Apr 18th, 2013  |  syntax: Java  |  size: 5.53 KB  |  views: 24  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package com.psillicoder.brickbreaker;
  2.  
  3. import com.badlogic.gdx.ApplicationListener;
  4. import com.badlogic.gdx.Game;
  5. import com.badlogic.gdx.Screen;
  6. import com.badlogic.gdx.Gdx;
  7. import com.badlogic.gdx.Input.Keys;
  8. import com.badlogic.gdx.graphics.GL20;
  9. import com.badlogic.gdx.graphics.OrthographicCamera;
  10. import com.badlogic.gdx.graphics.Texture;
  11. //import com.badlogic.gdx.graphics.Texture.TextureFilter;
  12. //import com.badlogic.gdx.graphics.g2d.Sprite;
  13. import com.badlogic.gdx.graphics.g2d.SpriteBatch;
  14. import com.badlogic.gdx.graphics.g2d.TextureRegion;
  15. import com.badlogic.gdx.graphics.g2d.BitmapFont;
  16. import com.badlogic.gdx.math.Rectangle;
  17. import com.badlogic.gdx.math.Vector2;
  18. import com.psillicoder.brickbreaker.MyGame;
  19. import com.psillicoder.brickbreaker.Level;
  20.  
  21. import java.util.ArrayList;
  22.  
  23. public class GameScreen implements Screen {
  24.        
  25.         public Game MyGame;
  26.        
  27.         private OrthographicCamera camera;
  28.         private SpriteBatch batch;
  29.  
  30.         private Ball ball;
  31.         private Paddle paddle;
  32.         private Level level;
  33.        
  34.                
  35.         Brick[] bricks;
  36.  
  37.         public boolean isActive;
  38.  
  39.         private BitmapFont font;
  40.         private String strBricks = "Bricks: ";
  41.         private float textWidth;
  42.         private float textHeight;
  43.  
  44.         public GameScreen(Game g)
  45.         {
  46.                 MyGame = g;
  47.         }
  48.        
  49.  
  50.  
  51.         @Override
  52.         public void dispose() {
  53.                 batch.dispose();
  54.                
  55.                
  56.         }
  57.        
  58.                 public void render(float delta) {              
  59.                 if (isActive) {
  60.                
  61.  
  62.                
  63.                
  64.                 paddle.CheckKeys();
  65.                 CheckCollisions();
  66.                
  67.                 strBricks = "Bricks: " + level.getBrickCount();
  68.                 moveBall();
  69.                
  70.                
  71.                
  72.                
  73.                
  74.                
  75.                
  76.                 batch.begin();
  77.                
  78.                 font.draw(batch,strBricks,5,15);
  79.                 level.drawBricks(batch);
  80.                
  81.                 ball.draw(batch);
  82.                 paddle.draw(batch);
  83.                 batch.end();
  84.                
  85.                 }
  86. }
  87.  
  88.         @Override
  89.         public void resize(int width, int height) {
  90.         }
  91.  
  92.         @Override
  93.         public void pause() {
  94.         }
  95.  
  96.         @Override
  97.         public void resume() {
  98.         }
  99.  
  100.        
  101.  
  102.        
  103.        
  104.         private void CheckCollisions() {
  105.                 checkPaddleCollision();
  106.                 checkBrickCollision();
  107.         }
  108.        
  109.        
  110.         public void checkBrickCollision()
  111.         {
  112.                 for (int i=0;i<level.brickCount;i++) {
  113.                                
  114.                                 if (level.bricks[i].GetVisible() == true) {
  115.                                         if (level.bricks[i].getRect().overlaps(ball.getRect()))
  116.                                         {
  117.                
  118.                        
  119.                        
  120.                         int xd = (int) Math.abs( (ball.ballRect.x + ball.ballRect.width - level.bricks[i].brickRect.x - level.bricks[i].getRect().width) /2 );
  121.                         int yd = (int) Math.abs( (ball.ballRect.y + ball.ballRect.height - level.bricks[i].brickRect.y - level.bricks[i].getRect().height) /2 );
  122.                        
  123.                         if (xd > yd)
  124.                         {
  125.                             // Collision on top or bottom, reverse y velocity
  126.                             ball.ballSpeedY = -ball.ballSpeedY;
  127.                             level.bricks[i].isVisible = false;
  128.                             //level.brickCount--;
  129.                             System.out.println("Top/Bottom");
  130.                             return;
  131.                         }
  132.                
  133.                
  134.                         if (yd > xd)
  135.                         {
  136.                             // Collision on left or right, reverse x velocity
  137.                             ball.ballSpeedX = -ball.ballSpeedX;
  138.                             level.bricks[i].isVisible = false;
  139.                             //level.brickCount--;
  140.                             System.out.println("Sides");
  141.                             return;
  142.                         }
  143.                        
  144.                         if (xd == yd)
  145.                         {
  146.                             // Collision on corners, reverse both
  147.                             ball.ballSpeedX = -ball.ballSpeedX;
  148.                             ball.ballSpeedY = -ball.ballSpeedY;
  149.                             level.bricks[i].isVisible = false;
  150.                             //level.brickCount--;
  151.                             System.out.println("Corners");
  152.                             return;
  153.                         }                      
  154.                
  155.                                         //level.brickCount--;
  156.                        
  157.                                         }              
  158.         }
  159. }
  160. }
  161.        
  162.         public void moveBall() {
  163.                 ball.ballRect.x= ball.ballRect.x + ball.ballSpeedX;
  164.                 ball.ballRect.y= ball.ballRect.y + ball.ballSpeedY;
  165.                
  166.                 if (ball.ballRect.x >= 420-16){ball.ballSpeedX=-ball.ballSpeedX;}
  167.                 if (ball.ballRect.x <= 0){ball.ballSpeedX=-ball.ballSpeedX;}
  168.                
  169.                 if (ball.ballRect.y >= 600-16){ball.ballSpeedY=-ball.ballSpeedY;}
  170.                 if (ball.ballRect.y <= 0){ball.ballSpeedY=-ball.ballSpeedY;}
  171.                
  172.                 //if (ballRect.overlaps(paddleRect)){ballSpeedY = -ballSpeedY;}
  173.                
  174.                
  175.                 ball.ballRect.x= ball.ballRect.x + ball.ballSpeedX;
  176.                 ball.ballRect.y= ball.ballRect.y + ball.ballSpeedY;
  177.                
  178.                
  179.                
  180.         }
  181.        
  182.         public void checkPaddleCollision()
  183.         {
  184.                 if (ball.ballRect.overlaps(paddle.paddleRect))
  185.                 {
  186.                         int first = (int)paddle.paddleRect.x + 8;
  187.                         int second = (int)paddle.paddleRect.x + 16;
  188.                         int third = (int)paddle.paddleRect.x+24;
  189.                         int fourth = (int)paddle.paddleRect.x+32;
  190.                        
  191.                         if (ball.ballRect.x < first) {
  192.                                 //ball.ballSpeedX = -ball.ballSpeedX;
  193.                                 ball.ballSpeedY = -ball.ballSpeedY;
  194.                         }
  195.                        
  196.                         if (ball.ballRect.x >= first && ball.ballRect.x < second) {
  197.                                 //ball.ballSpeedX = -1;
  198.                                 ball.ballSpeedY = -ball.ballSpeedY;
  199.                                 }
  200.                        
  201.                         if (ball.ballRect.x >= second && ball.ballRect.x < third) {
  202.                                 //ball.ballSpeedX = 0;
  203.                                 ball.ballSpeedY = 1;
  204.                         }
  205.                        
  206.                         if (ball.ballRect.x >= third && ball.ballRect.x < fourth) {
  207.                                 //ball.ballSpeedX = 1;
  208.                                 ball.ballSpeedY = -ball.ballSpeedY;
  209.                         }
  210.                        
  211.                         if (ball.ballRect.x >= fourth) {
  212.                                 //ball.ballSpeedX = 1;
  213.                                 ball.ballSpeedY = 1;
  214.                         }
  215.                        
  216.                        
  217.                 }
  218.        
  219.         }
  220.  
  221.  
  222.  
  223.         @Override
  224.         public void show() {
  225.                 isActive = true;
  226.        
  227.                 float w = Gdx.graphics.getWidth();
  228.                 float h = Gdx.graphics.getHeight();
  229.                 Gdx.gl.glClearColor(0, 0, 0, 1);
  230.                 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  231.                
  232.                
  233.                 //Initialize objects
  234.                 ball = new Ball();
  235.                 paddle = new Paddle();
  236.                 level = new Level();
  237.                                                
  238.                 camera = new OrthographicCamera(1, h/w);
  239.                
  240.                 batch = new SpriteBatch();
  241.                 //Text stuff
  242.                 font = new BitmapFont();
  243.                 textWidth = font.getBounds(strBricks).width;
  244.                 textHeight = font.getBounds(strBricks).height;
  245.                
  246.                 //Load level Bricks
  247.                 level.LoadBricks();
  248.                 camera.update();
  249.                
  250.         }
  251.  
  252.  
  253.         @Override
  254.         public void hide() {
  255.                 isActive = false;
  256.                
  257.         }
  258.        
  259. }
clone this paste RAW Paste Data