gpt4 book ai didi

java - 为什么如果没有玩家 1 的代码,玩家 2 的 move 方法就无法工作?

转载 作者:行者123 更新时间:2023-12-01 17:31:06 27 4
gpt4 key购买 nike

//我正在尝试对玩家 2 的代码进行一些编辑,因此我删除了涉及玩家 1 的所有内容。但出于某种原因,如果没有玩家 1 的代码,玩家 2 根本不会执行任何操作。(假设使用 i、j、k 和 l 键 move 。)所以我的问题是“如何让玩家 2 的 move 方法在没有玩家 1 的代码的情况下工作?”这也是我能提供的最好的 SSCCE。我删除了所有不涉及创建 JFrame 和玩家 2 的代码。我还保留了负责玩家 2 move 的代码。

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class Collision extends JFrame {

//Jframe

    final int WIDTH = 900, HEIGHT = 650;
double p1Speed = .5, p2Speed = .5;
final int UP = 0, RIGHT = 1, DOWN = 2, LEFT = 3;
int p1Direction = UP;
int p2Direction = UP;

//创建玩家2的代码

Rectangle p2 = new Rectangle(((WIDTH / 9) + ((int) ((WIDTH / 9) * 1.5) / 2)), (HEIGHT / 2)    
+ (HEIGHT / 10), WIDTH / 30, WIDTH / 30);

public Collision() {

super("Radical Racing");
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);


Move2 m2 = new Move2();
m2.start();

}

public void paint(Graphics g) {
super.paint(g);


g.setColor(Color.DARK_GRAY);
g.fillRect(0, 0, WIDTH, HEIGHT);
g.setColor(Color.GREEN);
g.setColor(Color.red);
g.fill3DRect(p2.x, p2.y, p2.width, p2.height, true);

}

//这是p2 move 方法。我以为我的错误就在这里,但我已经从书上准确地复制了这个。

private class Move2 extends Thread implements KeyListener {

public void run() {

addKeyListener(this);


while (true) {

try {

repaint();

//increase speed a bit
if (p2Speed <= 5) {
p2Speed = .2;
}

//这些将根据方向 move 玩家

                    if (p2Direction == UP) {
p2.y -= (int) p2Speed;
}
if (p2Direction == DOWN) {
p2.y += (int) p2Speed;
}
if (p2Direction == LEFT) {
p2.x -= (int) p2Speed;
}
if (p2Direction == RIGHT) {
p2.x += (int) p2Speed;
}

Thread.sleep(75);
} catch (Exception e) {


}

}
}

//you must also implement this method from key listener
public void keyPressed(KeyEvent event) {
}

public void keyReleased(KeyEvent event) {
}

public void keyTyped(KeyEvent event) {
if (event.getKeyChar() == 'j') {
p2Direction = LEFT;
}
if (event.getKeyChar() == 'k') {
p2Direction = DOWN;
}
if (event.getKeyChar() == 'l') {
p2Direction = RIGHT;
}
if (event.getKeyChar() == 'i') {
p2Direction = UP;
}
}
}

//This starts the program by calling the constructor:
public static void main(String[] args) {
new Collision();
}
}

最佳答案

我自己还不太擅长java,但是;

    if (p2Direction == UP) {
p2.y -= (int) p1Speed;
}
if (p2Direction == DOWN) {
p2.y += (int) p1Speed;
}
if (p2Direction == LEFT) {
p2.x -= (int) p1Speed;
}
if (p2Direction == RIGHT) {
p2.x += (int) p1Speed;
}

这不应该是

    if (p2Direction == UP) {
p2.y -= (int) p2Speed;
}
if (p2Direction == DOWN) {
p2.y += (int) p2Speed;
}
if (p2Direction == LEFT) {
p2.x -= (int) p2Speed;
}
if (p2Direction == RIGHT) {
p2.x += (int) p2Speed;
}

抱歉,如果我错了:p

关于java - 为什么如果没有玩家 1 的代码,玩家 2 的 move 方法就无法工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10777565/

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