Python3.11实战:手把手教你造pygame游戏1、游戏框架

2 篇文章 0 订阅
1 篇文章 0 订阅

参考文献

1、pygame教程(非常详细):Pygame教程(非常详细)-CSDN博客
2、

python --Tkinter详解:python --Tkinter详解_python tkinter-CSDN博客

3、

(建议结合pygame教程来看)

(正文:

时至今日,python已然风靡全世界,不只是因为它适合初学者,功能繁而不杂,还有功能强大的pip,让人第一次用就爱上,更是因为python众多的扩展库

至今,pygame都是python上有名的python扩展库,大家用它开发了众多游戏

它是个搭建python游戏的好手。那么这个博客,就让我们一起来用pygame搭建游戏框架

1、引用扩展库

首先,在cmd中将pygame,random(如果你还没有)这些可能用得上的下载了

C:\Users\dilon>pip install pygame
C:\Users\dilon>pip install random

然后,在程序中引用它们

import pygame
import random

2、制作框架

1、初始化

1、pygame初始化

我们编写pygame的时候,首先要干嘛?

那当然是初始化了!

那初始化怎样写呢?

首先要初始化pygame,它自己的语句是pygame.init()

pygame.init

是的,就这么一行

别看他只有一行,要说起它的功能来,那可真是短小精悍。这是整个程序中的首句代码,它的初始化作用是自动检测pygame软件包是否正常可用,并检查电脑的硬件调用接口、基础功能是否存在问题。同时,它会完成pygame中所有模块的初始化操作,比如display、font、mixer等。除此之外,还有一些基本功能需要其他语句解决。

那还要干嘛呢

2、Surface对象

当然是创造surface对象,没纸你怎么画精灵图!

创建第一个surface对象,和tkinter中的***=tkinter.Tk()。顺带一嘴,tkinter(Tk interface)是Python的标准GUl库,支持跨平台的GUl程序开发。tkinter适合小型的GUl程序编写,也特别适合初学者学习GUl编程。

那Surface怎么创建呢?

很简单,像这样:

pygame.display.set_mode((大小))设置特定大小的屏幕
pygame.image.load("图片路径")设置有图片的屏幕
pygame.Surface((大小),flags,depth)(depth为可选)创造一个有大小、功能标志位、深度的Surface对象

我选择了第一种,及设定一个有特定大小的屏幕

pygame.display.set_mode((400,400))
图一:运行结果

好了,现在我们成功得到了一个屏幕,该对它做点什么了

我使用了fill语句填充了它的颜色,然后使用set_caption语句写入了标题,我命名它为坦克乱世

并且要用flip语句更新

全部代码:

import pygame
import random
pygame.init()
sn = pygame.display.set_mode((400,400))
sn.fill((127,127,127))
pygame.display.set_caption('坦克乱世')
pygame.display.flip()
图二:新的运行结果

这就是运行结果(见图二),看到没,写着标题“坦克乱世”的灰色屏幕

2、主循环(事件监听)

我们想要开发的游戏大致来讲是由动画和人机交互的体验两部分构成,其中动画则是由一系列连续静止的图片,这串图片被称为精灵,经过一定频率的刷新构成的,这个频率被称为FPS,每秒帧率。如果频率值越大则画面越流畅;如果频率值越小则画面会出现卡顿的感受,在游戏过程中一般人能接受的最低FPS约为30Hz,如果想要画面流畅则FPS要大于60Hz(Js1000Hz都不在话下)

FPS越高,细节越好,体验也越好,但是文件容量也越大,就连帧率也会被文件管理器拉下去

动画保证了玩家的视觉体验,而人机交互则是操作上的体验。通过移动和点击鼠标、按下键盘上的技能键,或是滑动手机屏幕等操作来实现人机交互,这些与游戏程序交互的操作被称为事件

如果您接触过JavaScript,那么您对于“事件”这一名词,一定不会陌生,就连本人都经常用到。

Pygame作为一个游戏开发库,同样具有设置和监听事件的功能。它提供了一个enevt事件模块,这个模块中包含了所有常用到游戏事件,像js中一样

w = True
while w:
    for event in pygame.event.get():

event.get就像是js中的event,遍历它可以遍历出所有可能性

让我们编写出第一个事件监听,pygame.QUIT

这个事件就是点击右上角那个×,那意味着什么呢?当然是关闭了!

首先将循环的w设为False,然后break以减少缓存,最后当while编译完最后一行代码后,写上一行pygame.quit,就是将pygame.init加载的所有项都重置

w = True
while w:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            w = False
            break
pygame.quit

还差一步,之前说到要用flip更新,那么,现在就要在while中更新

如果不更新的话,那就可能是之前看到的黑屏幕

全部代码:

import pygame
import random
pygame.init()
sn = pygame.display.set_mode((400,400))
sn.fill((127,127,127))
pygame.display.set_caption('坦克乱世')
w = True
while w:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            w = False
            break
    pygame.display.flip()
pygame.quit

3、总结

本博客让诸位明白如何构造一个pygame游戏的基础框架,最后效果如下所示:

python3.11:

IDLE:

图四:IDLE运行结果
  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当你在运行Python代码时出现"ModuleNotFoundError: No module named 'pygame'"错误,这意味着你的Python环境中缺少了pygame模块。这个错误可能是由于以下几个原因成的: 1. 未正确安装pygame模块。确保你已经使用正确的安装命令安装了pygame模块。可以通过运行"pip install pygame"来安装。如果你使用的是Python 3.x版本,你可能需要运行"pip3 install pygame"。 2. 安装路径不正确。确认你的pygame模块是安装在与你的Python环境相关联的路径上。你可以通过在Python交互式环境中运行以下命令来检查pygame模块的安装路径: ``` import pygame print(pygame.__file__) ``` 确保这个路径是你的Python环境下的site-packages目录中的一个子目录。 3. 环境变量设置不正确。在安装pygame模块之前,你可能需要设置一些环境变量。例如,你可能需要添加Python的安装路径到系统的PATH环境变量中。你可以参考安装pygame的官方文档或其他相关程来了解更多关于环境变量设置的详细信息。 请检查上述原因并尝试解决问题。如果问题仍然存在,你可以提供更多关于你的操作系统、Python版本和安装过程的详细信息,以便更好地帮助你解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ModuleNotFoundError: No module named ‘pygame’——Python3.6安装pip并下载pygame模块](https://blog.csdn.net/weixin_55560445/article/details/114420381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [from pygame.locals import *出现ModuleNotFoundError: No module named ‘pygame‘解决办法](https://blog.csdn.net/qq_49042595/article/details/122299673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [pythonpygame安装过程(超级详细)](https://download.csdn.net/download/weixin_38710566/14914806)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值