2016-07-27 79 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; 
}