赞
踩
1.用python开发游戏很方便。Pygame是一个非常好用的游戏开发库。而在此之上的pygame zero库更为游戏开发 提供了更好的环境。Pygame zero 对于游戏制作新手来说是一个绝佳的模块。它是pygame的简化版,隐藏了pygame中一些比较复杂的功能,更容易上手。它不仅包含一些对新手很有用的工具,对于要开发精彩游戏的人来说,也足够强大。
2.pygame 和pygame zero的安装
首先,要注意pygame zero可能对python3.9以上的版本有兼容性问题,所以尽量选择用python3.6~3.8版本的python。
其次,先安装 pygame
Pip install pygame
最后,安装pygame zero:
Pip install pgzero
3.pgzero的使用简介
3.1,源代码中要导入必要的模块
- import pygame
- import pgzrun
-
在主程序的最后一行要有以下代码:
pgzrun.go()
3.2,项目的组织情况:
3.2.1项目的目录一般有images,music,sounds,
3.2.2主要的.py文件放在项目根目录下。
3.2.3 images/ 目录是图片的标准默认目录。
Pygame Zero支持的图片格式 .jpg .gif .png
推荐使用 png 类型, 因为这种类型支持透明背景。这在做动画游戏的时候非常重要。
3.2.4 music/ 是音乐文件的默认标准目录。
音乐文件:常用的格式:MP3 (.mp3) OGG (.ogg) WAV (.wav)
音乐文件通常是指较长时长的音频,用于背景音乐或其他需要长时间播放的场合。
3.2.5 sounds/ 是声音文件的默认标准目录。
声音文件:常用的格式:OGG (.ogg),WAV (.wav)
声音文件通常是指短时的音频片段,如音效、声效等,用于游戏中的特定声音效果,如打击声、爆炸声、脚步声等各种效果音。声音文件相对较短,通常以较低的比特率进行编码,以节省存储空间和加载时间。
3.3 WIDTH和HEGIHT
在Pgzero中,通过WIDTH和HEGIHT两个常量值来确定程序运行窗口的大小
3.4 生成游戏角色
<变量> =Actor("str", (x, y)) #生成一个游戏角色,导入一个名为str图片
也可以这样定义:
- fruit=Actor("apple")
- fruit.pos = xxx,yyy #xxx,yyy为图片所在坐标
或者这样定义:
- fruit=Actor("apple")
- fruit.x =xxx
- fruit.y =yyy
Actor类的构造方法有两个基本参数,第一个参数是角色的图片文件名,角色图片可以调用的图片格式是.jpg、.png、.gif,调用图片文件时无需扩展名,第二个参数是角色的初始位置坐标。
3.5 常用函数
Pygame Zero定义了一些其他固定名称的函数(有点像接口),用于处理特定的游戏事件或执行其他功能。你可以根据需要在你的代码中实现这些函数,以便响应相应的事件。以下是一些常用的固定函数名称:
draw():这个函数用于绘制游戏场景。你可以在这个函数中使用 Pygame 的绘图函数来绘制图像、文本和等,并将它们显示在屏幕上。Pgzero库自带函数,它可以显示各种图形或图像,它是Pygame、Pygame Zero库约定好的函数,程序运行以后,会被自动执行。所有绘制角色的代码,都需要写在这个函数中。用户可以在程序中将自己的代码定义在draw( )函数内。
update():这个函数用于更新游戏逻辑和状态。你可以在这个函数中实现游戏中各种元素的移动、碰撞检测、状态变化等更新操作。update()函数是Pygame zero库自带的函数,每秒自动运行60次用以不断更新游戏,程序运行以后,会被自动执行。所有更新游戏场景、游戏角色的代码,所有对角色对象操作的代码都要写在update()函数中。
程序运行起来之后,会先运行update(),再运行draw()。一般绘制游戏的代码,比如screen.draw.text()最好放在draw()中,而不是放在update()中。
on_key_down(key):在用户按下某个键时被调用。例如移动角色、触发事件等。key参数表示被按下的键的名称。
on_key_up(key):在用户释放某个键时被调用。如停止角色移动等。key参数表示被按下的键的名称。
on_mouse_down(pos, button):在用户按下鼠标按钮时被调用。如捕获点击事件、进行拖动等。button参数表示释放的鼠标按钮的名称,pos参数表示释放发生的位置。
on_mouse_up(pos, button):在用户释放鼠标按钮时被调用。如停止拖动等。button参数表示释放的鼠标按钮的名称,pos参数表示释放发生的位置。
on_mouse_move(pos, rel, buttons):鼠标移动时调用。pos参数表示当前鼠标位置,rel参数表示相对于上次移动的位置变化,buttons参数表示当前按下的鼠标按钮的状态。
on_quit():关闭游戏窗口。
4. 实际操作
下面,编写一个点击图片的小游戏。
游戏操作介绍:窗口上有一个图片在移动,玩家鼠标点中图片,分数加20分,同时图片以及图片位置更新到新的地方。如果没有点中图片,分数扣5分,屏幕背景色变成粉红,但下一次点中图片,背景色更新为绿色。
游戏代码:
- import pygame
- import pgzrun
- from random import randint
- WIDTH=800
- HEIGHT=400
- score=0
- flag=0
- fruit=Actor("apple")
- fruit.pos = randint(100, WIDTH), randint(100, HEIGHT)
-
-
- def draw():
- global flag
- screen.fill("green")
- if flag==1:
- screen.draw.text("Good shoot!score=" + str(score), color="black", topleft=(10, 10), fontsize=60)
- elif flag==2:
- screen.fill("pink")
- screen.draw.text("ERROR shoot!score=" + str(score), color="black", topleft=(10, 10), fontsize=60)
- else:
-
- screen.draw.text("score=" + str(score), color="black", topleft=(10, 10), fontsize=60)
-
- fruit.draw()
- def place_fruit():
- global fruit
- fruits = ["apple", "orange", "pineapple","fox","coin","dot","red-dot"]
- i=randint(0,len(fruits)-1)
- fruit=Actor(fruits[i])
- #fruit.name=fruits[i]
- fruit.pos = randint(70, WIDTH), randint(70, HEIGHT)
-
- #screen.clean()
- #apple.draw()
- def on_mouse_down(pos):
- global score,flag
- if fruit.collidepoint(pos):
- score+=20
- flag=1
- print(f"score={score}")
- else:
- score-=5
- flag=2
- print(f"score={score}")
- place_fruit()
- def update():
- global fruit,flag
- duration =1
- fruit.anchor=("center","bottom")
- animate(fruit,duration=duration,x=randint(50,WIDTH-50),y=randint(50,HEIGHT-50))
- def shull():
- global fruit
- duration = 1
- animate(fruit, duration=duration, x=randint(50, WIDTH - 50), y=randint(50, HEIGHT - 50))
- clock.schedule_interval(shull,1)
- pgzrun.go()
游戏运行截图
游戏需要的图片资源可以在这里下载。记得保存在images目录下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。