Versione Desktop (Java)
Versione Android
la libreria riscala le dimensioni previste per la finestra alle reali dimensioni dello schermo del telefono, per questo motivo l'immagine risulta distorta (in origine la visualizzazione e' in landscape)
----------------------------------------------------
package com.me.mygdxgame;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector3;
public class MyGdxGame implements ApplicationListener {
private OrthographicCamera camera;
private SpriteBatch batch;
private Rectangle droid_s;
private Texture droidImage;
private Texture palloneImage;
private Rectangle pallone_s;
private int speed_x;
private int speed_y;
private Sound ballSound;
private int Screen_width;
private int Screen_height;
private int rimbalzi;
private SpriteBatch spriteBatch;
private BitmapFont font;
@Override
public void create() {
//carica il file degli sprite che sono nella directory assets
//gli sprite devono avere come dimensioni potenze di 2 (in questo caso sono 32x32 pixel)
droidImage = new Texture(Gdx.files.internal("data/droid.png"));
palloneImage = new Texture(Gdx.files.internal("data/pallone.png"));
//carica il font contenuto sempre dentro assets
font = new BitmapFont(Gdx.files.internal("data/arial.fnt"), Gdx.files.internal("data/arial.png"), false);
spriteBatch = new SpriteBatch(); //per la scritta
batch = new SpriteBatch(); // per gli sprite
//carica il suono
ballSound = Gdx.audio.newSound(Gdx.files.internal("data/palla.wav"));
//inizializza le variabili
Screen_width = 800;
Screen_height = 480;
rimbalzi = 0;
speed_x = 4 ; //velocita' della palla in pixel
speed_y = -4;
camera = new OrthographicCamera();
camera.setToOrtho(false, Screen_width, Screen_height);
//rettangolo del robottino
droid_s = new Rectangle();
droid_s.x = Screen_width/2 - 32 / 2;
droid_s.y = 10;
droid_s.width = 32;
droid_s.height = 32;
//rettangolo della palla
pallone_s = new Rectangle();
pallone_s.x = Screen_width/2 - 32 / 2;
pallone_s.y = Screen_height/2 - 32 / 2;;
pallone_s.width = 32;
pallone_s.height = 32;
}
@Override
//cancella tutto in uscita dal programma
public void dispose() {
droidImage.dispose();
palloneImage.dispose();
batch.dispose();
spriteBatch.dispose();
font.dispose();
ballSound.dispose();
}
@Override
public void render() {
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
//controlla i rimbalzi
if (pallone_s.x < 0) speed_x = -speed_x;
if (pallone_s.x > 768) speed_x = -speed_x;
if (pallone_s.y == 64)
{
if ((pallone_s.x >= droid_s.x-32) && (pallone_s.x < droid_s.x+32))
{
//se rimbalza sul robottino inverte marcia e fa il suono
speed_y = -speed_y;
ballSound.play();
// aggiorna il numero di rimbalzi
rimbalzi++;
}
}
if (pallone_s.y < 0) //se il pallone esce dal basso reinizia da capo
{
pallone_s.x = Screen_width/2 - 32 / 2;
pallone_s.y = Screen_height/2 - 32 / 2;
speed_x = 4 ;
speed_y = -4;
rimbalzi = 0;
}
if (pallone_s.y > 448) speed_y = -speed_y;
//muove la palla
pallone_s.x = pallone_s.x-speed_x;
pallone_s.y = pallone_s.y-speed_y;
//aggiorna lo schermo
batch.begin();
batch.draw(droidImage,droid_s.x,droid_s.y);
batch.draw(palloneImage,pallone_s.x,pallone_s.y);
batch.end();
spriteBatch.begin();
font.draw(spriteBatch, Integer.toString(rimbalzi), 10, 320);
spriteBatch.end();
//gestisce l'input dell'utente e sposta il robottino
//se non si l'interfaccia touch il robottino si sposta tenendo premendo il tasto
//e muovendo il mouse
if(Gdx.input.isTouched()) {
Vector3 touchPos = new Vector3();
touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(touchPos);
droid_s.x = touchPos.x;
}
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
----------------------------------------------------
Nessun commento:
Posta un commento