Python学习笔记-Pygame

目录

一、Pygame概述

1.安装Pyganme

2.Pygame常用模块介绍

2.1 display模块常用方法

2.2 pygame.event模块常用方法

2.3 Surface对象的常用方法

二、问题汇总

1.窗体问题

1.1 添加死循环之后出现窗体未响应。


记述关于Pyganme开发的基本知识。

一、Pygame概述

Pygame是跨平台的python模块,转为电子游戏设计(包含图像、声音),创建在SDL(Simple DirectMedia Layer)基础,抛开低级语言(如汇编)的舒服。所有游戏功能和理念都简化为游戏逻辑本身,所有资源结构都可以由高级语言提供。

1.安装Pyganme

Pygame官网:http://www.pygame.org,可以在官网中查找相关文档。

安装:

pip install pygame

Python学习笔记-Pygame_第1张图片

 安装检查:

# _*_ coding:utf-8 _*_

import pygame
pygame.ver         # 查看pygame版本

结果,显示版本表示安装成功:

pygame 2.1.2 (SDL 2.0.18, Python 3.7.8)
Hello from the pygame community. https://www.pygame.org/contribute.html
>>> 

2.Pygame常用模块介绍

Pygame 常用模块
模块 说明
pygame.cdrom 访问光驱
pygame.cursors 加载光标
pygame.display 访问显示设备
pygame.draw 绘制形状、线和点
pygame.event 管理事件
pygame.font 使用字体
pygame.image 加载和存储图片

pygame.joystick

使用有系手柄或类似的东西
pygame.key 读取键盘按键
pygame.mixer 声音
pygame.mouse 鼠标
pygame.music 播放音频
pygame.overlay 访问高级视频叠加
pygame.reet 管理矩形区域
pygame.sndarray 操作声音数据
pygame.sprite 操作移动图像
pygame.surface 管理图像和屏幕
pygame.surfarray 管理点阵图像数据
pygame.time 管理时间和帧信息
pygame.transform 缩放和移动图像

2.1 display模块常用方法

display模块常用方法
方法 说明 说明
pygame.display.init() 初始化display模块
pygame.display.quit() 结束display模块
pygame.display.get_init() 返回是否初始化,初始化返回True
pygame.display.set_mode() 初始化界面 set_mode(width,height) 指定宽高的界面
pygame.display.get_surface() 获取当前的Surface对象
pygame.display.flip() 更新整个待显示的surface对象到屏幕上
pygame.display.update() 更新部分内容显示到屏幕上,如果没有参数,就是更新整个surface对象

2.2 pygame.event模块常用方法

event模块常用方法
方法 说明 备注
pygame.event.get() 获取事件队列

QUIT:检测到关闭窗口事件

KEYDOWN:键盘按下事件

MOUSEBUTTONDOWN:鼠标按下事件

2.3 Surface对象的常用方法

Surface对象常用方法
方法 说明 备注
pygame.Surface.blit() 将图像画到另一个图像上
pygame.Surface.convert() 转换图像的像素格式
pygame.Surface.convert_alpha() 转换图像的像素格式,包含alpha通道
pygame.Surface.fill() 颜色填充Surface
pygame.Surface.get_rect() 获取Surface的矩形区域,返回的是Rect对象

二、问题汇总

1.窗体问题

1.1 添加死循环之后出现窗体未响应。

问题:为了保持窗体显示,会在代码段添加死循环用来保持代码显示,但是添加死循环后窗体卡死。

while True:
    clock.tick(60)
    pygame.display.flip()

结果:即使有添加了时钟也还是会卡死

Python学习笔记-Pygame_第2张图片

 网上搜了没有具体解决方案,后面通过添加事件扫描之后就不会卡死了,具体的原因还不清楚。

这点跟C#之类的不同,需要添加事件才能避免报错。

while True:
    clock.tick(60)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

    pygame.display.flip()

你可能感兴趣的:(Python,python,学习)