在Processing 2中,我将如何实现这一目标?

时间:2013-11-17 07:07:57

标签: processing

在处理2中,我将如何实现这一目标?

首次单击鼠标时,应将鼠标显示在鼠标所在的位置。

鼠标的第二次左键单击应显示另一个球,鼠标在单击时居中。

一旦显示两个球,左击将在第二个球发射第一球。

当第一球接触第二球的边缘时,第一球应停止,第二球应以相同的速度向同一方向移动并移动与第一球移动相同的距离

1 个答案:

答案 0 :(得分:1)

我不会为此提供代码,因为它太过复杂(并且无论如何都不是Stack Overflow的目的)。但是,我将概述您需要的一些原则,希望您可以从那里开始。

首先要做的是跟踪状态。听起来你的状态会是:

  1. 等待第一次点击。
  2. 等待第二次点击。
  3. 移动第一球。
  4. 移动第二球。
  5. 这种方法很常见,有时也称为有限状态机。通常,您为每个状态定义一个常量整数,并在某处存储“当前状态”整数。当您想要更改/提升状态时,它将会更新。

    在主绘图循环中,您将根据您所处的状态执行不同的代码。例如,在第三个状态中,它将绘制两个球,并继续将第一个球移近第二个第二个,计算它们之间的距离。当他们触摸时,它会移动到第四状态。

    您显然需要一个鼠标处理程序来检测和处理点击。这将存储球的位置并适当地推进状态。

    对于它的数学方面,你需要两件事。首先,您需要习惯使用矢量数学(具体来说,将矢量标准化以计算方向,然后将其相乘以获得所需的速度)。其次,你需要使用欧几里德距离公式(基本上只是毕达哥拉斯定理)计算球之间的距离,确定它们何时足够接近彼此。对于所有这些你可能会觉得有用的东西,网上有大量的教程。

    如果您在编码中遇到某个特定问题,请随时发布更具体的问题(尽管始终牢记它可能已被提及/已经回答过)。