0

我有这个程序,我希望球在被点击时移动得更快。这是两个类:

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 的方法,所以当我点击球时它会加快速度。我正在使用处理,即使我不太熟悉它。但这是我项目中的要求。迫切需要帮助!

4

1 回答 1

0
Ball b1 = new Ball(xPos,this); 

您在父小程序中有 xpos 吗?否则你必须传递一些像 10 这样的起始数字并在 Ball 中发布一个 getXPos()。

我还看到您在 draw 方法中调用了 run 方法。谁叫画?如果仅在重新绘制时,则球不会有动画。需要做一个线程来让球每秒钟左右移动一次。

注意这应该很明显:即使在 Ball 中添加 getXPos() ,也不能在 Ball 的构造函数中使用它。所以你必须用一些其他的价值来播种它。

于 2013-04-27T14:49:11.073 回答