私のJavaブレイクアウトゲームの衝突検出をコーディングする際に少し問題があります。私は上の衝突をうまくしようとしているメソッドは、このいずれかになります。私はレンガからX & Yを取得しようとしたとき、私は問題を抱えています上記の方法からしかしJava BreakOut衝突検出 - シンボルが見つかりません
public void runAsSeparateThread()
{
final float S = 3; // Units to move (Speed)
try
{
synchronized (Model.class) // Make thread safe
{
GameObj ball = getBall(); // Ball in game
GameObj bat = getBat(); // Bat
List<GameObj> bricks = getBricks(); // Bricks
}
while (runGame)
{
synchronized (Model.class) // Make thread safe
{
float x = ball.getX(); // Current x,y position
float y = ball.getY();
// Deal with possible edge of board hit
if (x >= W - B - BALL_SIZE) ball.changeDirectionX();
if (x <= 0 + B ) ball.changeDirectionX();
if (y >= H - B - BALL_SIZE) // Bottom
{
ball.changeDirectionY(); addToScore(HIT_BOTTOM);
}
if (y <= 0 + M ) ball.changeDirectionY();
// As only a hit on the bat/ball is detected it is
// assumed to be on the top or bottom of the object.
// A hit on the left or right of the object
// has an interesting affect
boolean hit = false;
if (y <= bricks.getY() - (brickHeight/2)){
hit = true;
}
if (y >= bricks.getY() - (brickHeight/2)){
hit = true;
}
if (x < bricks.getX()){
hit = true;
}
if (x > bricks.getX()){
hit = true;
}
if (hit)
ball.changeDirectionY();
if (ball.hitBy(bat))
ball.changeDirectionY();
}
modelChanged(); // Model changed refresh screen
Thread.sleep(fast ? 2 : 20);
ball.moveX(S); ball.moveY(S);
}
} catch (Exception e)
{
Debug.error("Model.runAsSeparateThread - Error\n%s",
e.getMessage());
}
}
。それは "シンボルを見つけることができません - メソッドgetY()"を返し続けます。しかし、この方法は、バットとボールのために働くようだが、レンガに対してこのエラーを投げるだけである。
このエラーは、コードのこの部分でスローされます。
boolean hit = false;
if (y <= bricks.getY() - (brickHeight/2)){
hit = true;
}
if (y >= bricks.getY() - (brickHeight/2)){
hit = true;
}
if (x < bricks.getX()){
hit = true;
}
if (x > bricks.getX()){
hit = true;
}
誰もが、私はそれを徹底的に感謝助けることができれば!
UPDATE
for (int i = 0; i <= 60; i++){
GameObj brick1 = bricks.get(i);
if (y <= brick1.getY() - (BRICK_HEIGHT/2)){
hit = true;
Debug.trace("BreakOut");
}
if (y >= brick1.getY() - (BRICK_HEIGHT/2)){
hit = true;
Debug.trace("BreakOut");
}
if (x < brick1.getX()){
hit = true;
Debug.trace("BreakOut");
}
if (x > brick1.getX()){
hit = true;
Debug.trace("BreakOut");
}
}
[** minimal **、完全で検証可能な例](/ help/mcve)を作成してください。手元にある問題に関係のないすべてのコードを整理してください。 –
[シンボルが見つかりません]のコンパイルエラーの意味は?](http://stackoverflow.com/questions/25706216/what-does-a-cannot-find-symbol-compilation-error-mean) –
あなたのbricks変数は 'java.util.List'変数ですので、' getY() 'メソッドを持たないことに意味があります。 'get(int i)'を使ってListからオブジェクトを取得し、 'getY()'を呼び出す必要があります。 –