如何使我的2D Pong Racquets上下移动而不是左右移动?

时间:2016-07-27 03:23:51

标签: java

我看到了很多关于如何在Java中移动精灵的结果,但我找不到任何套件我的代码。我正在学习如何制作Pong风格游戏的教程。 您可以找到教程here。 (这是我遇到问题的部分)。

这是我的Racquet课程代码:

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;
}
}

现在我正在看的那部分我需要帮助改变的是:

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);
}

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

3 个答案:

答案 0 :(得分:0)

在你的move()函数中,将x = x + xa替换为:

y = y + xa;

答案 1 :(得分:0)

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坐标。

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

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

答案 2 :(得分:0)

我试图让乒乓球拍在Y轴上移动而不是在X轴上移动过度复杂,所以我换了它。问题解决了 - 是的。现在我可以完成游戏并继续制作更有趣的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;
}