我有这个程序,我希望球的速度在点击时更快地移动。以下是两个类:
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的方法,所以当我点击球时它会加快速度。我正在使用处理,即使我不太熟悉它。但这是我项目的要求。绝望地需要帮助!
答案 0 :(得分:0)
Ball b1 = new Ball(xPos,this);
你在父applet中有一个xpos吗?否则你必须传递一些起始数字,如10,并在Ball中展示一个getXPos()。
另外我看到你在draw方法中调用run方法。谁叫抽奖?如果它只在重新粉刷时那么球不会有生命力。需要制作一个线程让球每隔一秒左右移动一次。
注意这应该是显而易见的:即使你在Ball中添加getXPos(),你也不能在Ball的构造函数中使用它。因此,您必须使用其他值来播种它。