2016-07-27 81 views
-3

我看到了很多关于如何在Java中移动精灵的结果,但我找不到任何套件我的代码。我正在关注如何制作Pong风格游戏的教程。 你可以找到教程here。 (这是我遇到问题的部分)。如何让我的2D乒乓球拍上下移动,而不是左右摇摆?

这里是我的球拍类代码:

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

Alrighty,所以实际的问题,我有是我需要球拍沿着Y轴上下移动,在当前它沿着X轴移动。

回答

0

在您的移动()函数替换X = X + XA到:

y = y + xa; 
0

变量x应该是y和传递到第二PARAM为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 - 要填充的矩形的宽度。

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

+0

它不工作,我觉得我有一个容易解决的错误 –

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