Java 如何使我的2D乒乓球拍上下移动,而不是左右移动?

Java 如何使我的2D乒乓球拍上下移动,而不是左右移动?,java,Java,我在Java中看到了很多关于如何移动精灵的结果,但是我找不到任何适合我的代码。我正在学习如何制作乒乓球风格的游戏。 你可以找到教程。这就是我遇到的问题 以下是我的网拍课程代码: package com.tennis; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.event.KeyEvent; public class Racquet { private static final int Y =

我在Java中看到了很多关于如何移动精灵的结果,但是我找不到任何适合我的代码。我正在学习如何制作乒乓球风格的游戏。 你可以找到教程。这就是我遇到的问题

以下是我的网拍课程代码:

package com.tennis;

import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;

public class Racquet {
private static final int Y = 330;
private static final int WIDTH = 60;
private static final int HEIGHT = 10;
int x = 0;
int xa = 0;
private Game game;

public Racquet(Game game) {
    this.game = game;
}

public void move() {
    if(x + xa > 0 && x + xa < game.getHeight()-60)
        x = x + xa;
}

public void paint(Graphics2D g) {
    g.fillRect(x, 50, 10, 70);
}

public void keyReleased(KeyEvent e) {
    xa = 0;
}

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_UP)
        xa = -1;
    if(e.getKeyCode() == KeyEvent.VK_DOWN)
        xa = 1;
}

public Rectangle getBounds() {
    return new Rectangle(x, Y, WIDTH, HEIGHT);
}

public int getTopY() {
    return Y;
}
}

好的,所以我的实际问题是,我需要网拍沿Y轴上下移动,此时它沿X轴移动。

在移动函数中,将X=X+xa替换为:

y = y + xa;

x变量应为y,并传递给fillRect的第二个参数

public void paint(Graphics2D g) {
    g.fillRect(50, x, 10, 70);
}

public abstract void fillRect(int x,
            int y,
            int width,
            int height)
x-要填充的矩形的x坐标

y-要填充的矩形的y坐标

宽度-要填充的矩形的宽度


高度-要填充的矩形的高度。

我试图使乒乓球拍在Y轴而不是X轴上移动,这使事情变得过于复杂,所以我切换了它。问题解决了。现在我可以完成游戏并继续制作funner Java游戏

所以我把这些整数弄乱了

    public void paint(Graphics2D g) {
    g.fillRect(x, 250, 70, 10);
}
然后我把钥匙做成这样:

    public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_LEFT)
        xa = -1;
    if(e.getKeyCode() == KeyEvent.VK_RIGHT)
        xa = 1;
}

它不工作,我觉得我有一个容易修复的错误
    public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_LEFT)
        xa = -1;
    if(e.getKeyCode() == KeyEvent.VK_RIGHT)
        xa = 1;
}