pygame模块
这个是python的一个模块,属于第三方的 所以需要导入
1.步骤: 首先win+r 回车 在命令窗口输入pip install pygame 等待下载就行了
2.这个模块是写像 坦克大战 植物大战僵尸的这类游戏的
3.学习这个主要知道他里面有什么方法 和 精灵
1.初始化模块
pygame.init() #导入并初始化所有的pygame模块 必须调用init方法
pygame.quit() #卸载所有Pygame模块 ,在游戏前调用
2.坐标系
原点在左上角的
x轴水平方向向右,逐渐增加
y轴水平方向向下,逐渐增加
3.pygame的矩形类
在游戏中,所有有可见的元素 都是以 矩形区域来描述位置的 比如游戏英雄
要描述一个位置有四个元素:(x,y)(width,height)
方法:_rect=pygane.Rect(x,y,width,height)
4.创捷一个不会消失的窗口
#screen=pygame.display.srt_mode((500,600))
#创建窗口
#有三个参数
#第一个:是一个元组 ,确定窗口的大小 默认与窗口大小一直
#第二个:参数指定的屏幕的附加选项,列如是否全屏等等
#第三个:参数表示颜色的位数,默认自动匹配
import sys, pygame
pygame.init() #初始化
screen=pygame.display.srt_mode((500,600))
pygame.display.update() #刷新屏幕内容显示
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit() #卸载
exit() #终止程序的执行
5.理解 图像 并绘制
*在游戏中, 看到的元素大多数都是图象
a:使用pygane.amage.load() 加载图像数据
b:使用屏幕对象,调用blit方法 将图像绘制到指定位置
c:再使用pygame.display.update()刷新
bg=pygame.image.load("路径")
pygame.Surface.blit(bg,(0.0))
pygame.display.update()
6.透明图像
png格式的图像是支持透明的
在绘制时透明区域不会显示任何内容
但如果下方已经有内容,会通过透明区域显示出来
7.update()的用法
可以在screen对象完成所有的blit方法之后,统一调用一次 display.updata方法
同样可以看到绘制结果
8.游戏循环
设置刷新帧率
检测用户的交互
更新所有的图片位置
更新显示
9.游戏时钟
pygame专门提供了一个时钟类pygame.time.Clock可以方便的设置屏幕的绘制速度——刷新帧率
使用时钟对象
a:在游戏初始化创建一个时钟对象
b:在游戏循环中调用tick(帧率)方法
tict方法会根据上次调用的时间 自动设置游戏循环中的延迟
pygame.init()
#创建时钟对象
clock =pygame.time.Clock()
while True:
clock.tick(6)
10.角色的绘制
1.在游戏初始化定义一个pygame.Rect 的变量记录英雄的初始位置
2.在游戏循环中变换坐标位置让英雄移动
3.y<=0将英雄移动到底部
提示:每调用update()方法之前,需要把 所有游戏的图像重新绘制一遍
而且每次最先重新绘制背景图像
#定义rect记录位置
#修改英雄的位置
#调用blit方法绘制图像
#调用update更新显示
hero_rect=pygame.Rect(英雄的坐标值(x,y) 高度,宽度)
while True:
hero_rect.y-=50
screen.blit(hero,hero_rect)
#解决残影
#重新绘制背景
screen.blit(bg,(0,0))
pygame.display.update()
11. 在循环中 监听 事件
监听:在循环中,判断用户的操作 做出相应
代码实现:
pygame中通过pygame.event.get()可以获取用户动作所对应的 事件列表 ***用户同一时间可以做很多事
提示:这段代码非常固定 几乎所有Pygame游戏 大同小异 返回的是一个列表
官网:http://www.pygame.org/docs/ 里面有事件的列表
12.事件的用法 上代码
while True:
for event in pygame.event.get(): #遍历pygame.event.get():
if event == "对应的事件":
"执行的操作"
13.精灵 精灵组
1.为了简化开发步骤,pygame提供了两个类
pygame.sprite.Sprite ---储存 图像数据 image 和 位置 rect 的对象
pygame.sprite.Group
14.游戏精灵的开法
import pygame
class GameSprite(pygame.sprite.Sprite): #让 GameSprite 继承精灵类
def __init__(self,image_name,speed=1):
#调用父类的初始化方法
super().__init__()
#定义对象的属性
self.image=pygame.image.load(image_name)
self.rect=self.image.get_rect()
self.speed=speed
def update(self, *args):
#在屏幕的垂直方向移动
self.rect.y+=self.speed
15. 创建精灵对象和精灵组对象
#创建玉米精灵
import pygame
from plane_sprites import * #完全继承精灵
#创建玉米的精灵
yumi=CameSprite("玉米图片路径")
yumi1=CameSprite("",2) #第二个玉米精灵
#创建玉米的精灵组
yumi_group=pygame.sprite.Group(yumi)
while True:
#调用精灵方法 update draw
yumi_group.update()
yumi_group.draw(screen) #在screen绘制所有的精灵
17.游戏音乐
1.背景音乐
py)game.mixer.init() #初始化背景音乐
pygame.mixer.music.load("素材/bg.mp3") #添加路径
pygame.mixer.music.set_volume(0.4) #音乐的音量
pygame.mixer.music.play() #播放载入的音乐。该函数立即返回,音乐播放在后台进行。
play方法还可以使用两个参数
pygame.mixer.music.play(loops=0, start=0.0)
loops和start分别代表重复的次数和开始播放的位置。 #