玩游戏学Python5-函数

1.函数的概念

函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。当需要在程序中多次执行同一项任务时,无须反复编写完成该任务的代码,只需要调用执行该任务的函数,让 Python 运行其中的代码即可。

2.函数的格式

函数的格式如下所示。

cpp 复制代码
def 函数名(参数):

      函数体

其中,关键字 def 来告诉Python,要定义一个函数。接下来是函数名,就像变量名一样,通过函数名来使用这个函数。函数名后面的圆括号里包含的是函数的参数,参数表示函数为完成任务需要什么样的信息,如果不需要额外信息,可以不设置参数,也就是圆括号内为空。最后,函数定义以冒号结尾。

接下来新起一行,作为函数体代码,也就是这个函数具体的功能代码。需要注意的是,函数体的代码都是有缩进的。

3.函数的定义及调用

定义及调用函数的代码如图1所示。

图1 函数的定义及调用

其中,第8-12行代码定义了一个函数名为show_sum的函数,该函数的参数为空。第9-12行为函数的函数体,在函数体中,分别定义了三个整型变量a、b和c。最后,使用print()函数输出这三个变量的和。第14行代码调用了show_sum()函数。运行代码后,会输出6。

3.1 pgzero中的draw()函数

在pgzero库中,draw()函数的作用是绘制游戏窗口。只需要定义这个函数,由pgzero库自动调用它。代码如图2所示。

图2 pgzero中的draw()函数

图2所示代码定义了draw()函数,在该函数中,第9行代码的screen表示游戏窗口,screen.fill()函数的作用是使用指定颜色填充游戏窗口,该函数的参数是一个字符串,'green'表示绿色。以上代码运行的效果如图3所示。

图3 代码运行效果

相关链接1 字符串表示不同颜色:'red'红色,'blue'蓝色,'green'绿色,'yellow'黄色,'pink'粉色,'orange'橙色,'white'白色,'black'黑色,'brown'棕色。

也可以在定义函数前,首先定义一个表示屏幕背景颜色的字符串变量,在draw()函数中使用该变量设置游戏窗口背景色,代码如图4所示。

图4 使用变量设置游戏窗口背景色的代码

后续如果需要改变游戏窗口的背景颜色,只需修改变量screen_color的值即可。

3.2 pgzero库的update()函数

update()函数与draw()函数类似,也由pgzero库自动调用。但是update()函数的作用不是绘制,而是更新。比如更新游戏中玩家或者敌人的位置、速度、血量等状态。定义该函数的代码如图5所示。

图5 update()函数的代码

此时,update()函数的作用是输出"你好"。代码运行效果如图6所示。

图6 代码运行效果

从图6中可以看出,程序运行后,update()函数会被pgzero库循环调用。

相关链接2 在pgzero游戏中,每调用一次update()函数,可以看作是游戏中的一帧。pgzero一秒钟大概调用60次update()。

4.完整代码

以上内容的完整代码如下所示。

python 复制代码
import pgzrun

WIDTH = 480
HEIGHT = 960
TITLE = '我的第一个pgzero游戏'
ICON = 'car.png'
screen_color = 'green'

def draw():
    screen.fill(screen_color)

def update():
    print('你好')
    
pgzrun.go()
相关推荐
M--Y1 小时前
LangChain 提示工程:少样本提示与输出解析器
python·langchain·大模型·llm·输出解析器·少样本提示
朱包林1 小时前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
Rain的Java大神之路1 小时前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源1 小时前
springboot本地生活服务平台33399-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·小程序·flask·课程设计
高级程序源1 小时前
springboot社区旧物回收管理系统25381-计算机课程设计、毕业设计
vue.js·spring boot·python·django·课程设计
高级程序源1 小时前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
谢亮_vipxieliang1 小时前
JavaScript this 指向完全指南:调用位置决定一切
开发语言·javascript·ecmascript
denlaku1 小时前
JDK 13 新特性详解
java·开发语言
打工仔折腾 AI1 小时前
极空间用 Docker 部署 Photopea:网页版 PS 的私有化实践
运维·后端·python·docker·容器·langchain·ai agent 实战