2012-02-29 11 views
5

ateş değil sadece appletler ve genel olarak java GUI programlamayı öğrenmeye başladım, basit bir oyun yapmaya çalışıyorum. Şu anda, ana oyuncu (Oyun) ve oyuncu sınıfı (Oyuncu) ekrana çizim oyuncu var, ama çalışmak için önemli olayları almak için mücadele ediyorum, herhangi bir yardım takdir!KeyListener olaylar görünüşte java applet

Oynatıcı görüntüsü mükemmel bir şekilde görüntülenir, ancak bir tuşa bastığımda konum değişmez.

DÜZENLEME: oyuncu için yayınlanmıştır yanlış kod,

Game.java güncelleme:

public class Game extends Applet { 

    Player player; 

    @Override 
    public void init() { 
     player = new Player(this); 
     this.setSize(800, 600); 
     addKeyListener(player); 
    } 

    @Override 
    public void paint(Graphics g) {   
     player.paint(g); 
    } 



} 

Player.java:

public class Player implements KeyListener { 

    Game game; 
    Image image; 
    int x; 
    int y; 

    public Player(Game game) { 
     this.game = game; 
     x = 0; 
     y = 0; 
     image = game.getImage(game.getCodeBase(), "images/Player.png"); 
    } 

    public void paint(Graphics g) { 
     g.drawImage(image, x, y, game); 
    } 

    @Override 
    public void keyTyped(KeyEvent e) { 
     return; 
    } 

    @Override 
    public void keyPressed(KeyEvent e) { 
     switch (e.getKeyCode()) { 
      case KeyEvent.VK_A: 
       x -= 1; 
       break; 
      case KeyEvent.VK_D: 
       x += 1; 
       break; 
      case KeyEvent.VK_S: 
       y += 1; 
       break; 
      case KeyEvent.VK_W: 
       y -= 1; 
       break; 
     } 
     game.repaint(); 
    } 

    @Override 
    public void keyReleased(KeyEvent e) { 
     return; 
    } 
} 
+2

1) * "Uygulama programlarını ve genel olarak java GUI'yi programlamayı öğrendim" * Applet'lerden kaçının ve çerçeveleri kullanarak öğrenin. Daha basitler. 2) Bu bin yılda, AWT yerine Swing kullanın. 3) Bir uygulama boyutu HTML tarafından ayarlanır, 'init()' de 'setSize()' yi çağırmayın. SetFocusable (true) için –

cevap

8

paneli muhtemelen ya odağı olmaması veya odaklanamaz.


Bu kodu deneyin. Anahtarları sola/sağa/yukarı/aşağı oklara değiştirdim. Basitlik için AWT tabanlı bir uygulama olarak bıraktım.

// <applet code='Game' width=400 height=100></applet> 
import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Game extends Applet implements KeyListener { 

    Player player; 

    @Override 
    public void init() { 
     player = new Player(getImage(32)); 
     addKeyListener(this); 
     setFocusable(true); 
     requestFocusInWindow(); 
    } 

    @Override 
    public void paint(Graphics g) { 
     player.paint(g); 
    } 

    public Image getImage(int size) { 
     Image img = createImage(size,size); 
     Graphics g = img.getGraphics(); 
     g.setColor(Color.RED); 
     g.fillRect(0,0,size,size); 

     g.dispose(); 

     return img; 
    } 

    @Override 
    public void keyTyped(KeyEvent e) { 
     return; 
    } 

    @Override 
    public void keyPressed(KeyEvent e) { 
     switch (e.getKeyCode()) { 
      case KeyEvent.VK_LEFT: 
       player.x -= 1; 
       break; 
      case KeyEvent.VK_RIGHT: 
       player.x += 1; 
       break; 
      case KeyEvent.VK_DOWN: 
       player.y += 1; 
       break; 
      case KeyEvent.VK_UP: 
       player.y -= 1; 
       break; 
     } 
     repaint(); 
    } 

    @Override 
    public void keyReleased(KeyEvent e) { 
     return; 
    } 
} 

class Player { 

    Image image; 
    int x; 
    int y; 

    public Player(Image image) { 
     x = 0; 
     y = 0; 
     this.image = image; 
    } 

    public void paint(Graphics g) { 
     g.drawImage(image, x, y, null); 
    } 

} 
+2

+1; –