2012-02-29 11 views
5

मैंने अभी एप्लेट्स प्रोग्राम करना शुरू किया है, और सामान्य रूप से जावा जीयूआई, मैं एक साधारण गेम बनाने का प्रयास कर रहा हूं। फिलहाल, मेरे पास मुख्य वर्ग (गेम) और प्लेयर क्लास (प्लेयर) है, मेरे पास स्क्रीन पर प्लेयर ड्राइंग है, लेकिन मैं काम करने के लिए महत्वपूर्ण घटनाएं पाने के लिए संघर्ष कर रहा हूं, किसी भी मदद की सराहना की!कुंजी लिस्टनर घटनाएं जावा एप्लेट में गोलीबारी नहीं कर रही हैं

प्लेयर छवि पूरी तरह से ठीक प्रदर्शित करती है, लेकिन जब मैं एक कुंजी दबाता हूं तो स्थिति बदलती नहीं है।

संपादित करें: गलत कोड खिलाड़ी के लिए तैनात, अद्यतन

Game.java:

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) * "मैंने प्रोग्राम एप्लेट्स और सामान्य रूप से जावा जीयूआई सीखना शुरू कर दिया है" * एप्लेट से बचें और फ्रेम का उपयोग सीखें। वे सरल हैं। 2) इस सहस्राब्दी, एडब्ल्यूटी के बजाय स्विंग का उपयोग करें। 3) एचटीएमएल द्वारा एक एप्लेट आकार सेट किया गया है, 'init() 'में' setSize()' को कॉल न करें। 'सेटफोकसबल (सत्य) के लिए –

उत्तर

8

पैनल शायद या तो ध्यान केंद्रित नहीं है, या फोकस योग्य नहीं है।


इस कोड को आज़माएं। मैंने कुंजी को बाएं/दाएं/ऊपर/नीचे तीरों में बदल दिया। सादगी के लिए, मैंने इसे एडब्ल्यूटी आधारित एप्लेट के रूप में छोड़ा।

// <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; ' –

संबंधित मुद्दे

 संबंधित मुद्दे