@概述
- pygame是基于Python语言的游戏开发框架;
- 其底层核心算法来自C语言库的支持;
- 官方文档地址:www.pygame.org/docs/
@安装pygame
pip install pygame
@几个重要概念
- Surface:表面,pygame框架中的一切绘制,都是在某个表面上进行的;
- Sprite:精灵,拥有独立属性和行为的动画“角色”,一切自定义的游戏角色都必须以Sprite为父类;
- 时钟与帧率:游戏界面动画的形成,本质上每秒几十次的重绘,帧率即每秒重绘的次数,时钟对象负责掐表和重绘;
@常用API简介
- init() #全局初始化
- quit() #退出
Surface类
- get_rect() #获得当前免表的矩形区域
- aSurface.blit(bSurface,position) #在A表面上绘制B表面
Rect类
- left / right #左右边界的x坐标
- top / bottom #上下边界的x坐标
- midtop #上边界正中央的坐标
- width / height #宽高
- collidepoint(event.pos) #检测事件是否发生在当前矩形区域内
mixer
- init() #混音器初始化
- pause() / unpause() #暂停和恢复声音
- stop() #停止播放声音
mixer.music
- load("sound/game_music.ogg") #加载背景音乐
- set_volume(0.2) #设置音乐音量
- play(-1) #无限循环播放
- pause() / unpause() #暂停和恢复音乐
- stop() #停止音乐播放
mixer.Sound
- Sound("sound/bullet.wav") #创建音效对象
- set_volume(0.2) #设置音效音量
- play() #播放音效
display
- set_mode(bg_size) #设置分辨率
- set_caption("飞机大战") #设置标题
- flip() #刷新界面
image
- load("images/background.png").convert() #加载图片为表面对象
- load("images/me1.png").convert_alpha() ##加载带透区域的图片为表面对象
time.Clock
- Clock() #创建时钟对象
- tick(60) #停留1/60秒
sprite.Group类
- Group() #创建精灵容器
- add(self, *sprites) #向容器中添加精灵
sprite.Sprite类
- hitList = pygame.sprite.spritecollide(hero, enemyGroup, False, pygame.sprite.collide_mask)#检测hero是否与enemyGroup中的任意对象发生碰撞,返回enemyGroup中的碰撞对象列表, # False代表这些对象不会从enemyGroup中移除 # 最后一个参数为碰撞检测函数,此处使用系统提供的碰撞检测函数,其算法为检测非透明区域是否发生重叠 其作用必须配合精灵的非透明区域声明,如:msprite.mask = pygame.mask.from_surface(msurface)
font.Font类
- Font("font/font.ttf", 30) #创建字体对象
- render(self, text, antialias, color, background=None) #将text绘制在bg上
event类
- get() #获得当前帧的所有事件
- get_pressed() #获得当前帧按下的所有按键
- type #事件类型
- key #按下的按键
- pos #事件发生的位置
key
- get_pressed() ##获得当前帧按下的所有按键
draw
- line(Surface, color, start_pos, end_pos, width=1) #在表面上绘制一条线段
mask
- from_surface(surface) #从表面中加载碰撞遮罩
常量
-----事件类型-----
- QUIT #退出事件
- MOUSEBUTTONDOWN #鼠标按下事件
- MOUSEBUTTONUP #鼠标松开事件
- MOUSEMOTION #鼠标移动事件
- KEYDOWN #键盘按下事件
- K_SPACE #空格键
-----方向键-----
- K_UP
- K_DOWN
- K_LEFT
- K_RIGHT
-----字符键-----
- K_w
- K_s
- K_a
- K_d