计算机仿真之电子宠物,,


  电子宠物

  我们将要建立一个简化了的电子宠物程序,正如前面所说的一样,这是一种仿真。你可以购买电子宠物玩具(比如有一个小屏幕的钥匙链),下载电子宠物软件,还有一些网站(如Neopets和Webkinz),就采用了电子宠物的形式,当然,所有这些也都是仿真,它们会模仿一些真实动物的行为,会饿,会感到孤单,会觉得得累,要让它们快乐健康,你必须给它们喂食,和它们玩,还要带它们看病。

  我们的电子宠物会简单得多,与你购买或下载的电子宠物相比没有那么真实,因为我只是想让你有一些基本认识,而且我不希望代码太过复杂,不过你可以在这个简化版本的基础上,根据你的想法进行扩展或改进。

  我们的程序要具备以下特性。

  对这个宠物可以有4种活动:给它喂食、带它散步、和它玩或者带它看病。

  与孩子一起学编程-python教程

  可以监测这个宠物的3种统计信息:饥饿感、快乐度和健康度。

  与孩子一起学编程-python教程

  宠物可以醒着或者睡觉。

  与孩子一起学编程-python教程

  饥饿感会随时间增加,可以通过喂食减少饥饿感。

  宠物睡觉时饥饿感的增加会减慢。

  如果宠物在睡觉,你做任何活动都会让它醒过来。

  如果宠物太饿了,它的快乐度会减少。

  如果宠物实在太饿了,它的健康度减少。

  带宠物散步会同时增加它的快乐度和健康度。

  与宠物玩会让它的快乐度增加

  带宠物看病会让它的健康度增加。

  宠物有6个不同的图片:

  一个睡觉的图片

  一个醒着但什么也不做的图片

  一个散步的图片

  一个玩耍的图片

  一个进食的图片

  一个看病的图片

  图片可以使用一些简单的动画。后面几节我们将看到如何把所有这些整合在一起构成一个程序。

  GUI

  Carer和我为我们的电子宠物程序创建一个PythonCard GUI.其中有一些按钮用来完成活动,还有一些计量器显示重要的统计信息,另外还留有一个位置显示宠物的图片(宠物正在做什么)。看起来就像下图这样。

  与孩子一起学编程-python教程

  对应活动的按钮是一种ImageButton类型的PythonCard组件,利用这种组件可以创建带图片的按钮,而不只是文本。各个计量器的组件类型的Gauge。主图片是一个Image组件,标签是StaticText组件。

  你可以使用PythonCard资源编辑器创建这样的GUI。

  算法

  要为电子宠物程序写代码,需要更明确地了解宠物的行为。以下是我们要使用的算法。

  我们把宠物的一“天”分为60个部分,每一部分称为一个“滴答”。每个滴答的实际时间是5秒钟,所以宠物的“一天”就是我们实际时间的5分钟。

  宠物在48个滴答中都醒着,然后它想睡12个滴答。你可以把它叫醒,不过这样会让它很不高兴!

  饥饿感、快乐度和健康度的范围都是0到8.

  醒着时,饥饿感每个滴答会增加1个单位,快乐度每2个滴答减少1个单位(除非在散步或者玩)

  睡觉时,饥饿感每3个滴答增加1个单位。

  进食时,饥饿感每个滴答减少1个单位。

  玩时,快乐度每个滴答增加1个单位。

  散步时,快乐度和健康度每2个滴答增加1个单位。

  看病时,健康度每个滴答增加1个单位。

  如果饥饿感达到7,健康度每2个滴答减少1个单位。

  如果饥饿感达到8,健康度每个滴答减少1个单位。

  如果睡觉时被叫醒,快乐度减少4个单位。

  如果程序不在运行,宠物可能醒着(什么也不做),也可能在睡觉。

  程序重启时,我们会统计过去了多少滴答,并对应过去的每个滴答更新统计信息。

  看起来好像规则很多,不过编写代码其实很容易,实际上,你可能还想增加更多的行为。让它更加有趣。稍后就会给出代码(还会做一些解释)。

  简单动画

  并不总是需要Pygame才能完成动画。我们可以在PythonCard中通过使用定时器完成简单的动画,定时器每隔了段时间会创建一个事件。可以编写一个事件处理器,在定时器到时间时让某个事情发生。这就类似于为一个用户动作编写事件处理器,比如说点击一个按钮,只不过定时器事件是由程序(而不是用户)生成的。

  我们的电子宠物GUI将使用两个定时器:一个用于动画,另一个用于滴答。动画每半秒(0.5秒)更新一次,滴答每5秒发生一次。

评论关闭