gpt4 book ai didi

java - 吃 bean 人游戏 Action

转载 作者:行者123 更新时间:2023-12-01 06:55:37 25 4
gpt4 key购买 nike

我正在用 Java 创建 pacman 游戏,但有 1 个无法解决的问题。问题如下:

游戏屏幕上有 4 个按钮,分别用于:上、下、左、右。问题是我无法在 x 位置和 y 位置同时使用按钮,因为我总是得到 0 值(如果您看到下面的代码,您就会明白这一点)

下面你可以找到我认为与问题相关的 pacman 类(请参阅 setBesturing(int besturing) 方法)

package h04PacMan;

/*
* PacMan laten bewegen
*/

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class PacMan extends JPanel implements ActionListener {

private int horizontalePlaats = 250; // x location
private int verticalePlaats = 150; // y location
private int richtingEnSnelheid = +10; // speed
private final int WACHTTIJD = 500; // DELAY
int diameter;
int waarde;

public PacMan() {

// create timer and start timer
javax.swing.Timer autoKlik = new javax.swing.Timer(WACHTTIJD, this);

autoKlik.start();
}

public int getHorPlaats() {
return horizontalePlaats;
}

// current y positie

public int getVerPlaats() {
return verticalePlaats;
}

// speed and way;
public int getRichtingEnSnelheid() {
return richtingEnSnelheid;
}

// new x position

public void setHorPlaats(int nieuweHorPlaats) {

if(nieuweHorPlaats > getWidth()) {

nieuweHorPlaats = 0;
}
else if(nieuweHorPlaats < 0) {

nieuweHorPlaats = getWidth();
}

horizontalePlaats = nieuweHorPlaats;

}

// new y position
public void setVerPlaats(int nieuweVerPlaats) {

if(nieuweVerPlaats > getHeight()) {

nieuweVerPlaats = 0;
}
else if(nieuweVerPlaats < 0) {

nieuweVerPlaats = getHeight();
}

verticalePlaats = nieuweVerPlaats;

}

public void setRichtingEnSnelheid(int nieuweRichtingEnSnelheid) {

richtingEnSnelheid = nieuweRichtingEnSnelheid;

}

//movement
public void setBesturing(int besturing) {

besturing = waarde;

if(waarde == 0) {
setVerPlaats( getVerPlaats() + richtingEnSnelheid);
}
else if(waarde == 1){
setHorPlaats( getHorPlaats() + richtingEnSnelheid);
}
}

@Override
public void actionPerformed(ActionEvent e) {

setBesturing(waarde);
System.out.println(waarde);
repaint();

}

DrawPacMan pacman = new DrawPacMan();
DrawPacMan ghost1 = new DrawPacMan();
DrawPacMan ghost2 = new DrawPacMan();

public void paintComponent(Graphics g) {

super.paintComponent(g);
// pacman movement
diameter = 75;
pacman.drawPacMan(g, getHorPlaats(), getVerPlaats(), diameter, Color.yellow);

// ghosts movement
int g1x;
for(g1x = 0; g1x < 10; g1x++) {

pacman.drawGhost(g, g1x, 40, diameter, Color.red);

}
pacman.drawGhost(g, 170, 70, diameter, Color.blue);


}

}

这是我的游戏控制类中的actionListener

    @Override
public void actionPerformed(ActionEvent e) {

if(e.getSource() == links) {

pacman.setRichtingEnSnelheid( -10 );
pacman.setBesturing(1);
System.out.println("links");
}
else if(e.getSource() == rechts) {
pacman.setRichtingEnSnelheid( +10 );
pacman.setBesturing(1);
System.out.println("rechts");
}
else if(e.getSource() == boven) {
pacman.setRichtingEnSnelheid( -10);
pacman.setBesturing(0);
System.out.println("boven");
}
else {
pacman.setRichtingEnSnelheid( +10);
pacman.setBesturing(0);
System.out.println("beneden");
}


}

最佳答案

这是您的问题:

//movement
public void setBesturing(int besturing) {

besturing = waarde; <-- THIS LINE

if(waarde == 0) {
setVerPlaats( getVerPlaats() + richtingEnSnelheid);
}
else if(waarde == 1){
setHorPlaats( getHorPlaats() + richtingEnSnelheid);
}
}

您正在用旧值 waarde 覆盖 besturing 的值。应该是相反的。

//movement
public void setBesturing(int besturing) {

waarde = besturing; <-- THIS LINE

if(waarde == 0) {
setVerPlaats( getVerPlaats() + richtingEnSnelheid);
}
else if(waarde == 1){
setHorPlaats( getHorPlaats() + richtingEnSnelheid);
}
}

关于java - 吃 bean 人游戏 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12816914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com