我试图弄清楚如何使黑球(在本例中被标记为bBall )移动到从白色球(wBall)击中的方向,然后如果它击中一侧或角落的口袋,我该怎么做呢?
ball wBall, bBall;
int click;
String msg;
Boolean moving = false;
int difx, dify;
float cdistance;
int steps = 20;
void setup(){
click=0;
size(800,400);
background(16,77,27);
wBall = new ball(35,#ffffff);
bBall = new ball(35,#000000);
msg="";
}
void mouseClicked(){
if(!moving){
click++;
}
}
void draw(){
background(16,77,27);
String msg;
fill(0,0,0);
ellipse(15,15,30,30);
ellipse(785,15,30,30);
ellipse(15,385,30,30);
ellipse(785,385,30,30);
ellipse(410,15,30,30);
ellipse(410,385,30,30);
msg="the click count is "+click;
println("the click count is "+click);
//Moving Balls\\
fill(255,255,255);
noStroke();
bBall.xpos=(250);
bBall.ypos=height/2;
bBall.update();
if(click==0){
wBall.xpos=mouseX;
wBall.ypos=mouseY;
}else if(click==1){
difx = wBall.xpos-bBall.xpos;
dify = wBall.ypos-bBall.ypos;
}else if(click==2){
cdistance = dist(wBall.xpos,wBall.ypos,bBall.xpos,bBall.ypos);
if (cdistance>bBall.ballDiam/2){
moving = true;
wBall.xpos-=difx/steps;
wBall.ypos-=dify/steps;
}else{
moving = false;
wBall.visible=false;
click=3;
}
}
wBall.update();
}
class ball{
int xpos, ypos;
color myColor;
int ballDiam;
boolean visible = true;
ball(int tempdiam, color tempColor){
myColor=tempColor;
ballDiam=tempdiam;
}
void update(){
if(visible){
fill(myColor);
ellipse(xpos,ypos,ballDiam,ballDiam);
}
}
}发布于 2013-11-24 01:31:08
它会使事情更容易,如果你打破你的调查多个问题,而不是说“修复我的游戏”.所以,工作直到你偶然发现一些你无法解决的事情,然后在这里问(那个具体的事情),得到一个答案,然后重新开始同样的过程。
球正与你的鼠标正确地移动,但正在留下痕迹。这是因为您没有用每个循环绘制背景。所发生的情况是,每次调用draw()时,画布都会被填充在前面的画布上。为了避免这种情况,只需打电话
background(16,77,27);就在虚空画(){线之后,它会用你说的任何颜色填充画布!
https://stackoverflow.com/questions/20169065
复制相似问题