Bonsoir, je voudrais savoir comment créer des "entités" comme dans le jeu minecraft en java.
j'ai reussi à programmer ce petit programme qui génère des projectiles mais je n'arrive pas à
mettre une position spécifique à chacun..
et je voulais comprendre aussi pourquoi mon jeu ne réponds pas très très fluidement
quand j'active les clées qui permettent de faire bouger le personnage
public class main extends JPanel{ //size of charactere static final int HEIGHT = 50; static final int WIDTH = 40; //size of frame static final int HEIGHT_FRAME = 14*50; static final int WIDTH_FRAME = 14*50; //number of sword static int nbsword = 0; //list who stock positions static ArrayList<Integer> array = new ArrayList<Integer>(); //activate/desactivate jump and throw static int Jump = 0; static boolean Throw = false; public static void main(String[] args) { new Images(); JFrame frame = new JFrame("The Game"); //add keylistener frame.addKeyListener( new KeyListener(){
@Override public void keyPressed(KeyEvent arg0) { //call of the fonction PlayerMove Player.PlayerMove(arg0.getKeyCode()); }
@Override public void keyReleased(KeyEvent arg0) { //call of the function Jumping if space bar is Released if(arg0.getKeyCode()==38) { if(Jump==0) { Jump=1; Jumping(); } } }
@Override public void keyTyped(KeyEvent arg0) {
} }); frame.setContentPane(new main()); frame.setSize(WIDTH_FRAME,HEIGHT_FRAME); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.setVisible(true); } public main(){ new Thread(new Runnable(){
protected void paintComponent(Graphics g) { super.paintComponent(g); JLayeredPane Layer = new JLayeredPane(); g.drawImage(Images.Background, 0, 0,HEIGHT_FRAME,WIDTH_FRAME ,Layer); g.drawImage(Images.Joueur,Player.x, Player.y, WIDTH,HEIGHT, Layer); if(Throw==true) { for(int i = -1; i<=nbsword; i++) { g.drawImage(Images.Projectile,array.get(nbsword-1), Player.y, 50, 50, Layer); } } } static class Player{ public static int x = 50, y = 500; public static void PlayerMove(int arg0) { if(arg0==37 || arg0==39) { x = (arg0 == 37) ?x-5: x+5; } if(arg0==32) { nbsword++; Projectile.x = Player.x+50; Projectile.Throw(); array.add(Projectile.x); Throw = true; } }
} static class Projectile{ static int compteur = 0; static int x = Player.x+50; static int y = Player.y+10; public static void Throw(){ new Thread(new Runnable(){