无法让我的java程序正常工作

时间:2013-04-27 14:28:51

标签: java processing

我有这个程序,我希望球的速度在点击时更快地移动。以下是两个类:

import processing.core.*;
public class Ball {

int xPos = 0;
int xDir = 1;
int speed = 1;
PApplet parent;


Ball (int _x, PApplet p){
xPos = _x;
parent = p;
}

void move() {
xPos = xPos + xDir * speed;
if (xPos>400-20 || xPos<20)
{
xDir =-xDir;
    }
}

void speedUp() {
    speed=speed+1;  
}

void display() {
parent.ellipse(xPos, 200, 40, 40);   
}

void run(){
      move();
      display();
  }
}

import processing.core.*;
public class Game extends PApplet{

public static void main(String args[]){
    PApplet.main(new String[] { "--present", "Game" });
}

Ball b1 = new Ball(xPos,this);

public void setup()
{
  size (400, 400);
  smooth();
  background(0);
  noStroke();
  fill(255);
}

public void draw()
{
  background(0);
  b1.run();
}

public void mousePressed()
  {
    if (dist(mouseX, mouseY, xPos, 200)<=20)
    {
        b1.speedUp();   
    }
  } 
}

我找不到在我的游戏客户端中引用xPos的方法,所以当我点击球时它会加快速度。我正在使用处理,即使我不太熟悉它。但这是我项目的要求。绝望地需要帮助!

1 个答案:

答案 0 :(得分:0)

Ball b1 = new Ball(xPos,this); 

你在父applet中有一个xpos吗?否则你必须传递一些起始数字,如10,并在Ball中展示一个getXPos()。

另外我看到你在draw方法中调用run方法。谁叫抽奖?如果它只在重新粉刷时那么球不会有生命力。需要制作一个线程让球每隔一秒左右移动一次。

注意这应该是显而易见的:即使你在Ball中添加getXPos(),你也不能在Ball的构造函数中使用它。因此,您必须使用其他值来播种它。