当前位置:   article > 正文

用Pygame zero (pgzero)开发游戏(带例子)_pgzero安装

pgzero安装

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,源代码中要导入必要的模块

  1. import pygame
  2. 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图片

也可以这样定义:

  1. fruit=Actor("apple")
  2. fruit.pos = xxx,yyy #xxx,yyy为图片所在坐标

或者这样定义:

  1. fruit=Actor("apple")
  2. fruit.x =xxx
  3. 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分,屏幕背景色变成粉红,但下一次点中图片,背景色更新为绿色。

游戏代码:

  1. import pygame
  2. import pgzrun
  3. from random import randint
  4. WIDTH=800
  5. HEIGHT=400
  6. score=0
  7. flag=0
  8. fruit=Actor("apple")
  9. fruit.pos = randint(100, WIDTH), randint(100, HEIGHT)
  10. def draw():
  11. global flag
  12. screen.fill("green")
  13. if flag==1:
  14. screen.draw.text("Good shoot!score=" + str(score), color="black", topleft=(10, 10), fontsize=60)
  15. elif flag==2:
  16. screen.fill("pink")
  17. screen.draw.text("ERROR shoot!score=" + str(score), color="black", topleft=(10, 10), fontsize=60)
  18. else:
  19. screen.draw.text("score=" + str(score), color="black", topleft=(10, 10), fontsize=60)
  20. fruit.draw()
  21. def place_fruit():
  22. global fruit
  23. fruits = ["apple", "orange", "pineapple","fox","coin","dot","red-dot"]
  24. i=randint(0,len(fruits)-1)
  25. fruit=Actor(fruits[i])
  26. #fruit.name=fruits[i]
  27. fruit.pos = randint(70, WIDTH), randint(70, HEIGHT)
  28. #screen.clean()
  29. #apple.draw()
  30. def on_mouse_down(pos):
  31. global score,flag
  32. if fruit.collidepoint(pos):
  33. score+=20
  34. flag=1
  35. print(f"score={score}")
  36. else:
  37. score-=5
  38. flag=2
  39. print(f"score={score}")
  40. place_fruit()
  41. def update():
  42. global fruit,flag
  43. duration =1
  44. fruit.anchor=("center","bottom")
  45. animate(fruit,duration=duration,x=randint(50,WIDTH-50),y=randint(50,HEIGHT-50))
  46. def shull():
  47. global fruit
  48. duration = 1
  49. animate(fruit, duration=duration, x=randint(50, WIDTH - 50), y=randint(50, HEIGHT - 50))
  50. clock.schedule_interval(shull,1)
  51. pgzrun.go()

游戏运行截图

游戏需要的图片资源可以在这里下载。记得保存在images目录下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/990225
推荐阅读
相关标签
  

闽ICP备14008679号