我看到了很多关于如何在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轴移动。
答案 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;
}