用户:衍初查看:0 回复:0 评论:0 创建时间:2024-08-06T17:24:19
一、程序框架 1. 导入库 pgzrun
pgzero的导入比较特殊,不是直接 导入 pgzero
一般从 pgzrun 中导入大部分工具,使用 from pgzrun import * 进行导入
from是从...地方
import是导入,*是大部分工具
pgzrun是python game zero run的缩写
from pgzrun import * #导入 pgzero 库
2. 设置窗口大小 screen()
pgzero中,可以直接通过 WIDTH 和 HEIGHT 自定义运行窗口的大小
当然不进行定义也是运行的,pgzero就会以默认的一个窗口宽高运行程序
from pgzrun import * #导入 pgzero 库
WIDTH = 600 #设置窗口宽度
HEIGHT = 800 #设置窗口高度
3. 定义绘制函数 draw()
draw()函数是pgero中特定的函数,每当需要刷新(重绘)窗口的时候, Pygame Zero就会调用这个函数
1)可以进行 screen类的内容绘制,比如窗口背景颜色、形状绘制等:
from pgzrun import * #导入 pgzero 库
WIDTH = 600 #设置窗口宽度
HEIGHT = 800 #设置窗口高度
def draw(): #定义 draw() 函数
screen.fill((128, 0, 0)) #设置窗口背景颜色
2)⚠️ 这里需要注意的是,如果通过 Actor() 创建了角色但没有进行绘制,在运行时也会看不到角色的哦:
from pgzrun import * #导入 pgzero 库
cat = Actor("cat.png") #创建角色
def draw(): #定义 draw() 函数
cat.draw() #绘制角色
4. 定义更新函数 update()
update()函数也是pgero中特定的函数,是模块的主循环,每分钟调用60次
我们可以通过改变角色的位置来实现角色移动的效果
5. 运行程序 go()
是运行 pgzero 时必须要调用的函数哦,使用了go()函数,才会正式执行程序,go()主要包含以下几个功能:
1)执行创建窗口
2)调用 draw() 函数
3)调用 update() 函数
from pgzrun import * #导入 pgzero 库
cat = Actor("cat.png") #创建角色
def draw(): #定义 draw() 函数
screen.clear() #清除屏幕内容
cat.draw() #绘制角色
def update(): #定义 update() 函数
cat.x += 1 #改变角色位置
go() #运行程序
二、角色 Actor() 1. 角色创建 Actor()
创建角色时需要调用文件列表中的资源,一般需要规定放在images文件夹下才可以调用成功
支持调用文件全称“cat.png” 或 文件名称 “cat” 两种形式
2. 角色定位
如果给某个位置属性赋值,则将移动角色。例如:
alien.right = WIDTH
类似地,您也可以通过将以下其中一个作为关键字参数传递,来设置 actor 在构造函数中的初始位置:pos、topleft、toplight、bottomleft、bottomright、midtop、midlight、middown或center:
这可以在创建过程中完成,也可以通过指定一对x、y坐标来完成。例如:
from pgzrun import *
alien = Actor('cat', center=(100, 100))
def draw():
alien.draw()
go()
3. 角色属性
位置
尺寸
角度
显示隐藏
图片
指定帧
4. 角色方法
三、屏幕 Screen() 1. 清空屏幕 screen.clear()
清空当前 screen 内容
from pgzrun import *
def draw():
screen.draw.line((1000, 500), (200, 200), "red")
screen.clear()
go()
2. 填充背景 screen.fill(
color : Color
)
根据传入的颜色填充screen
from pgzrun import *
def draw():
screen.fill((128, 0, 0))
go()
3. 直线 screen.
draw.line(
start , end , color
)
绘制直线:start 起始坐标,end 结束坐标,color 绘制颜色
from pgzrun import *
def draw():
screen.draw.line((1000, 500), (200, 200), "red")
go()
4. 空心圆 screen.draw.circle( pos , radius, color )
绘制空心圆:pos 原点坐标,radius 半径, color 颜色
from pgzrun import *
def draw():
screen.draw.circle((200, 200), 200, (255, 0, 0))
screen.draw.circle((100, 100), 50, "yellow")
go()
6. 实心圆 screen.draw.filled_circle( pos , radius, color )
绘制实心圆
pos 原点坐标,radius 半径, color 颜色
from pgzrun import *
def draw():
screen.draw.filled_circle((200, 200), 200, (255, 0, 0))
screen.draw.filled_circle((100, 100), 50, "yellow")
go()
7. 空心矩形 screen.draw.rect( rect , color )
rect为pgzero预置的矩形参数,可以这样使用:
from pgzrun import *
RED = 200, 0, 0
BOX = Rect((20, 20), (100, 100))
def draw():
screen.draw.rect(BOX, 'red')
go()
8. 实心矩形 screen.draw.filled_rect( rect , color )
绘制实心矩形,与 screen.draw.rect() 相同
from pgzrun import *
RED = 200, 0, 0
BOX = Rect((20, 20), (100, 100))
def draw():
screen.draw.filled_rect(BOX, 'red')
go()
四、鼠标 Mouse()
1. 鼠标按键按下事件:on_mouse_down( pos, button )
鼠标按下时响应,pos 为鼠标坐标,button 为鼠标按键
from pgzrun import *
def on_mouse_down(pos, button):
print(button, ':', pos)
go()
2. 鼠标按键抬起事件:on_mouse_up( pos, button )
鼠标按键抬起时响应,pos 为鼠标坐标,button 为鼠标按键
from pgzrun import *
def on_mouse_up(pos, button):
print(button, ':' ,pos)
go()
3. 鼠标移动事件:on_mouse_move( pos, button )
鼠标移动时响应,pos 为鼠标坐标,button 为鼠标按键
from pgzrun import *
def on_mouse_move(pos, button):
print(button, ':' ,pos)
go()
在鼠标事件函数外,可以通过 mouse.pos、mouse.x、mouse.y 获得鼠标信息,也可通过mouse.LEFT、mouse.RIGHT等代表鼠标按键或滚轮
4. 鼠标属性
from pgzrun import *
def update():
print(mouse.pos) # (1000, 500)
print(mouse.x) # 1000
go()
五、按键 Key() 1. 键盘按键按下事件:on_key_down( key )
键盘按键按下时响应,key 为按下的按键
from pgzrun import *
def on_key_down(key):
print(key)
go()
2.
键盘按键抬起事件:on_key_up(
key
)
键盘按键抬起时响应,key 为抬起的按键
from pgzrun import *
def on_key_up(key):
if key == keys.I: # 当按键'I'抬起时,打印按键I
print(key)
go()
3. 按键支持
在键盘事件函数中,可使用 key == keys.RIGHT 判断 right 键是否被按下;
在键盘事件函数以外,如 update 函数中,可以通过 keyboard[keys.RIGHT] 判断 right 是否被按下。
from pgzrun import *
def update():
if keyboard[keys.LEFT]:
print('left')
elif keyboard[keys.RIGHT]:
print('right')
go()
六、音乐 Music()
属性
from pgzrun import * # 导入游戏库
music.volume = 0.5 # 设置当前音量
print(music.volume) # 获取当前音量
方法
from pgzrun import * # 导入游戏库
path = '' # 音效地址
music.play(path)
from pgzrun import * # 导入游戏库
path = '' # 音效地址
music.play_once(path)
from pgzrun import * # 导入游戏库
path = ''
music.play(path)
if music.is_playing():
print('is playing')
from pgzrun import * # 导入游戏库
music.set_volume(0.5)
from pgzrun import * # 导入游戏库
print(music.get_volume())
from pgzrun import * # 导入游戏库
path = '' # 音效地址
music.play(path)
def stop_music():
music.stop()
clock.schedule(stop_music, 3)
七、音效 Sounds() 方法
from pgzrun import * # 导入游戏库
sounds.xxx.play()
from pgzrun import * # 导入游戏库
sounds.xxx.play()
sounds.xxx.stop()
from pgzrun import * # 导入游戏库
sounds.xxx.play()
print(sounds.xxx.get_length())
八、动画 Animate()
动画创建
pos 为目标坐标
duration 为动画持续时间,单位为秒,默认1秒
on_finished 为动画结束后的回调函数
targets 可以为 (pos) 、 (x) 、 (y)
tween 动画类型