前言
这一章我们继续来学习游戏的设计,带孩子去科技馆,看到有一种叫做“汉诺塔”的小游戏,这个智力游戏应该很多同学听说过,它首先在三根柱子中的第一根上摆放大小不一的圆盘,然后要求玩家用最少的步数、最短的时间将第一根柱子上的圆盘通过第二根柱子移动到第三根柱子上。 我们来看一下游戏的最终动画:游戏开发步骤
- 绘制背景及三根柱子
- 玩家通过先后点击两根柱子来表示移动
- 计算机给出判断,是否可移动以及是否结束
部分难点介绍
保存三根柱子的状态
可为三根柱子分别设置三个数组,保存着各自的圆盘rect
,而且从大小到排列,为方便起见,可将柱子的底盘也加入该数组,这样就始终可以用各数组的最后一个来进行比较:
对玩家点击进行判断
因为玩家需要先后点击两根柱子才能移动,这就需要设计移动策略:
- 当玩家第一次点击没有圆盘的柱子时,程序将不做反应
- 当玩家点击两次有效柱子,并可使圆盘移动时,程序完成减少和添加动作
- 当玩家点击两次有效柱子,但圆盘无法移动时,立刻清除标记状态代码如下:
移动圆盘
程序在玩家模式下只是简单将圆盘从一根柱子移动到另一根柱子,如果按向上箭头,即完成“飞盘”演示动画,移动圆盘的代码如下:汉诺塔的解法
汉诺塔的解法其实只是一个递归循环,现将代码给出: 控制台打印图如下所示:将自动演示纳入游戏
可将上述代码纳入小游戏中,这样子更便于玩家研究“汉诺塔”的移动规律。自动演示只是将上述汉诺塔解法生成的数据传递给移动函数,同时加入动画即可,代码如下:五阶的动画演示:
小结 由上文可以看出,汉诺塔的解法是典型的递归法,但在制作游戏时其实用不到其解法,只需要忠实记录和按游戏规则规范玩家的动作即可,从两者对比也可以看出,解法与游戏的设计有联系,但侧重点是不同的,毕竟面向的方向不同,所以尽管同学们可能对解法不一定能熟悉,但是只要掌握了游戏的设计要领,同样可以制作出好玩的游戏。其它教程:
pygame教程(一): 基础知识 pygame教程(二):绘制几何图形 pygame教程(三):动画初步 pygame教程(四):添加文字和播放声音 pygame教程(五):添加鼠标和键盘响应 pygame教程(六):迷宫小游戏(1) pygame教程(七):迷宫小游戏(2) pygame教程(八):数字华容道游戏 pygame教程(九):猜数字游戏