素材有两份
(1)图片素材
(2)音频素材
第【1】步:你好,兔子
运行IDLE,打开文本编辑器窗口,把下面代码输入其中
保存文件到游戏文件夹中,命名成“game.py”,
我们一段段来分析代码:
1、导入PyGame库文件,这样我们就可以在程序中使用这个库中的函数
2、初始化PyGame,设置显示窗口
3、载入程序中使用到的兔子图片
4、反复循环下面的代码
5、在绘制其它物品前,使用黑色的背景
6、兔子的图片装入,定位于坐标(100,100)
7、更新屏幕
8、检查新的事件,如果有的话就执行,执行退出命令则退出程序
这时候,你运行程序,可以看到下面的界面
第【2】步:添加场景
我们来给这个游戏场景添加一个背景,可以用screen.blit()来做。
在#3代码区后面,添加如下代码
上面的语句载入图片,把图片放在指定变量中。现在可以在屏幕上绘制了,但是你检查一下,草地图片不能覆盖整个屏幕(640*480像素)。这也就是意味着,我们可以像贴瓷砖一样,把一张张的Grass贴到背景上去。
在game.py 文档的#6代码区的前面,添加下面的代码 :
for x in range(width/grass.get_width()+1):
for y in range(height/grass.get_height()+1):
screen.blit(grass,(x*100,y*100))
screen.blit(castle,(0,30))
screen.blit(castle,(0,135))
screen.blit(castle,(0,240))
screen.blit(castle,(0,345 ))
上面的代码中,For语句中先遍历x,在这个循环体中开始遍历y,把(x,y)的位置的草地绘制出来。后面4句代码是把城堡图片绘制在背景上。
现在你运行程序,可以看到下面的界面
第【3】步:让兔子动画起来
下面,我们得添加一些真实的游戏元素,通过键盘让兔子动起来。第一步,得跟踪键盘上那个按键被按下。我们要做的是制作一个键盘状态数列,并且跟踪游戏中每一个按键,每一次按键。
在game.py的#2代码区后面,添加下面的代码(在设置屏幕的高度与宽度后面)
代码很好理解,数组array会跟踪下面按键的秩序:WASD。数组中每一个元素对应一个按键- 第一个是W,第二个是A等,以此类推
playerpos 变量是在游戏中摆放玩家的位置(绘制地方)。游戏中,玩家会移动到不同的位置,使用变量可以非常方便的跟踪玩家位置,然后在这个位置处绘制玩家。
你需要修改原来的代码,可以使用新的变量,
screen.blit(player, (100,100))
把上面的坐标位置修改成变量playerpos
screen.blit(player, playerpos)
下面一步是更新按键数列中的状态,跟踪那个键被按下。PyGame通过添加事件函数event.key来侦测这种状态的变化。
在#8代码区的结尾处,检查event.type==pygame.QUIT,我们可以编写如下代码:
这里的代码数量开始增多了,把他们拆分成If语句,其实并不复杂。首先,检测某个键是按下还是释放,然后确认是那个键被按下或者释放,那个键被检测到,就会更新相应的键盘变量。
最后,还要根据按键的情况,更新playerpos 这个变量。
把下面代码放在game.py的最后面。
上面的代码检测那个键被按下,然后就相应增加或者减少玩家的X坐标或者Y坐标的位置,从而移动玩家。试着玩一下游戏吧,试着使用WASD控制玩家。
第【4】步:让兔子转个弯
兔子能够移动了,但是如果能够用鼠标控制兔子,可以旋转起来就更好了。实现这个功能挺简单的,我们会用到三角函数。
可以看下图
如上图,坐标(5,3)的位置是兔子,坐标(2,4)的位置是鼠标,旋转的角度你可以这样计算:atan2 是一个三角函数,通过计算两个点的X,Y坐标距离差,来计算出角度的大小。
这部分,如果你有一些问题的吧,也不必担心-程序可以往下走。以后数学课可要专心了噢,在游戏编程中经常会用到数学的知识。
现在你可以把这些知识应用到游戏中去了。你可以使用PyGame中的Surface.rotate(角度) 这个函数。
atan2 函数来自库 Python的数学库(Math). 所以在#1代码区后面添加下面代码:
import math
替换#6代码区的代码(player.blit这几行),修改后如下图:
来,复习一下这些代码的基本结构吧。
第一步,你会取得鼠标与玩家的平面位置(坐标),接着这些数据扔给atan2函数,atan2可以计算出从弧度到角度的转化值。兔子可以转动,当然它的位置也会变化,所以你需要重新计算兔子的新的位置,刷新它在屏幕上的显示。
再试试运行程序,按WASD和以前一样,当你移动鼠标时,兔子能够转起来了
6