Narat
08-06-2011, 01:43
Salve a tutti sto creando un gioco in java con l'utilizzo del bufferimage ma ho un problema cioè: quando creo un pannello oppure utilizzo il frame per creare il menu del gioco come clicco su new game gli eventi della tastiera non funzionano più.
Sapete dirmi il perchè?
grazie in anticipo, vi allego il codice ^_^
package GUI;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
import Thread.ZombieAction;
import Thread.BulletMovements;
import Thread.CreateZombie;
import Thread.CreateEnergyBall;
import Thread.ZombieMovements;
import World.ObjectClass;
import World.UploadImages;
import Players.BulletPlayer;
import Players.Direction;
import Players.Zombie;
import Players.EnergyBall;
import Players.Player;
import World.World;
import XML.LoadMap;
import MouseKeyboardEvents.*;
public class Game extends JFrame implements Runnable,KeyListener{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final int UP = 0;
private static final int DOWN = 1;
private static final int LEFT = 2;
private static final int RIGHT = 3;
private static final int SHOT = 4;
private boolean [] premuti = new boolean[5];
private static MotionDispatcher motion=null;
private BufferStrategy strategy;
private static World world;
private static Player player;
private static Window window;
/**
* Constructor
*/
public Game()
{
initWindow();
initComponnents();
}
/**
* initiate the window
*/
private void initWindow()
{
// setSize(window.getDimensionPixelX(), window.getDimensionPixelY());
setTitle("Gioco");
setSize(800,672);
setUndecorated(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
setIgnoreRepaint(true);
// setFocusable(true);
}
/**
* initiate the componnents
*/
private void initComponnents()
{
setFocusTraversalKeysEnabled(false);
addKeyListener(this);
}
private void initBufferStrategy(){
createBufferStrategy(2);
strategy = getBufferStrategy();
requestFocus();
}
/**
* Draw the frame
* @param panel
* @param graphics graphic
*/
public void newGame(MainPanel panel){
initBufferStrategy();
createMap();
// initComponnents();
Game.this.requestFocus();
run();
}
private void draw(Graphics2D g)
{
Player p = null;
int windowX=window.getPrinterPartX();
int windowY=window.getPrinterPartY();
int posX=window.indexWindowX(player,world);
int posY=window.indexWindowY(player,world);
for(int i=0; i < world.getLIVELLO()-1; i++)
{
for(int j=0; j < windowX; j++)
{
for(int k=0; k < windowY; k++)
{
if(i == 0){
if(world.getWorld()[i][posX][posY] instanceof ObjectClass)
{
ObjectClass ob = (ObjectClass) world.getWorld()[i][posX][posY];
g.drawImage(UploadImages.getSummerTiles()[ob.getID()],ob.getPositionWidth()-window.getPositionWidth(), ob.getPositionHeight()-window.getPositionHeight(), null);
}
}
else if(i==1)
{
if(world.getWorld()[i][posX][posY] instanceof Player)
{
p= (Player) world.getWorld()[i][posX][posY];
drawPlayer(g, p);
}
else if(world.getWorld()[i][posX][posY] instanceof ObjectClass)
{
ObjectClass ob=(ObjectClass) world.getWorld()[1][posX][posY];
if(ob.getID() != 0)
g.drawImage(UploadImages.getSummerTiles()[ob.getID()],ob.getPositionWidth()-window.getPositionWidth(), ob.getPositionHeight()-window.getPositionHeight(), null);
}else if(world.getWorld()[i][posX][posY] instanceof Zombie)
{
Zombie e= (Zombie) world.getWorld()[1][posX][posY];
drawZombie(g,e);
}else if(world.getWorld()[i][posX][posY] instanceof BulletPlayer)
{
BulletPlayer b=(BulletPlayer) world.getWorld()[1][posX][posY];
drawBullet(g,b);
}
else if(world.getWorld()[i][posX][posY] instanceof EnergyBall){
EnergyBall eb = (EnergyBall) world.getWorld()[i][posX][posY];
g.drawImage(UploadImages.getEnergyBall(),eb.getPositionWidth()-window.getPositionWidth(), eb.getPositionHeight()-window.getPositionHeight(), null);
}
}
posY++;
}
posY=window.indexWindowY(player,world);
posX++;
}
posX=window.indexWindowX(player,world);
}
lifeBar(g, p);
g.dispose();
strategy.show();
// PrintWorld();
}
private void lifeBar(Graphics2D g, Player p){
if(p.getHP() >= 100){
g.drawImage(UploadImages.getLifeBar().get(10),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 100 && p.getHP() >= 90){
g.drawImage(UploadImages.getLifeBar().get(9),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 90 && p.getHP() >= 80){
g.drawImage(UploadImages.getLifeBar().get(8),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 80 && p.getHP() >= 70){
g.drawImage(UploadImages.getLifeBar().get(7),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 70 && p.getHP() >= 60){
g.drawImage(UploadImages.getLifeBar().get(6),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 60 && p.getHP() >= 50){
g.drawImage(UploadImages.getLifeBar().get(5),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 50 && p.getHP() >= 40){
g.drawImage(UploadImages.getLifeBar().get(4),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 40 && p.getHP() >= 30){
g.drawImage(UploadImages.getLifeBar().get(3),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 30 && p.getHP() >= 20){
g.drawImage(UploadImages.getLifeBar().get(2),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 20 && p.getHP() >= 1){
g.drawImage(UploadImages.getLifeBar().get(1),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() <= 0){
g.drawImage(UploadImages.getLifeBar().get(0),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}
}
private void drawBullet(Graphics2D g, BulletPlayer b){
if(b.getDirection() == Direction.UP){
g.drawImage(UploadImages.getAmmo().get(Direction.UP), b.getPositionWidth()-window.getPositionWidth(),b.getPositionHeight()-window.getPositionHeight(),null);
}else if(b.getDirection() == Direction.DOWN){
g.drawImage(UploadImages.getAmmo().get(Direction.DOWN), b.getPositionWidth()-window.getPositionWidth(),b.getPositionHeight()-window.getPositionHeight(),null);
}else if(b.getDirection() == Direction.LEFT){
g.drawImage(UploadImages.getAmmo().get(Direction.LEFT), b.getPositionWidth()-window.getPositionWidth(),b.getPositionHeight()-window.getPositionHeight(),null);
}else if(b.getDirection() == Direction.RIGHT){
g.drawImage(UploadImages.getAmmo().get(Direction.RIGHT), b.getPositionWidth()-window.getPositionWidth(),b.getPositionHeight()-window.getPositionHeight(),null);
}
}
private void drawZombie(Graphics2D g, Zombie e) {
// TODO Auto-generated method stub
// if(e.getDirection() == Direction.STOPUP)
// g.drawImage(UploadImages.getEnemySTOP().get(Direction.STOPUP), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
// else if(e.getDirection() == Direction.STOPDOWN)
// g.drawImage(UploadImages.getEnemySTOP().get(Direction.STOPDOWN), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
// else if(e.getDirection() == Direction.STOPLEFT)
// g.drawImage(UploadImages.getEnemySTOP().get(Direction.STOPLEFT), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
// else if(e.getDirection() == Direction.STOPRIGHT)
// g.drawImage(UploadImages.getEnemySTOP().get(Direction.STOPRIGHT), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
if(!e.isAttacking() && !e.isDead()){
if(e.getDirection() == Direction.UP){
g.drawImage(UploadImages.getZombieUP().get(e.getSteps()), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
else if(e.getDirection() == Direction.DOWN){
g.drawImage(UploadImages.getZombieDown().get(e.getSteps()), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
else if(e.getDirection() == Direction.LEFT){
g.drawImage(UploadImages.getZombieLeft().get(e.getSteps()), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
else if(e.getDirection() == Direction.RIGHT){
g.drawImage(UploadImages.getZombieRight().get(e.getSteps()), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
}
else
{
g.drawImage(world.getZombieSprite().get(e.getId()).getCurrentImage(), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
}
private void drawPlayer(Graphics2D g, Player p)
{
if(p.getDirection() == Direction.STOPUP && p.getHP() > 0 && p.isShot())
g.drawImage(UploadImages.getMercenaryShot().get(Direction.UP),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPDOWN && p.getHP() > 0 && p.isShot())
g.drawImage(UploadImages.getMercenaryShot().get(Direction.DOWN),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPLEFT && p.getHP() > 0 && p.isShot())
g.drawImage(UploadImages.getMercenaryShot().get(Direction.LEFT),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPRIGHT && p.getHP() > 0 && p.isShot())
g.drawImage(UploadImages.getMercenaryShot().get(Direction.RIGHT),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPUP && p.getHP() > 0)
g.drawImage(UploadImages.getMercenarySTOP().get(Direction.STOPUP), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPDOWN && p.getHP() > 0)
g.drawImage(UploadImages.getMercenarySTOP().get(Direction.STOPDOWN), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPLEFT && p.getHP() > 0)
g.drawImage(UploadImages.getMercenarySTOP().get(Direction.STOPLEFT), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPRIGHT && p.getHP() > 0)
g.drawImage(UploadImages.getMercenarySTOP().get(Direction.STOPRIGHT), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.UP && p.getHP() > 0)
g.drawImage(UploadImages.getMercenaryN().get(p.getSteps()),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.DOWN && p.getHP() > 0)
g.drawImage(UploadImages.getMercenaryS().get(p.getSteps()), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.RIGHT && p.getHP() > 0)
g.drawImage(UploadImages.getMercenaryE().get(p.getSteps()), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.LEFT && p.getHP() > 0)
g.drawImage(UploadImages.getMercenaryW().get(p.getSteps()), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getHP() <= 0)
g.drawImage(SpriteDeadPlayer.getCurrentImagePlayer(), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
}
/**
* Run the program
*/
@Override
public void run()
{
Graphics2D graphics2D;
while( true )
{
// GET THE BACK BUFFER
graphics2D = (Graphics2D) strategy.getDrawGraphics();
// DO
draw(graphics2D);
// WAIT
// System.out.println(player.getHP());
// PrintWorld();
try{
Thread.sleep(20);
}catch (InterruptedException e){}
}
//System.exit(0);
}
public World getWorld() {
return world;
}
public Player getPlayer() {
return player;
}
public Window getWindow() {
return window;
}
public void PrintWorld(){
for (int i = 0; i < world.getDimensionX(); i++) {
for (int j = 0; j < world.getDimensionY(); j++) {
System.out.print(world.getWorld()[1][i][j]);
}
System.out.println();
}
System.out.println();
System.out.println();
}
private void createMap(){
LoadMap loadMap = new LoadMap();
world = new World(loadMap);
player = loadMap.getPlayer();
window = new Window(800, 672,player,world);
new CreateZombie(world, player).start();
new ZombieMovements(world).start();
new BulletMovements(player,world).start();
new CreateEnergyBall(world).start();
new ZombieAction(world).start();
}
public static void main(String [] args){
// Toolkit kit = Toolkit.getDefaultToolkit();
// Dimension dimension = kit.getScreenSize();
UploadImages.loadImageMap();
UploadImages.loadImageMercenary();
Game game = new Game();
// game.newGame();
MainPanel panel = new MainPanel(game);
game.getContentPane().add(panel);
game.add(panel);
// LoadMap loadMap = new LoadMap();
// world = new World(loadMap);
// player = loadMap.getPlayer();
// window = new Window(800, 672,player,world);
// window = new Window((int)dimension.getWidth(), (int)dimension.getHeight(),player,world);
// player = new Player("Filippo",30,30, Direction.STOPDOWN,world);
// new Enemy(31, 31, Direction.DOWN, world, player);
// new CreateZombie(world, player).start();
// new ZombieMovements(world).start();
// new BulletMovements(player,world).start();
// new CreateEnergyBall(world).start();
// new ZombieAction(world).start();
// new Game().run();
}
@Override
public void keyPressed(KeyEvent e){
int key=e.getKeyCode();
switch (key) {
case KeyEvent.VK_UP:premuti[UP]=true;
break;
case KeyEvent.VK_DOWN: premuti[DOWN]=true;
break;
case KeyEvent.VK_LEFT: premuti[LEFT]=true;
break;
case KeyEvent.VK_RIGHT: premuti[RIGHT]=true;
break;
case KeyEvent.VK_E: premuti[SHOT]=true;
default:
break;
}
if (motion == null || motion.getState() == Thread.State.TERMINATED) {
motion = new MotionDispatcher(this);
motion.start();
}
}
@Override
public void keyReleased(KeyEvent e) {
int key=e.getKeyCode();
switch (key) {
case KeyEvent.VK_UP:
premuti[UP]=false;
break;
case KeyEvent.VK_DOWN:
premuti[DOWN]=false;
break;
case KeyEvent.VK_LEFT:
premuti[LEFT]=false;
break;
case KeyEvent.VK_RIGHT:
premuti[RIGHT]=false;
break;
case KeyEvent.VK_E:
premuti[SHOT]=false;
default:
break;
}
if(!premuti[UP] && !premuti[DOWN] && !premuti[LEFT] && !premuti[RIGHT]) {
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
public boolean[] getPremuti() {
return premuti;
}
public void setPremuti(boolean[] premuti) {
this.premuti = premuti;
}
}
Sapete dirmi il perchè?
grazie in anticipo, vi allego il codice ^_^
package GUI;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
import Thread.ZombieAction;
import Thread.BulletMovements;
import Thread.CreateZombie;
import Thread.CreateEnergyBall;
import Thread.ZombieMovements;
import World.ObjectClass;
import World.UploadImages;
import Players.BulletPlayer;
import Players.Direction;
import Players.Zombie;
import Players.EnergyBall;
import Players.Player;
import World.World;
import XML.LoadMap;
import MouseKeyboardEvents.*;
public class Game extends JFrame implements Runnable,KeyListener{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final int UP = 0;
private static final int DOWN = 1;
private static final int LEFT = 2;
private static final int RIGHT = 3;
private static final int SHOT = 4;
private boolean [] premuti = new boolean[5];
private static MotionDispatcher motion=null;
private BufferStrategy strategy;
private static World world;
private static Player player;
private static Window window;
/**
* Constructor
*/
public Game()
{
initWindow();
initComponnents();
}
/**
* initiate the window
*/
private void initWindow()
{
// setSize(window.getDimensionPixelX(), window.getDimensionPixelY());
setTitle("Gioco");
setSize(800,672);
setUndecorated(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
setIgnoreRepaint(true);
// setFocusable(true);
}
/**
* initiate the componnents
*/
private void initComponnents()
{
setFocusTraversalKeysEnabled(false);
addKeyListener(this);
}
private void initBufferStrategy(){
createBufferStrategy(2);
strategy = getBufferStrategy();
requestFocus();
}
/**
* Draw the frame
* @param panel
* @param graphics graphic
*/
public void newGame(MainPanel panel){
initBufferStrategy();
createMap();
// initComponnents();
Game.this.requestFocus();
run();
}
private void draw(Graphics2D g)
{
Player p = null;
int windowX=window.getPrinterPartX();
int windowY=window.getPrinterPartY();
int posX=window.indexWindowX(player,world);
int posY=window.indexWindowY(player,world);
for(int i=0; i < world.getLIVELLO()-1; i++)
{
for(int j=0; j < windowX; j++)
{
for(int k=0; k < windowY; k++)
{
if(i == 0){
if(world.getWorld()[i][posX][posY] instanceof ObjectClass)
{
ObjectClass ob = (ObjectClass) world.getWorld()[i][posX][posY];
g.drawImage(UploadImages.getSummerTiles()[ob.getID()],ob.getPositionWidth()-window.getPositionWidth(), ob.getPositionHeight()-window.getPositionHeight(), null);
}
}
else if(i==1)
{
if(world.getWorld()[i][posX][posY] instanceof Player)
{
p= (Player) world.getWorld()[i][posX][posY];
drawPlayer(g, p);
}
else if(world.getWorld()[i][posX][posY] instanceof ObjectClass)
{
ObjectClass ob=(ObjectClass) world.getWorld()[1][posX][posY];
if(ob.getID() != 0)
g.drawImage(UploadImages.getSummerTiles()[ob.getID()],ob.getPositionWidth()-window.getPositionWidth(), ob.getPositionHeight()-window.getPositionHeight(), null);
}else if(world.getWorld()[i][posX][posY] instanceof Zombie)
{
Zombie e= (Zombie) world.getWorld()[1][posX][posY];
drawZombie(g,e);
}else if(world.getWorld()[i][posX][posY] instanceof BulletPlayer)
{
BulletPlayer b=(BulletPlayer) world.getWorld()[1][posX][posY];
drawBullet(g,b);
}
else if(world.getWorld()[i][posX][posY] instanceof EnergyBall){
EnergyBall eb = (EnergyBall) world.getWorld()[i][posX][posY];
g.drawImage(UploadImages.getEnergyBall(),eb.getPositionWidth()-window.getPositionWidth(), eb.getPositionHeight()-window.getPositionHeight(), null);
}
}
posY++;
}
posY=window.indexWindowY(player,world);
posX++;
}
posX=window.indexWindowX(player,world);
}
lifeBar(g, p);
g.dispose();
strategy.show();
// PrintWorld();
}
private void lifeBar(Graphics2D g, Player p){
if(p.getHP() >= 100){
g.drawImage(UploadImages.getLifeBar().get(10),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 100 && p.getHP() >= 90){
g.drawImage(UploadImages.getLifeBar().get(9),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 90 && p.getHP() >= 80){
g.drawImage(UploadImages.getLifeBar().get(8),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 80 && p.getHP() >= 70){
g.drawImage(UploadImages.getLifeBar().get(7),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 70 && p.getHP() >= 60){
g.drawImage(UploadImages.getLifeBar().get(6),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 60 && p.getHP() >= 50){
g.drawImage(UploadImages.getLifeBar().get(5),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 50 && p.getHP() >= 40){
g.drawImage(UploadImages.getLifeBar().get(4),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 40 && p.getHP() >= 30){
g.drawImage(UploadImages.getLifeBar().get(3),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 30 && p.getHP() >= 20){
g.drawImage(UploadImages.getLifeBar().get(2),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() < 20 && p.getHP() >= 1){
g.drawImage(UploadImages.getLifeBar().get(1),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}else if(p.getHP() <= 0){
g.drawImage(UploadImages.getLifeBar().get(0),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight()-20, null);
}
}
private void drawBullet(Graphics2D g, BulletPlayer b){
if(b.getDirection() == Direction.UP){
g.drawImage(UploadImages.getAmmo().get(Direction.UP), b.getPositionWidth()-window.getPositionWidth(),b.getPositionHeight()-window.getPositionHeight(),null);
}else if(b.getDirection() == Direction.DOWN){
g.drawImage(UploadImages.getAmmo().get(Direction.DOWN), b.getPositionWidth()-window.getPositionWidth(),b.getPositionHeight()-window.getPositionHeight(),null);
}else if(b.getDirection() == Direction.LEFT){
g.drawImage(UploadImages.getAmmo().get(Direction.LEFT), b.getPositionWidth()-window.getPositionWidth(),b.getPositionHeight()-window.getPositionHeight(),null);
}else if(b.getDirection() == Direction.RIGHT){
g.drawImage(UploadImages.getAmmo().get(Direction.RIGHT), b.getPositionWidth()-window.getPositionWidth(),b.getPositionHeight()-window.getPositionHeight(),null);
}
}
private void drawZombie(Graphics2D g, Zombie e) {
// TODO Auto-generated method stub
// if(e.getDirection() == Direction.STOPUP)
// g.drawImage(UploadImages.getEnemySTOP().get(Direction.STOPUP), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
// else if(e.getDirection() == Direction.STOPDOWN)
// g.drawImage(UploadImages.getEnemySTOP().get(Direction.STOPDOWN), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
// else if(e.getDirection() == Direction.STOPLEFT)
// g.drawImage(UploadImages.getEnemySTOP().get(Direction.STOPLEFT), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
// else if(e.getDirection() == Direction.STOPRIGHT)
// g.drawImage(UploadImages.getEnemySTOP().get(Direction.STOPRIGHT), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
if(!e.isAttacking() && !e.isDead()){
if(e.getDirection() == Direction.UP){
g.drawImage(UploadImages.getZombieUP().get(e.getSteps()), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
else if(e.getDirection() == Direction.DOWN){
g.drawImage(UploadImages.getZombieDown().get(e.getSteps()), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
else if(e.getDirection() == Direction.LEFT){
g.drawImage(UploadImages.getZombieLeft().get(e.getSteps()), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
else if(e.getDirection() == Direction.RIGHT){
g.drawImage(UploadImages.getZombieRight().get(e.getSteps()), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
}
else
{
g.drawImage(world.getZombieSprite().get(e.getId()).getCurrentImage(), e.getPositionWidth()-window.getPositionWidth(),e.getPositionHeight()-window.getPositionHeight(),null);
}
}
private void drawPlayer(Graphics2D g, Player p)
{
if(p.getDirection() == Direction.STOPUP && p.getHP() > 0 && p.isShot())
g.drawImage(UploadImages.getMercenaryShot().get(Direction.UP),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPDOWN && p.getHP() > 0 && p.isShot())
g.drawImage(UploadImages.getMercenaryShot().get(Direction.DOWN),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPLEFT && p.getHP() > 0 && p.isShot())
g.drawImage(UploadImages.getMercenaryShot().get(Direction.LEFT),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPRIGHT && p.getHP() > 0 && p.isShot())
g.drawImage(UploadImages.getMercenaryShot().get(Direction.RIGHT),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPUP && p.getHP() > 0)
g.drawImage(UploadImages.getMercenarySTOP().get(Direction.STOPUP), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPDOWN && p.getHP() > 0)
g.drawImage(UploadImages.getMercenarySTOP().get(Direction.STOPDOWN), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPLEFT && p.getHP() > 0)
g.drawImage(UploadImages.getMercenarySTOP().get(Direction.STOPLEFT), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.STOPRIGHT && p.getHP() > 0)
g.drawImage(UploadImages.getMercenarySTOP().get(Direction.STOPRIGHT), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.UP && p.getHP() > 0)
g.drawImage(UploadImages.getMercenaryN().get(p.getSteps()),p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.DOWN && p.getHP() > 0)
g.drawImage(UploadImages.getMercenaryS().get(p.getSteps()), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.RIGHT && p.getHP() > 0)
g.drawImage(UploadImages.getMercenaryE().get(p.getSteps()), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getDirection() == Direction.LEFT && p.getHP() > 0)
g.drawImage(UploadImages.getMercenaryW().get(p.getSteps()), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
else if(p.getHP() <= 0)
g.drawImage(SpriteDeadPlayer.getCurrentImagePlayer(), p.getPositionWidth()-window.getPositionWidth(),p.getPositionHeight()-window.getPositionHeight(),null);
}
/**
* Run the program
*/
@Override
public void run()
{
Graphics2D graphics2D;
while( true )
{
// GET THE BACK BUFFER
graphics2D = (Graphics2D) strategy.getDrawGraphics();
// DO
draw(graphics2D);
// WAIT
// System.out.println(player.getHP());
// PrintWorld();
try{
Thread.sleep(20);
}catch (InterruptedException e){}
}
//System.exit(0);
}
public World getWorld() {
return world;
}
public Player getPlayer() {
return player;
}
public Window getWindow() {
return window;
}
public void PrintWorld(){
for (int i = 0; i < world.getDimensionX(); i++) {
for (int j = 0; j < world.getDimensionY(); j++) {
System.out.print(world.getWorld()[1][i][j]);
}
System.out.println();
}
System.out.println();
System.out.println();
}
private void createMap(){
LoadMap loadMap = new LoadMap();
world = new World(loadMap);
player = loadMap.getPlayer();
window = new Window(800, 672,player,world);
new CreateZombie(world, player).start();
new ZombieMovements(world).start();
new BulletMovements(player,world).start();
new CreateEnergyBall(world).start();
new ZombieAction(world).start();
}
public static void main(String [] args){
// Toolkit kit = Toolkit.getDefaultToolkit();
// Dimension dimension = kit.getScreenSize();
UploadImages.loadImageMap();
UploadImages.loadImageMercenary();
Game game = new Game();
// game.newGame();
MainPanel panel = new MainPanel(game);
game.getContentPane().add(panel);
game.add(panel);
// LoadMap loadMap = new LoadMap();
// world = new World(loadMap);
// player = loadMap.getPlayer();
// window = new Window(800, 672,player,world);
// window = new Window((int)dimension.getWidth(), (int)dimension.getHeight(),player,world);
// player = new Player("Filippo",30,30, Direction.STOPDOWN,world);
// new Enemy(31, 31, Direction.DOWN, world, player);
// new CreateZombie(world, player).start();
// new ZombieMovements(world).start();
// new BulletMovements(player,world).start();
// new CreateEnergyBall(world).start();
// new ZombieAction(world).start();
// new Game().run();
}
@Override
public void keyPressed(KeyEvent e){
int key=e.getKeyCode();
switch (key) {
case KeyEvent.VK_UP:premuti[UP]=true;
break;
case KeyEvent.VK_DOWN: premuti[DOWN]=true;
break;
case KeyEvent.VK_LEFT: premuti[LEFT]=true;
break;
case KeyEvent.VK_RIGHT: premuti[RIGHT]=true;
break;
case KeyEvent.VK_E: premuti[SHOT]=true;
default:
break;
}
if (motion == null || motion.getState() == Thread.State.TERMINATED) {
motion = new MotionDispatcher(this);
motion.start();
}
}
@Override
public void keyReleased(KeyEvent e) {
int key=e.getKeyCode();
switch (key) {
case KeyEvent.VK_UP:
premuti[UP]=false;
break;
case KeyEvent.VK_DOWN:
premuti[DOWN]=false;
break;
case KeyEvent.VK_LEFT:
premuti[LEFT]=false;
break;
case KeyEvent.VK_RIGHT:
premuti[RIGHT]=false;
break;
case KeyEvent.VK_E:
premuti[SHOT]=false;
default:
break;
}
if(!premuti[UP] && !premuti[DOWN] && !premuti[LEFT] && !premuti[RIGHT]) {
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
public boolean[] getPremuti() {
return premuti;
}
public void setPremuti(boolean[] premuti) {
this.premuti = premuti;
}
}