package GUI;
import java.awt.Component;
import java.awt.Graphics2D;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
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.*;
/**
*
*/
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;
/**
* Constructor
*/
public Game()
{
initWindow();
initComponnents();
}
/**
* initiate the window
*/
private void initWindow()
{
// setSize(window.getDimensionPixelX(), window.getDimensionPixelY());
pack();
setTitle("Gioco");
setSize(800,672);
// setUndecorated(true);
setLocationRelativeTo(null);
setDefaultCloseOperation
(JFrame.
EXIT_ON_CLOSE); setResizable(false);
setVisible(true);
setIgnoreRepaint(true);
setFocusable(true);
this.requestFocusInWindow();
}
/**
* initiate the componnents
*/
private void initComponnents()
{
addComponentListener(this);
addFocusListener(this);
setFocusTraversalKeysEnabled(false);
}
private void initBufferStrategy(){
createBufferStrategy(2);
strategy = getBufferStrategy();
}
/**
* Draw the frame
* @param panel
* @param graphics graphic
*/
public void newGame(MainPanel panel){
if(isFocusable())
System.
out.
println("SIIIIIIIIIIIIIIIIIIII"); else
System.
out.
println("NOOOOOOOOOOOOOOOOOOOOOOO"); initBufferStrategy();
createMap();
// initComponnents();
// game.requestFocus();
run();
}
{
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();
}
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);
}
}
// 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);
}
}
{
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()
{
while( true )
{
// GET THE BACK BUFFER
graphics2D
= (Graphics2D) strategy.
getDrawGraphics(); // DO
draw(graphics2D);
// WAIT
// System.out.println(player.getHP());
// PrintWorld();
try{
}
//System.exit(0);
}
public World getWorld() {
return world;
}
public Player getPlayer() {
return player;
}
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
]); }
}
}
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
int key=e.getKeyCode();
switch (key) {
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;
default:
break;
}
if (motion
== null || motion.
getState() == Thread.
State.
TERMINATED) { motion = new MotionDispatcher(this);
motion.start();
}
}
@Override
int key=e.getKeyCode();
switch (key) {
premuti[UP]=false;
break;
premuti[DOWN]=false;
break;
premuti[LEFT]=false;
break;
premuti[RIGHT]=false;
break;
premuti[SHOT]=false;
default:
break;
}
if(!premuti[UP] && !premuti[DOWN] && !premuti[LEFT] && !premuti[RIGHT]) {
}
}
@Override
// TODO Auto-generated method stub
}
public boolean[] getPremuti() {
return premuti;
}
public void setPremuti(boolean[] premuti) {
this.premuti = premuti;
}
@Override
// TODO Auto-generated method stub
System.
out.
println("focusGained"); Game.this.requestFocus();
Game.this.requestFocusInWindow();
}
@Override
// TODO Auto-generated method stub
System.
out.
println("focusLost"); requestFocus();
requestFocusInWindow();
}
@Override
// TODO Auto-generated method stub
requestFocusInWindow();
}
@Override
// TODO Auto-generated method stub
requestFocusInWindow();
}
@Override
// TODO Auto-generated method stub
requestFocusInWindow();
}
@Override
// TODO Auto-generated method stub
requestFocusInWindow();
}
}