pygame zero是专门制作游戏的工具包,给我们提供很多新的功能,Pygame Zero可以轻松无障碍创建游戏,简称为pygame。
pygame基础
运行程序以后,会弹出一个新的界面,我们把这个弹出的界面叫做窗口,窗口中显示的就是程序的运行效果。
<br />
import pgzrun //导入pygame库<br />
WIDTH = 500 //变量WIDTH控制窗口宽度<br />
HEIGHT = 350 //变量HEIGHT控制窗口高度<br />
def draw():<br />
screen.clear()<br />
screen.blit('pygame', pos=[0,0])<br />
pgzrun.go() //启动pygame程序<br />
绘制角色
├── images/
│ └── kevin.png
└── index.py
绘制一个角色分为两个步骤:创建角色,绘制已创建好的角色。
Actor()命令:作用是创建一个角色。
角色名 = Actor(‘角色的造型’)
注意:在填写造型名字的时候,只需要填写’ . ‘ 前面的部分。
例如:图片名为kevin.png,在填写造型名字时,填写kevin.
绘制已创建好的角色,要找到draw()函数,它是pygame约定好的函数,程序运行以后,会被自动执行。所有绘制角色的代码,都需要写在这个函数中。
<br />
xiaowangzi = Actor('小王子') //创建一个角色xiaowangzi,造型为小王子<br />
def draw():<br />
screen.clear()<br />
screen.blit('小王子实验室', pos=[0,0])<br />
xiaowangzi.draw() //绘制出角色xiaowangzi<br />
python坐标系
在pygame中,程序默认将角色绘制在窗口的左上角。我们可以通过设置角色的坐标,来改变它在窗口中的位置。
窗口左上角顶点的x坐标和y坐标都是0。
向右方向,x坐标逐渐增大。向下方向,y坐标逐渐增大。
<br />
xiaowangzi = Actor('小王子')<br />
xiaowangzi.x = 200<br />
xiaowangzi.y = 375<br />
可以使用 "角色名.x" 和 "角色名.y" 来设置角色的坐标。
on_key_down函数
在用户按下键盘上的按键时,参数key中保存的是用户按下的按键。
<br />
def on_key_down(key):<br />
下级代码<br />
在pygame中,当我们按下键盘时,程序会自动执行on_key_down()函数。
<br />
xiaowangzi = Actor('小王子')<br />
xiaowangzi.x = 200<br />
xiaowangzi.y = 375<br />
def on_key_down():<br />
xiaowangzi.x = 400<br />
xiaowangzi.y = 520<br />
小王子初始位置 [200, 375] , 当按下键盘时小王子会来到坐标为 [400,520] 的位置。
根据按键控制角色移动
<br />
import pgzrun<br />
WIDTH = 700<br />
HEIGHT = 500<br />
xiaowangzi = Actor('小王子')<br />
xiaowangzi.x = 600<br />
xiaowangzi.y = 400<br />
def draw():<br />
screen.blit('公园', pos=[0,0])<br />
xiaowangzi.draw()<br />
def on_key_down(key):<br />
if key = keys.LEFT:<br />
xiaowangzi.x -= 50 //参数key等于键盘左键时,小王子向左移动,x坐标减少50<br />
if key = keys.RIGHT:<br />
xiaowangzi.x += 50 //参数key等于键盘右键时,小王子向右移动,x坐标增加50<br />
if key = keys.UP:<br />
xiaowangzi.y -= 50 //参数key等于键盘上键时,小王子向上移动,y坐标减少50<br />
if key = keys.DOWN:<br />
xiaowangzi.y += 50 //参数key等于键盘下键时,小王子向下移动,y坐标增加50<br />
pgzrun.go()<br />
鼠标事件
on_mouse_down函数
当按下鼠标上的按键时,执行on_mouse_down()函数的下级代码。
<br />
def on_mouse_down():<br />
aim.image = '射击'<br />
和on_key_down()函数一样,on_mouse_down()函数也是 pygame约定好的函数。 只要编写on_mouse_down()函数,pygame程序就会在点击鼠标的时候,自动执行这个函数。
<br />
xiaowangzi = Actor('小王子')<br />
def on_mouse_down():<br />
xiaowangzi.image = ('王子')<br />
初始角色造型为小王子,当点击鼠标,角色造型切换为王子。
on_mouse_up函数
当松开鼠标上的按键时,执行on_mouse_up()函数的下级代码。
<br />
def on_mouse_up():<br />
aim.image = '瞄准'<br />
on_mouse_move函数
on_mouse_move()的括号中可以填写参数pos。
<br />
def on_mouse_move(pos):<br />
角色名.pos = pos<br />
例如通过打印参数pos可以获得移动鼠标的坐标。
<br />
def on_mouse_move(pos):<br />
print(pos)<br />
碰撞检测函数colliderect()
在pygame中,有一个专门判断两个角色是否碰到的函数colliderect().
角色a.colliderect(角色b)
<br />
import pgzrun<br />
xiaowangzi = Actor('小王子')<br />
button = Actor('按钮')<br />
def draw():<br />
screen.blit('公园', [0,0])<br />
xiaowangzi.draw()<br />
button.draw()<br />
def on_key_down():<br />
if xiaowangzi.colliderect(button):<br />
button.image = '按钮按下'<br />
pgzrun.go()<br />
如果角色xiaowangzi碰到了角色button时就将button的造型切换成“按钮按下”。
随机数
random库是使用随机数的Python标准库,在使用randint()命令时一定要调用random库。
random.randint(参数1, 参数2)用于生成一个指定范围内的整数,其中参数1是最小值,参数2是最大值。
生成的随机数n, 参数1 ≤ n ≤ 参数2。
<br />
import random<br />
random.randint(0, 600)<br />
例如
<br />
import random</p>
<p>WIDTH = 600<br />
HEIGHT = 600</p>
<p>aim = Actor('瞄准状态')</p>
<p>enemy =Actor('正常状态')<br />
enemy.x random.randint(0,600)<br />
enemy.y random.randint(0,600)<br />
update()函数
update()函数是pygame和我们约定好的,它会在程序启动之后自动执行。
程序运行后会自动执行update()函数,一直重复执行,每秒会被执行60次。
完成飞船往返飞行的效果
<br />
import pgzrun</p>
<p>WIDTH = 600<br />
HEIGHT = 600</p>
<p>airboat = Actor('飞船')<br />
airboat.x = 0<br />
airboat.y = 200</p>
<p>def draw():<br />
screen.blit('太空', [0,0])<br />
airboat.draw()</p>
<p>def update():<br />
airboat.x ++ 3<br />
if airboat.x > 600:<br />
airboat.x = 0<br />
pgzrun.go()<br />
update()函数判断用户按下的按键
keyboard.键盘名称
当按下键盘上相应的键不松开时,keyboard.键盘名称的值就是True,不按时就是False.
<br />
import pgzrun</p>
<p>def update():<br />
print(keyboard.space)</p>
<p>pgzrun.go()<br />
在update()函数中把keyboard.space打印出来。
点击运行按钮,输出区会一直打印False, 当我们按下空格键,打印的内容就会变成True,松开空格键,就会再次打印False。
<br />
import pgzrun</p>
<p>WIDTH = 600<br />
HEIGHT = 600</p>
<p>ship = Actor('战舰')</p>
<p>def draw():<br />
screen.blit('太空', [0,0])<br />
ship.draw()</p>
<p>def update():<br />
ship.y += 5<br />
if keyboard.space:<br />
ship.y -= 10<br />
if keyboard.left:<br />
ship.x -= 5<br />
if keyboard.right:<br />
ship.x += 5</p>
<p>pgzrun.go()<br />
pgzrun.go()<br />
角色的初始化
在pygame中,创建一个新角色,需要做三件事:
1、设置角色的初始造型
2、设置角色的初始位置
3、将角色绘制出来
这个过程,也叫作角色的初始化。
<br />
import pgzrun</p>
<p>WIDTH = 600<br />
HEIGHT = 600</p>
<p>ship = Actor('战舰') //初始造型<br />
ship.x = 300 //初始位置<br />
ship.y = 100</p>
<p>def draw():<br />
screen.blit('太空', [0,0])<br />
ship.draw() //绘制角色<br />
pgzrun.go()<br />
现在的开发工具真的很方便,适合个人开发者去开发一些休闲小游戏。
嗯,现在确实好方便!