趣学Python游戏编程
上QQ阅读APP看书,第一时间看更新

1.5.1 检测小球的位置

若要知道小球是否跑到场景之外,可以将它的位置与窗口进行比较,例如,如果小球的右边界超过了窗口的右边界,则可判定小球即将从右方跑出场景。那么如何用程序来表达这个意思呢?

目前我们只知道小球的x属性表示横坐标,y属性表示纵坐标。而不论是x还是y的值,都是根据角色中心点的位置来计算的,所以准确来说,小球的x属性其实是小球中心点的横坐标,而y属性是小球中心点的纵坐标。那么如何表示小球右边界的坐标呢?

Pgzero为角色对象提供了4个属性left、right、top、bottom,分别表示角色的左、右、上、下各个边界的位置。具体来说,left和right分别表示角色左边界和右边界与窗口左边界的距离;top和bottom分别表示角色上边界和下边界与窗口上边界的距离。于是可以通过ball对象的right属性来获取小球右边界的位置。而要想知道小球的右边界是否超过了窗口右边界,则需要判断小球的right属性是否大于窗口的宽度WIDTH,这可以借助条件语句if来实现,代码类似如下形式:

倘若条件成立,那如何让小球回到窗口之内呢?这就看你的意思了。换句话,你想怎样让小球回到窗口之内都可以,例如可以让小球从窗口右边跑出去,然后从窗口左边重新跑进来;或者当小球跑到场景之外后,让它直接回到窗口中的某个指定位置等。你完全可以按照自己的想法来规定小球的动作,然后编写代码实现,游戏便会忠实地按照你的想法来执行。其实这就是所谓的游戏规则设计,也是游戏设计的最大乐趣所在,因为此刻你就是造物主,游戏世界将会按照你制定的规则来运转。

虽然你可以按照自己的想法行事,但为了保证有人愿意玩你的游戏,你还是得仔细考虑一下如何让游戏规则更有乐趣。游戏设计的最高目标就是实现可玩性,为此需要付出巨大的努力。