猫史档案馆


pgzrun游戏(从官方网站搬运)

用户:衍初衍初查看: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 动画类型

 

 


回复

上一页1 页 / 共 0下一页