0
我想製作一個簡單的JAVA遊戲,其中一個對象正朝着另一個靜態對象或角色前進,如果按下「空格」按鈕,靜態對象將跳轉並避免碰撞。我成功地讓第一個對象移動,但我無法使靜態對象跳轉或移動。我嘗試使用keyevent,但它沒有奏效。那麼我怎麼才能使它工作?或者你能指出我的代碼中我做錯了什麼?如何同時在同一個JPanel中處理兩個不同的對象?
package jpanel;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
public class jp extends JPanel implements ActionListener{
Timer t;
int x,y,k;
jp(){
x=650;
k=0;
t=new Timer(5,this);
t.start();
}
public void actionPerformed(ActionEvent e){
x--;
//k++;
if(x==76){
x=650;
}
repaint();
}
public void keyPressed(KeyEvent e){
int key=e.getKeyCode();
if(key == KeyEvent.VK_SPACE){
k++;
/* if(k>300){
k=0;
}*/
repaint();
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.black);
g.setColor(Color.blue);
g.fillRect(x,400,50,50);//moving object
g.setColor(Color.red);
//Static Object
g.fillRect(30, 350-k, 45, 70);//static_body
g.setColor(Color.yellow);
g.fillOval(28, 310-k, 40, 40);//static_head
g.setColor(Color.green);
g.fillRect(30, 420-k, 10, 35);//static_leg1
g.fillRect(65, 420-k, 10, 35);//static_leg2
g.setColor(Color.blue);
g.fillRect(35, 350-k, 10, 45);//static_hand
g.setColor(Color.black);
g.fillOval(55, 320-k, 7, 7);//static_eye
}
}
public class Jpanel extends JFrame {
public static void main(String[] args) {
jp p=new jp();
JFrame j=new JFrame("TEST_CASE-1");
j.add(p);
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setSize(700,500);
j.setVisible(true);
}
}
但我想它跳起來,我主要關心的是讓靜態物體移動。所以代碼不適合跳轉。 – ryhn