Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.humborstad.GDXTest;
- import com.badlogic.gdx.ApplicationListener;
- import com.badlogic.gdx.Gdx;
- import com.badlogic.gdx.Input.Keys;
- import com.badlogic.gdx.graphics.FPSLogger;
- import com.badlogic.gdx.graphics.GL10;
- import com.badlogic.gdx.graphics.OrthographicCamera;
- import com.badlogic.gdx.graphics.Texture;
- import com.badlogic.gdx.graphics.Texture.TextureFilter;
- import com.badlogic.gdx.graphics.g2d.BitmapFont;
- import com.badlogic.gdx.graphics.g2d.Sprite;
- import com.badlogic.gdx.graphics.g2d.SpriteBatch;
- import com.badlogic.gdx.graphics.g2d.TextureRegion;
- import com.badlogic.gdx.math.Rectangle;
- public class GDXTest implements ApplicationListener {
- private OrthographicCamera camera;
- private SpriteBatch batch;
- private Texture ballTexture;
- private Sprite ballSprite;
- private Texture paddleTexture;
- private Sprite[] paddleSprite = new Sprite[2];
- private Rectangle ballRectangle;
- private Rectangle[] paddleRectangle = new Rectangle[2];
- //We're twoplayers
- private int[] player = new int[2];
- private float ballXMoveSpeed = 300;
- private float ballYMoveSpeed = 300;
- private float w;
- private float h;
- private FPSLogger log = new FPSLogger();
- @Override
- public void create() {
- w = Gdx.graphics.getWidth();
- h = Gdx.graphics.getHeight();
- camera = new OrthographicCamera();
- camera.setToOrtho(false, w, h);
- batch = new SpriteBatch();
- ballTexture = new Texture(Gdx.files.internal("img/ball.png"));
- ballTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
- paddleTexture = new Texture(Gdx.files.internal("img/paddle.png"));
- paddleTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
- TextureRegion ballRegion = new TextureRegion(ballTexture, 0, 0, 16, 16);
- TextureRegion paddleRegion = new TextureRegion(paddleTexture, 0, 0, 16, 64);
- ballSprite = new Sprite(ballRegion);
- //ballSprite.setSize(0.9f, 0.9f * ballSprite.getHeight() / ballSprite.getWidth());
- // create a Rectangle to logically represent the bucket
- ballRectangle = new Rectangle();
- ballRectangle.x = w/2; // center the bucket horizontally
- ballRectangle.y = h/2; // bottom left corner of the bucket is 20 pixels above the bottom screen edge
- ballRectangle.width = 16;
- ballRectangle.height = 16;
- ballSprite.setOrigin(ballSprite.getWidth()/2, ballSprite.getHeight()/2);
- ballSprite.setPosition(ballRectangle.x, ballRectangle.y);
- paddleSprite[0] = new Sprite(paddleRegion);
- paddleSprite[1] = new Sprite(paddleRegion);
- //ballSprite.setSize(0.9f, 0.9f * ballSprite.getHeight() / ballSprite.getWidth());
- // create a Rectangle to logically represent the bucket
- paddleRectangle[0] = new Rectangle();
- paddleRectangle[0].width = 16;
- paddleRectangle[0].height = 64;
- paddleRectangle[0].x = 30; // center the bucket horizontally
- paddleRectangle[0].y = h/2; // bottom left corner of the bucket is 20 pixels above the bottom screen edge
- paddleRectangle[1] = new Rectangle();
- paddleRectangle[1].width = 16;
- paddleRectangle[1].height = 64;
- paddleRectangle[1].x = w - 30 - paddleRectangle[1].width; // center the bucket horizontally
- paddleRectangle[1].y = h/2; // bottom left corner of the bucket is 20 pixels above the bottom screen edge
- paddleSprite[0].setOrigin(paddleSprite[0].getWidth()/2, paddleSprite[0].getHeight()/2);
- paddleSprite[0].setPosition(paddleRectangle[0].x, paddleRectangle[0].y);
- for(int i = 0; i < player.length; i++){
- player[i] = 0;
- }
- }
- @Override
- public void dispose() {
- batch.dispose();
- ballTexture.dispose();
- paddleTexture.dispose();
- }
- @Override
- public void render() {
- // clear the screen with a dark blue color. The
- // arguments to glClearColor are the red, green
- // blue and alpha component in the range [0,1]
- // of the color to be used to clear the screen.
- Gdx.gl.glClearColor(0, 0, 0.2f, 1);
- Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
- // tell the camera to update its matrices.
- camera.update();
- // tell the SpriteBatch to render in the
- // coordinate system specified by the camera.
- batch.setProjectionMatrix(camera.combined);
- if(Gdx.input.isKeyPressed(Keys.S)) paddleRectangle[0].y -= 400 * Gdx.graphics.getDeltaTime();
- if(Gdx.input.isKeyPressed(Keys.W)) paddleRectangle[0].y += 400 * Gdx.graphics.getDeltaTime();
- if(Gdx.input.isKeyPressed(Keys.DOWN)) paddleRectangle[1].y -= 400 * Gdx.graphics.getDeltaTime();
- if(Gdx.input.isKeyPressed(Keys.UP)) paddleRectangle[1].y += 400 * Gdx.graphics.getDeltaTime();
- //Uh, yay for readability.
- for(Rectangle i : paddleRectangle){
- if(i.y < 0) i.y = 0;
- if(i.y > h - i.height) i.y = h - i.height;
- }
- if(ballRectangle.x + ballRectangle.width < 0 ){
- player[1]++;
- ballRectangle.x = w - w/4;
- //ballXMoveSpeed =- ballXMoveSpeed;
- } else if(ballRectangle.x + ballRectangle.width > w){
- player[0]++;
- ballRectangle.x = w/4;
- //ballXMoveSpeed =- ballXMoveSpeed;
- } else if (ballRectangle.y < 0 || ballRectangle.y + ballRectangle.height > h){
- ballYMoveSpeed =- ballYMoveSpeed;
- }
- for(Rectangle i : paddleRectangle){
- if(ballRectangle.overlaps(i)){
- ballXMoveSpeed =- ballXMoveSpeed;
- }
- }
- batch.setProjectionMatrix(camera.combined);
- batch.begin();
- ballSprite.setPosition(ballRectangle.x, ballRectangle.y);
- ballSprite.draw(batch);
- //This is a bit sketchy. We don't certainly know if paddleSprite.length == paddleRectangle.length
- for(int i = 0; i < paddleSprite.length; i ++){
- BitmapFont font = new BitmapFont();
- font.draw(batch, String.valueOf(player[1]), w - 50, h - 50);
- font.draw(batch, String.valueOf(player[0]), 50, h - 50);
- paddleSprite[i].setPosition(paddleRectangle[i].x, paddleRectangle[i].y);
- paddleSprite[i].draw(batch);
- }
- log.log();
- batch.end();
- ballRectangle.x += ballXMoveSpeed * Gdx.graphics.getDeltaTime();
- ballRectangle.y += ballYMoveSpeed * Gdx.graphics.getDeltaTime();
- }
- @Override
- public void resize(int width, int height) {
- }
- @Override
- public void pause() {
- }
- @Override
- public void resume() {
- }
- }
Advertisement