Reset ball on top of battle when hitting bottom edge of screen
Render paddle from bottom-left Change screen-edge reflection checks Remove use of 'this' where not needed Make BrickBuster entities private
This commit is contained in:
		@ -16,15 +16,13 @@ public class BrickBuster extends ApplicationAdapter {
 | 
			
		||||
	public static final int HEIGHT = 600;
 | 
			
		||||
	public static final String TITLE = "Brick Buster";
 | 
			
		||||
 | 
			
		||||
	public static final Vector2 RIGHT_EDGE = new Vector2(0, 1);
 | 
			
		||||
	public static final Vector2 TOP_EDGE = new Vector2(-1, 0);
 | 
			
		||||
	public static final Vector2 LEFT_EDGE = new Vector2(0, -1);
 | 
			
		||||
	public static final Vector2 BOTTOM_EDGE = new Vector2(1, 0);
 | 
			
		||||
	public static final Vector2 HORIZONTAL_EDGE = new Vector2(1, 0);
 | 
			
		||||
	public static final Vector2 VERTICAL_EDGE = new Vector2(0, 1);
 | 
			
		||||
 | 
			
		||||
	Ball ball;
 | 
			
		||||
	Paddle paddle;
 | 
			
		||||
	ArrayList<Block> blocks;
 | 
			
		||||
	boolean playing = false;
 | 
			
		||||
	private Ball ball;
 | 
			
		||||
	private Paddle paddle;
 | 
			
		||||
	private ArrayList<Block> blocks;
 | 
			
		||||
	private boolean playing = false;
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void create () {
 | 
			
		||||
@ -66,13 +64,16 @@ public class BrickBuster extends ApplicationAdapter {
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void dispose () {
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean isPlaying() {
 | 
			
		||||
		return playing;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setPlaying(boolean playing) {
 | 
			
		||||
		this.playing = playing;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Ball getBall() {
 | 
			
		||||
		return ball;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
package com.me.brickbuster.entity;
 | 
			
		||||
 | 
			
		||||
import com.badlogic.gdx.graphics.Color;
 | 
			
		||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
 | 
			
		||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
 | 
			
		||||
import com.badlogic.gdx.math.MathUtils;
 | 
			
		||||
import com.badlogic.gdx.math.Vector2;
 | 
			
		||||
import com.me.brickbuster.BrickBuster;
 | 
			
		||||
@ -16,14 +16,14 @@ public class Ball extends Entity {
 | 
			
		||||
	public float speed;
 | 
			
		||||
 | 
			
		||||
	public Ball(BrickBuster brickBuster) {
 | 
			
		||||
		super(brickBuster, BrickBuster.WIDTH/2, Paddle.PADDLE_Y + RADIUS + Paddle.PADDLE_HEIGHT/2);
 | 
			
		||||
		super(brickBuster,BrickBuster.WIDTH/2, Paddle.PADDLE_Y + Paddle.PADDLE_HEIGHT + RADIUS);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void render() {
 | 
			
		||||
		getShapeRenderer().begin(ShapeRenderer.ShapeType.Filled);
 | 
			
		||||
		getShapeRenderer().begin(ShapeType.Filled);
 | 
			
		||||
		getShapeRenderer().setColor(BALL_COLOR);
 | 
			
		||||
		getShapeRenderer().circle(this.getX(), this.getY(), RADIUS);
 | 
			
		||||
		getShapeRenderer().circle(getX(), getY(), RADIUS);
 | 
			
		||||
		getShapeRenderer().end();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -36,14 +36,12 @@ public class Ball extends Entity {
 | 
			
		||||
		int newX = getX() + (int) (direction.x * speed);
 | 
			
		||||
		int newY = getY() + (int) (direction.y * speed);
 | 
			
		||||
 | 
			
		||||
		if (newX + RADIUS > BrickBuster.WIDTH) {
 | 
			
		||||
			Utils.reflect(direction, BrickBuster.RIGHT_EDGE);
 | 
			
		||||
		if (newX + RADIUS > BrickBuster.WIDTH || newX - RADIUS < 0) {
 | 
			
		||||
			Utils.reflect(direction, BrickBuster.VERTICAL_EDGE);
 | 
			
		||||
		} else if (newY + RADIUS > BrickBuster.HEIGHT) {
 | 
			
		||||
			Utils.reflect(direction, BrickBuster.TOP_EDGE);
 | 
			
		||||
		} else if (newX - RADIUS < 0) {
 | 
			
		||||
			Utils.reflect(direction, BrickBuster.LEFT_EDGE);
 | 
			
		||||
			Utils.reflect(direction, BrickBuster.HORIZONTAL_EDGE);
 | 
			
		||||
		} else if (newY - RADIUS < 0) {
 | 
			
		||||
			Utils.reflect(direction, BrickBuster.BOTTOM_EDGE);
 | 
			
		||||
			reset();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		setX(getX() + (int) (direction.x * speed));
 | 
			
		||||
@ -55,4 +53,10 @@ public class Ball extends Entity {
 | 
			
		||||
		direction = new Vector2(MathUtils.cos(angle), MathUtils.sin(angle));
 | 
			
		||||
		speed = 5;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void reset() {
 | 
			
		||||
		setX(getBrickBuster().getPaddle().getX() + Paddle.PADDLE_WIDTH/2);
 | 
			
		||||
		setY(Paddle.PADDLE_Y + Paddle.PADDLE_HEIGHT + RADIUS);
 | 
			
		||||
		getBrickBuster().setPlaying(false);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
package com.me.brickbuster.entity;
 | 
			
		||||
 | 
			
		||||
import com.badlogic.gdx.graphics.Color;
 | 
			
		||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
 | 
			
		||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
 | 
			
		||||
import com.me.brickbuster.BrickBuster;
 | 
			
		||||
 | 
			
		||||
public class Block extends Entity {
 | 
			
		||||
@ -15,7 +15,7 @@ public class Block extends Entity {
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void render() {
 | 
			
		||||
		getShapeRenderer().begin(ShapeRenderer.ShapeType.Filled);
 | 
			
		||||
		getShapeRenderer().begin(ShapeType.Filled);
 | 
			
		||||
		getShapeRenderer().setColor(BLOCK_COLOR);
 | 
			
		||||
		getShapeRenderer().rect(getX(), getY(), BLOCK_WIDTH, BLOCK_HEIGHT);
 | 
			
		||||
		getShapeRenderer().end();
 | 
			
		||||
 | 
			
		||||
@ -3,26 +3,28 @@ package com.me.brickbuster.entity;
 | 
			
		||||
import com.badlogic.gdx.Gdx;
 | 
			
		||||
import com.badlogic.gdx.Input;
 | 
			
		||||
import com.badlogic.gdx.graphics.Color;
 | 
			
		||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
 | 
			
		||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
 | 
			
		||||
import com.badlogic.gdx.math.Vector2;
 | 
			
		||||
import com.me.brickbuster.BrickBuster;
 | 
			
		||||
import net.dermetfan.utils.Pair;
 | 
			
		||||
 | 
			
		||||
public class Paddle extends Entity {
 | 
			
		||||
 | 
			
		||||
	public static final Color PADDLE_COLOR = Color.BLACK;
 | 
			
		||||
	public static final int PADDLE_WIDTH = 100;
 | 
			
		||||
	public static final int PADDLE_HEIGHT = 16;
 | 
			
		||||
	public static final int PADDLE_Y = 25;
 | 
			
		||||
	public static final int PADDLE_HEIGHT = 10;
 | 
			
		||||
	public static final int PADDLE_Y = 15;
 | 
			
		||||
	public static final int PADDLE_SPEED = 10;
 | 
			
		||||
 | 
			
		||||
	public Paddle(BrickBuster brickBuster) {
 | 
			
		||||
		super(brickBuster, BrickBuster.WIDTH/2, PADDLE_Y);
 | 
			
		||||
		super(brickBuster, BrickBuster.WIDTH / 2 - PADDLE_WIDTH / 2, PADDLE_Y);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void render() {
 | 
			
		||||
		getShapeRenderer().begin(ShapeRenderer.ShapeType.Filled);
 | 
			
		||||
		getShapeRenderer().begin(ShapeType.Filled);
 | 
			
		||||
		getShapeRenderer().setColor(PADDLE_COLOR);
 | 
			
		||||
		getShapeRenderer().rect(getX() - (PADDLE_WIDTH/2), getY() - (PADDLE_HEIGHT/2), PADDLE_WIDTH, PADDLE_HEIGHT);
 | 
			
		||||
		getShapeRenderer().rect(getX(), getY(), PADDLE_WIDTH, PADDLE_HEIGHT);
 | 
			
		||||
		getShapeRenderer().end();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -30,7 +32,7 @@ public class Paddle extends Entity {
 | 
			
		||||
	public void update(float dt) {
 | 
			
		||||
		Ball ball = getBrickBuster().getBall();
 | 
			
		||||
		if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
 | 
			
		||||
			if (getX() - PADDLE_SPEED - PADDLE_WIDTH/2 < 0) {
 | 
			
		||||
			if (getX() - PADDLE_SPEED < 0) {
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			setX(getX() - PADDLE_SPEED);
 | 
			
		||||
@ -39,7 +41,7 @@ public class Paddle extends Entity {
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
 | 
			
		||||
			if (getX() + PADDLE_SPEED + PADDLE_WIDTH/2 > BrickBuster.WIDTH) {
 | 
			
		||||
			if (getX() + PADDLE_SPEED + PADDLE_WIDTH > BrickBuster.WIDTH) {
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			setX(getX() + PADDLE_SPEED);
 | 
			
		||||
@ -49,4 +51,11 @@ public class Paddle extends Entity {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Pair<Vector2, Vector2> getTopEdge() {
 | 
			
		||||
		return new Pair<Vector2, Vector2>(
 | 
			
		||||
				new Vector2(getX(), getY() + PADDLE_HEIGHT),
 | 
			
		||||
				new Vector2(getX() + PADDLE_WIDTH, getY() + PADDLE_HEIGHT)
 | 
			
		||||
		);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user