图4 生命游戏模拟图 观察黑色的绘图区域,我们就可以发现,要实现各种功能,我们首先要用一个数据结构来记录各种离散个体的信息,也就是布局,然后把这些离散信息绘制出来。 布局 布局相对来说比较简单。因为绘图区域是个二维图形。我们可以先创建一个int类型的二维数组cell,然后使二维数组的元素和对上面的每一个小区域一一对应起来。比如,某一个元素数值是 1 的话,那么就代表这个相应的区域存在一个个体,如果数值是 0 的话,就说明这块区域没有个体。我们可以先对这个数组进行处理,然后再一次性绘制出来。实践证明,这样的方法是可行的。由于程序是动态运行,也就是说,当前的数组状态须根据相应的规则,产生下一代的状态。所以,单单只有一个数组,没办法实现这个功能。所以,我定义了另外一个数组:workcopy 。这个数组保存的就是cell状态的一个备份。当需要演化时,我们逐个对cell上的个体进行判断,邻居在workcopy 上判断。修改直接体现在cell数组上。 绘制离散个体 离散的个体我们可以调用图形来,然后把它画在黑色的画布上。由于画布是个二维的矩阵,所以,要规整的在画布上布局这些个体,我们使用的图形必须是正方形的,并且,图形的背景要透明,看起来才比较自然。至于个体在画布上的擦除,我们可以采用对整个画布进行刷新的办法。但是这个方法不仅低效,而且程序运行的时候,整个画面非常闪烁,令人很不愉快。我采取了一个小技
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/8/8