Processing 试图完成一场台球比赛

Processing 试图完成一场台球比赛,processing,Processing,嘿,伙计们,我正在做一个台球游戏,大部分时间我都已经完成了,但我似乎不知道最后的几个步骤,除了这些细节,基本上一切都是对的。谁能帮我一下吗 在任何时候,按下键盘上的“c”按钮都将清除游戏,允许玩家重试 第1步-第一次鼠标左键单击时,应显示一个位于鼠标中央的白色主球 第2步-第二次鼠标左键单击应显示一个目标球,该目标球位于单击鼠标时鼠标的中心位置。目标球的颜色应与主球的颜色不同。注意,目标球不能放在主球的顶部。在这一步中,您应该测量两个球之间的距离,以便知道台球必须移动多远 步骤3-一旦两个球都显

嘿,伙计们,我正在做一个台球游戏,大部分时间我都已经完成了,但我似乎不知道最后的几个步骤,除了这些细节,基本上一切都是对的。谁能帮我一下吗

在任何时候,按下键盘上的“c”按钮都将清除游戏,允许玩家重试

第1步-第一次鼠标左键单击时,应显示一个位于鼠标中央的白色主球

第2步-第二次鼠标左键单击应显示一个目标球,该目标球位于单击鼠标时鼠标的中心位置。目标球的颜色应与主球的颜色不同。注意,目标球不能放在主球的顶部。在这一步中,您应该测量两个球之间的距离,以便知道台球必须移动多远

步骤3-一旦两个球都显示出来,左键单击将在目标球上启动主球

第4步-当主球接触到目标球的边缘时,主球应停止,目标球应以相同的速度朝相同的方向移动,移动的距离与主球移动的距离相同 第5步-现在所有操作都完成了,您可以重置整个应用程序,将其设置回第3步,或者什么都不做,并通知用户按C按钮

这是我的代码,我非常感谢大家的帮助

ball whiteBall, blackBall;
int click;
String msg;
Boolean moving = false;
int difx, dify;
float cdistance;
int steps = 20;
void setup(){
   click=0;
   size(600,400);
   background(16,77,27);
   whiteBall = new ball(35,#ffffff);
   blackBall = new ball(35,#000000);
   msg="";
}

void mouseClicked(){
  if(!moving){
 click++; 
  }
}

void draw(){
  background(20,100,20);
  String msg;
  fill(0,0,0);





 fill(200,200,200);
 noStroke();  
 blackBall.xpos=(300 );
 blackBall.ypos=height/2;
 blackBall.update();
 if(click==0){
  whiteBall.xpos=mouseX;
  whiteBall.ypos=mouseY;
 }else if(click==1){
   difx = whiteBall.xpos-blackBall.xpos;
   dify = whiteBall.ypos-blackBall.ypos;
 }else if(click==2){
  cdistance = dist(whiteBall.xpos,whiteBall.ypos,blackBall.xpos,blackBall.ypos);
   if (cdistance>blackBall.ballDiam/2){
    moving = true;
    whiteBall.xpos-=difx/steps;
    whiteBall.ypos-=dify/steps;
   }else{
      moving = false;
      whiteBall.visible=false;
      click=3;
   } 
 }
 whiteBall.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);
   }
  }
}

要检测何时击球,请使用dist(pos1.x、pos1.y、pos2.x、pos2.y)并将其与(size1+size2)进行比较。如果dist()较小,则它们发生了碰撞,并且您更改了速度。

代码是用哪种语言编写的?如果您不能或不想帮助为什么在线程中进行注释,那么人们现在正在严重关注堆栈溢出。不要把这个地方变成yahoo answers…我在处理论坛上发布了这个,所以很明显processing@user3522502抱歉,我没有给予足够的注意,并认为该问题缺少语言标记。若要将球放在单击鼠标的位置,请参见以下内容:。要计算距离和方向,请参见此处的PVectors:。有关碰撞检测,请参见:这应该包括所有4个步骤。你可以处理一些小细节(比如鼠标左键被点击了多少次。提示:布尔或计数器)。你可以抱怨没有得到你想要的答案,但你实际上没有问任何问题。建议阅读: