小学生python游戏开发pygame--初始及基础知识

article/2025/9/7 1:51:52

#1024程序员节|用代码,改变世界#

小学生python游戏开发pygame1--基础知识

    • 前言
    • 知识点
      • 1、python知识点
        • 1.1 RGB 颜色表示
        • 1.2 类
        • 2.3 pygame.display.update()
        • 2.4 加载图片
        • 2.5 鼠标 键盘
        • 2.6 颜色
        • 2.7 中文字体
        • 2.8 音效
    • 总结
    • 源码获取

前言

Pygame是被设计用来写游戏的python模块集合,Pygame是在优秀的SDL库之上开发的功能性包。使用python可以导入pygame来开发具有全部特性的游戏和多媒体软件,Pygame是极度轻便的并且可以运行在几乎所有的平台和操作系统上。Pygame包已经被下载过成千上万次,并且也被访问过成千上万次。
Pygame是免费的,发行遵守GPL,你可以利用它开发开源的、免费的、免费软件、共享件、还有商业软件等等。
截止到 2020 年 10 月 28 日,Pygame 已经诞生 20 周年。Pygame 是 Pete Shinners 在 SDL(Simple DirectMedia Layer,一套开源的跨平台多媒体开发库,使用 C语言编写,它提供了多种控制图像、声音、输入/输出的函数,Pygame 可以看做是对 SDL 的封装,在 SDL 库基础上提供了各种 Python 的 API接口。目前 SDL 主要用于多媒体领域,比如开发游戏、模拟器、媒体播放器等。)基础上开发而来,其目的是取代 PySDL。
Python 作为一门解释型语言并不适合开发大型的 3D 游戏,但 Python 通过对其他语言的接口封装,使自身具备了开发大型 3D 游戏的能力,例如 Panda3D 的底层是用 C++ 语言编写的。但在网上看有人分析,panda3D用起来也不太爽,正从之转用unity3d;一些较为知名的 3D 游戏,比如魔兽世界、文明帝国4等游戏都是使用 Python 语言开发的,而国内较为知名的“阴阳师”手游,也是由 Python 语言开发而成。准备花些时间把pygame整理下,再去了解其它游戏知识。

知识点

1、python知识点

1.1 RGB 颜色表示

在pygame中,颜色也是采用RGB方式来设定,这种颜色由红色,绿色,蓝色组成,其中每个值的取值范围都为0~255.颜色值(255,0,0)表示红色,(0,255,0)表示绿色,(0,0,255)表示蓝色。从(0,0,0)到(255,255,255)一共有16,777,216种不同的颜色,下表简单列出一些常用的颜色
白色:rgb(255,255,255)
黑色:rgb(0,0,0)
红色:rgb(255,0,0)
绿色:rgb(0,255,0)
蓝色:rgb(0,0,255)
青色:rgb(0,255,255)
紫色:rgb(255,0,255)
在这里插入图片描述

1.2 类

定义按钮类,界面相关无素,为以后做简单小游戏作准备

class Button(object):def __init__(self, text, color, x=None, y=None, **kwargs):self.surface = font.render(text, True, color)self.WIDTH = self.surface.get_width()self.HEIGHT = self.surface.get_height()if 'centered_x' in kwargs and kwargs['centered_x']:self.x = display_width // 2 - self.WIDTH // 2else:self.x = xif 'centered_y' in kwargs and kwargs['cenntered_y']:self.y = display_height // 2 - self.HEIGHT // 2else:self.y = ydef display(self):screen.blit(self.surface, (self.x, self.y))def check_click(self, position):x_match = position[0] > self.x and position[0] < self.x + self.WIDTHy_match = position[1] > self.y and position[1] < self.y + self.HEIGHTif x_match and y_match:return Trueelse:return False```### 2、pygame知识点
#### 2.1 安装 导入
关于PyGame的安装,如同python的第三方包一样,利用pip进行安装最为方便快捷:
pip install pygame
在安装完成后,在idle中或是ipython等交互命令窗口利用以下代码可验证是成功:
import pygame
#### 2.2 游戏初始化
![在这里插入图片描述](https://img-blog.csdnimg.cn/73d8c5fe11c54e20a93e31e5b393ae85.png)```python
# _*_ coding: UTF-8 _*_
# 开发团队: 信息化未来
# 开发人员: Administrator
# 开发时间:2022/10/21 16:52
# 文件名称: pg初始2.py
# 开发工具: PyCharm
import pygame# 初始化操作
pygame.init()
# 创建游戏窗口
# set_mode(大小),创建一个窗口,宽400像素、高600像素,需要传入一个元组。这个函数会返回一个pygame中的Surface对象(这里就是屏幕),
# 这个Surface对象是pygame中的一个非常重要的对象
window = pygame.display.set_mode((400, 600))
# 设置游戏名
pygame.display.set_caption('pygame游戏的初始化')
# 设置背景颜色
window.fill((255, 255, 255))
pygame.display.flip()
# 让游戏保持一直运行的状态
# 游戏循环(检测事件)
while True:# 检测事件(比如鼠标,键盘的点击检测)# 固定写法,event,get可以一次获取多个事件,所以要循环遍历for event in pygame.event.get():# 判断是否退出(点×)if event.type == pygame.QUIT:# 退出函数exit()

2.3 pygame.display.update()

pygame.display.update()就是用来刷新屏幕的,它会将屏幕清空,变成初始的样子。因为你游戏中可以不止一个人物在动,所以当所有事件响应完毕、计算出新的位置之后,会将屏幕刷新,然后在新的位置上重新绘制所有人物(或者模型),就仿佛人物在移动一样。另外,这个游戏默认应该是不退出的,也就是要不停的循环事件、并响应,所以我们外面要有一个while True:
flip()功能将整个显示表面更新到屏幕。
更常见的是,使用update()函数代替flip()函数,因为它只更新屏幕的某些部分,而不是整个区域,从而节省内存。让我们将update()函数添加到*.py文件的底部

2.4 加载图片

pygame.image.load表示加载一个图片,支持多种格式,然后返回一个Surface对象

import pygame
import timedef main():#1. 创建窗口screen = pygame.display.set_mode((370,598),0,32)#2. 创建一个背景图片background = pygame.image.load("images/bg1.jpg")while True:screen.blit(background, (50,0))pygame.display.update()time.sleep(0.01)for event in pygame.event.get():# 判断是否退出(点×)if event.type == pygame.QUIT:# 退出函数exit()if __name__ == "__main__":main()

2.5 鼠标 键盘

pygame.event.get()
对于游戏来讲,事件是一个非常重要的概念,pygame需要接收事件并且进行响应。而对于pygame来讲,用户的键盘输入、鼠标移动、点击以及窗体的移动等等都是事件,pygame会把所有的事件都放在一个队列里面。通过pygame.event.get()即可拿到存放所有事件的队列,每一个事件在pygame中都是一个Event对象。
pygame.event.get()获取用户对窗口的所有响应。这里要注意,由于用户在同一时间有可能会对窗体进行多种操作,所以pygame.event.get()将返回一个列表,该列表中每一个元素均为pygame.event.Event类型,当然,如果用户不曾操作窗体,该列表将为空。
在这里插入图片描述

# _*_ coding: UTF-8 _*_
# 开发团队: 信息化未来
# 开发人员: Administrator
# 开发时间:2022/10/22 21:09
# 文件名称: pgbutton.py
# 开发工具: PyCharmimport pygameclass Button(object):def __init__(self, text, color, x=None, y=None, **kwargs):self.surface = font.render(text, True, color)self.WIDTH = self.surface.get_width()self.HEIGHT = self.surface.get_height()if 'centered_x' in kwargs and kwargs['centered_x']:self.x = display_width // 2 - self.WIDTH // 2else:self.x = xif 'centered_y' in kwargs and kwargs['cenntered_y']:self.y = display_height // 2 - self.HEIGHT // 2else:self.y = ydef display(self):screen.blit(self.surface, (self.x, self.y))def check_click(self, position):x_match = position[0] > self.x and position[0] < self.x + self.WIDTHy_match = position[1] > self.y and position[1] < self.y + self.HEIGHTif x_match and y_match:return Trueelse:return Falsedef starting_screen():screen.blit(bg, (0, 0))game_title = font.render('英语大战', True, WHITE)screen.blit(game_title, (display_width // 2 - game_title.get_width() // 2, 150))play_button = Button('开始', RED, None, 350, centered_x=True)exit_button = Button('关闭', WHITE, None, 400, centered_x=True)while True:if play_button.check_click(pygame.mouse.get_pos()):play_button = Button('开始', RED, None, 350, centered_x=True)else:play_button = Button('开始', WHITE, None, 350, centered_x=True)if exit_button.check_click(pygame.mouse.get_pos()):exit_button = Button('关闭', RED, None, 400, centered_x=True)else:exit_button = Button('关闭', WHITE, None, 400, centered_x=True)for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()raise SystemExitif pygame.mouse.get_pressed()[0]:if play_button.check_click(pygame.mouse.get_pos()):bfunc()print('开始')breakif exit_button.check_click(pygame.mouse.get_pos()):print('结束')breakplay_button.display()exit_button.display()pygame.display.update()display_width = 400
display_height = 600WHITE = (255, 255, 255)
RED = (255, 0, 0)
bg_location = 'images\\bg2.jpg'pygame.init()
screen = pygame.display.set_mode((display_width, display_height))
bg = pygame.image.load(bg_location)
font = pygame.font.Font('fonts\\simhei.ttf', 30)def bfunc():print('按钮事件')starting_screen()

2.6 颜色

pygame.color
Parameters(参数):
r (int)–红色值,取值范围为0 ~ 255(含255)
g (int)–绿色取值范围为0 ~ 255(含255)
b (int)–蓝色值,取值范围为0 ~ 255
a (int)–(可选)alpha值的取值范围为0 ~ 255(含255),默认为255
pygame.Color.r
获取或设置“颜色”的红色值。
pygame.Color.g
获取或设置Color的绿色值。
pygame.Color.b
获取或设置颜色的蓝色值。
pygame.Color.a
获取或设置颜色的alpha值

2.7 中文字体

font = pygame.font.Font(‘fonts\simhei.ttf’, 30)

2.8 音效

按钮加上音效

# _*_ coding: UTF-8 _*_
# 开发团队: 信息化未来
# 开发人员: Administrator
# 开发时间:2022/10/22 21:09
# 文件名称: pgbutton.py
# 开发工具: PyCharmimport pygameclass Button(object):def __init__(self, text, color, x=None, y=None, **kwargs):self.surface = font.render(text, True, color)self.WIDTH = self.surface.get_width()self.HEIGHT = self.surface.get_height()if 'centered_x' in kwargs and kwargs['centered_x']:self.x = display_width // 2 - self.WIDTH // 2else:self.x = xif 'centered_y' in kwargs and kwargs['cenntered_y']:self.y = display_height // 2 - self.HEIGHT // 2else:self.y = ydef display(self):screen.blit(self.surface, (self.x, self.y))def check_click(self, position):x_match = position[0] > self.x and position[0] < self.x + self.WIDTHy_match = position[1] > self.y and position[1] < self.y + self.HEIGHTif x_match and y_match:return Trueelse:return Falsedef starting_screen():screen.blit(bg, (0, 0))game_title = font.render('英语大战', True, WHITE)screen.blit(game_title, (display_width // 2 - game_title.get_width() // 2, 150))play_button = Button('开始', RED, None, 350, centered_x=True)exit_button = Button('关闭', WHITE, None, 400, centered_x=True)while True:if play_button.check_click(pygame.mouse.get_pos()):play_button = Button('开始', RED, None, 350, centered_x=True)pygame.mixer.Sound.play(sheji)else:play_button = Button('开始', WHITE, None, 350, centered_x=True)if exit_button.check_click(pygame.mouse.get_pos()):exit_button = Button('关闭', RED, None, 400, centered_x=True)else:exit_button = Button('关闭', WHITE, None, 400, centered_x=True)# pygame.mixer.Sound.play(yx)for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()raise SystemExitif pygame.mouse.get_pressed()[0]:if play_button.check_click(pygame.mouse.get_pos()):bfunc()print('开始')pygame.mixer.Sound.play(yx)# breakif exit_button.check_click(pygame.mouse.get_pos()):print('结束')breakplay_button.display()exit_button.display()pygame.display.update()display_width = 400
display_height = 600WHITE = (255, 255, 255)
RED = (255, 0, 0)
bg_location = 'images\\bg2.jpg'pygame.init()
pygame.mixer.init()
yx = pygame.mixer.Sound('sounds\\boom.wav')
sheji = pygame.mixer.Sound('sounds\\biu.wav')
screen = pygame.display.set_mode((display_width, display_height))
bg = pygame.image.load(bg_location)
font = pygame.font.Font('fonts\\simhei.ttf', 30)def bfunc():print('按钮事件')starting_screen()

总结

通过此次的《pygame基础的学习》对pygame的相关知识有了进一步的了解,对游戏进一步开发也有了比以前更深刻的认识。

源码获取

关注博主后,私聊博主免费获取
需要技术指导,育娃新思考,企业软件合作等更多服务请联系博主

今天是以此模板持续更新此育儿专栏的第 8 /50次。
可以关注我,点赞我、评论我、收藏我啦。


http://chatgpt.dhexx.cn/article/yhHItGDU.shtml

相关文章

Python游戏开发工程师的起步,几款游戏开发案例

Pylash项目地址 创建项目 这样的话我们的项目就创建好了&#xff0c;然后只用往Main.py里填写代码运行即可。 编写Hello World小程序 编写游戏 有以上对pylash的小小了解&#xff0c;我们接下来可以开始编写游戏了。首先我们把第四行以后所有代码删除。 引入所需 全局变量 …

适合python游戏开发的库你知道几个?

python游戏开发的库 01 PyGame 官网&#xff1a; https://www.pygame.org/docs/ 概述&#xff1a; Pygame 是一组专为编写视频游戏而设计的 Python 模块。 它在优秀的 SDL 库之上添加了功能。这允许您使用 python 语言创建功能齐全的游戏和多媒体程序。Pygame具有高度的可…

Python游戏开发实战教程

Python游戏开发实战教程 学习 Python 中的高级游戏编程 此视频教程共27.0小时&#xff0c;中英双语字幕&#xff0c;画质清晰无水印&#xff0c;源码附件全 课程英文名&#xff1a;Learn 10 Games using Python - 2021 下载地址 百度网盘地址&#xff1a;https://pan.baidu.…

Python游戏开发,pgzrun模块,Python实现阿肯色克隆人游戏

前言 利用Python实现Python和PyGameZero编写阿卡尼类(Outout)的克隆&#xff0c;废话不多说。 让我们愉快地开始吧~ 开发工具 **Python版本&#xff1a;**3.6.4 相关模块&#xff1a; pgzrun模块&#xff1b; 以及一些Python自带的模块。 环境搭建 安装Python并添加到…

python游戏开发必有套路

游戏开发很简单&#xff0c;只需几个步骤 重点: 控制和显示窗口: pygame.display.方法 必有步骤1:创建游戏窗口 初始化游戏窗口 pygame.init() 设置游戏窗口 必用到pygame里的display模块&#xff0c;记住只要是控制和显示窗口和屏幕&#xff0c;都会调用display模块…

Python开发系列课程(12) - 图形用户界面和游戏开发

图形用户界面和游戏开发 基于tkinter模块的GUI GUI是图形用户界面的缩写&#xff0c;图形化的用户界面对使用过计算机的人来说应该都不陌生&#xff0c;在此也无需进行赘述。Python默认的GUI开发模块是tkinter&#xff08;在Python 3以前的版本中名为Tkinter&#xff09;&…

【python游戏开发】:那些由python开发的知名网站和游戏你知道多少

前言 众所周知&#xff0c;Python不仅在数据分析和人工智能方面有着广泛的应用&#xff0c;而且在网站开发和游戏开发方面也是独一无二的。今天&#xff0c;大美将带你去看看哪些知名的大公司和网站是用Python开发的&#xff0c;还有一些用Python开发的超级游戏。列出一些著名…

python游戏开发的五个案例分享

本文给大家分享了作者整理的五个python游戏开发的案例,通过具体设计思路,代码等方面详细了解python游戏开发的过程,非常的详细,希望大家能够喜欢 一、序列应用——猜单词游戏 1. 游戏介绍 猜单词游戏就是计筧机随机产生一个单词&#xff0c;打乱字母顺序&#xff0c;供玩家去…

pgzero:用 Python 进行游戏开发

1. pgzero python在各个领域都有着丰富的第三方库&#xff0c;pygame是python在游戏领域的应用库&#xff0c;可以用来开发各种不同的游戏。但是对于初学者来说&#xff0c;还是存在一定的门槛。 而今天要和大家分享的pgzero&#xff08;pygame zero&#xff09;是在pygame基础…

Python3爬虫、数据清洗与可视化实战之写一个简单的爬虫

文章目录 关于爬虫的合法性了解网页认识网页结构写一个简单的HTML 使用requests库请求网站安装requests库爬虫的基本原理使用GET方式抓取数据使用POST方式抓取数据 使用Beautiful Soup解析网页清洗和组织数据爬虫攻防战 关于爬虫的合法性 几乎每一个网站都有一个名为robots.tx…

Python3.X 爬虫实战(并发爬取)

【工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载&#xff0c;请尊重作者劳动成果。私信联系我】 1 背景 在这一系列开始前我们就说过&#xff0c;简单的爬虫很容易&#xff0c;但是要完成一个高效健壮的爬虫不是一个简单的事情&#xff0c;这一系列我们已经明白了爬…

Python爬虫(三)

Python爬虫&#xff08;三&#xff09; 一、ajax请求豆瓣电影第一页 # get请求 # 获取豆瓣电影的第一页数据并保存 import urllib.request url https://movie.douban.com/j/chart/top_list?type5&interval_id100%3A90&action&start0&limit20 headers {use…

Python3爬虫(一)抓取网页的html

因为代码只有几行&#xff0c;所以可以先贴代码&#xff1a; import urllib.request url rhttp://douban.com res urllib.request.urlopen(url) html res.read().decode(utf-8) print(html) 第一行&#xff0c;导入 urllib库的request模块 第二行&#xff0c;指定要抓取的网…

python3爬虫-Python3网络爬虫入门实战解析

网络爬虫简介 网络爬虫&#xff0c;也叫网络蜘蛛(Web?Spider)。它根据网页地址(URL)爬取网页内容&#xff0c;而网页地址(URL)就是我们在浏览器中输入的网站链接。 在浏览器的地址栏输入URL地址&#xff0c;在网页处右键单击&#xff0c;找到检查。(不同浏览器的叫法不同&am…

Python3爬虫概述

爬虫基础 文章目录 爬虫基础爬虫概述Session和Cookie简述1. Session2. Cookie3.关于Session 参考资料 爬虫概述 简单来说&#xff0c;爬虫就是从网页上提取信息并保存的自动化程序。 爬虫程序的工作: 获取网页: 爬虫需要先获取网页信息&#xff0c;即网页源代码进行后续分析。…

python爬虫之

使用BeaufulSoup获取指定class时&#xff0c;结果是将我们所输入的字符串去做模糊匹配&#xff0c;因此会将所有包含的class结果输出&#xff0c;如下图&#xff1a; 但我们所需要的可能是精确匹配的那一条&#xff0c;这个时候更换一下代码即可&#xff1a; web_url http://…

Python3 网络爬虫 <教程全集>

1.1 最简单的爬虫 我的老师&#xff1a;Jack Cui PS&#xff1a;我是通过 看 Jack Cui 老师的文章 学习的爬虫&#xff0c;也为我之后的 爬虫打开了大门。 1.1.1 URL 是什么&#xff1f; 在学习 爬虫之前&#xff0c;我们必须知道 我们 平常 所说的网址&#xff0c;实际上 叫…

爬虫python

一、Urllib 1.什么是互联网爬虫&#xff1f; 如果我们把互联网比作一张大的蜘蛛网&#xff0c;那一台计算机上的数据便是蜘蛛网上的一个猎物&#xff0c;而爬虫程序就是一只小蜘蛛&#xff0c;沿着蜘蛛网抓取自己想要的数据 解释1&#xff1a;通过一个程序&#xff0c;根据Ur…

手把手教你如何入门Python3 网络爬虫

很多朋友学习Python都是先从爬虫开始&#xff0c;其原因不外两方面&#xff1a; 其一Python对爬虫支持度较好&#xff0c;类库众多&#xff0c;其二语法简单&#xff0c;入门容易&#xff0c;所以两者形影相随&#xff0c;不离不弃。 要使用python语言做爬虫&#xff0c;首先需…

python3 爬虫

一.网络爬虫&#xff08;Web Crawler&#xff09; 1.网络爬虫&#xff1a;是一种按照一定的规则&#xff0c;自动地抓取网上信息的程序或者脚本。 2.爬虫&#xff1a;为了获取网上大量的我们能看的到或看不到的数据 3.基本步骤&#xff1a;&#xff08;1&#xff09;定位要爬的…