一、HelloWorld
1 pygame.init() #初始函数,使用pygame的第一步; 2 pygame.display.set_mod((600,500),0,32) #生成主屏幕screen;第一个参数是屏幕大小,第二个0表示不使用特性,可用FULLSCREEN,RESIZEBLE,NOFRAME,DOUBLEBUF(双缓冲,使用时需用pygame.display.flip()来刷新屏幕)等替换,32表示色深; 3 pygame.display.set_caption("string") #命名 4 pygame.display.update() #刷新 5 pygame.display.list_modes() #查看本地显示器支持的分辨率; 6 screen.fill(0,0,0) #填充
二、绘图
pygame.draw.rect(surface,color,Rect,width=0) 画一个矩形,Rect为两个坐标元组的元组;
(一)rect(矩形)参数属性
1 r.left 左边x坐标的整数值 2 r.right 右边x坐标的整数值 3 r.top 顶部y坐标的整数值 4 r.bottom 底部y坐标的整数值 5 r.centerx 中央x坐标整数值 6 r.centery 中央y坐标整数值 7 r.width 宽度 8 r.height 高度 9 r.size 即元组(width,height) 10 r.topleft (left,top) 11 r.topright (right,top) 12 r.bottomleft (left,bottom) 13 r.bottomright (right,bottom) 14 r.midleft (left,centery) 15 r.midright (right,centery) 16 r.midtop (centerx,top) 17 r.midbottom (centerx,bottom)
(二)其他形状
1 pygame.draw.polygon(surface,color,pointlist,width=0) 多边形 2 pygame.draw.circle(surface,color,pos,radius,width=0) 圆 3 pygame.draw.ellipse(surface,color,Rect,width=0) 椭圆 4 pygame.draw.arc(surface,color,Rect,start_angle,stop_angle,width=1) 圆弧 5 pygame.draw.line(surface,color,start_pos,end_pos,width=1) 直线; 6 pygame.draw.lines(surface,color,closed,pointlist,width=1) closed为一bool值,表示是否封闭; 7 pygame.draw.aaline(surface,color,start_pos,end_pos,width=1) 一根平滑的线; 8 pygame.draw.aalines(surface,color,closed,pointlist,width=1) 一系列平滑的线;
(三)font(以图形模式输出文本)
1.pygame.font.Font("字体","字号",*)
2.my_font.render(text,True,(255,255,255)) 使用已有的文本创建一个位图image,返回值为一个image;对于位图可用get_height(),get_width()的方法获得高与宽;True表示是否抗锯齿,第三个为字体颜色,还可以有第四个为背景色,没有时就为默认的透明;
3.Font() 使用的是字体文件,要使用系统中的字体需用SysFont(),但一些中文扩展的字体不是很好用。
4.screen.blit(image,(100,100)) 将位图绘制到屏幕上,screen为建立的主屏;
5.pygame.font.get_fonts() 查看当前系统所有可使用的字体
三、图片处理
pygame支持的图片格式有:JPEG,PNG,GIF,BMP,PCX,TGA,TIF,LBM,PBM,XPM
1 pygame.image.load("图片路径").conver() 将图片处理为surface对象,如果使用conver_alpha()则保留了Alpha通道信息(可透明),使用时用blit()函数来添加到显示屏 2 pygame.Surface((250,250),flags,depth) 创建一个surface对象,如果不指定尺寸则会创建和屏幕一样大小;flags为可选,有SRCALPHA(保留Alpha通道)、HWSURFACE(优化)两个选择,depth为色深; 3 screen.subsurface((0,0),(80,80)) 子表面对象; 4 screen.set_at(pos,color) 设置一个像素的色彩; 5 screen.get_at(pos) 获取某一像素的色彩,不过此操作的反应比较慢; 6 pygame.transform.scale(surface,(width//2,height//2) 缩放图片 7 pygame.transform.smoothscale(surface,(width,height) 缩放图片,比scale慢,但效果更好;
8 pygame.sprite.Group() 精灵组,一个简单的实体容器; 9 pygame.sprite.add(sprite) 添加精灵对象; 10 pygame.sprite.update(ticks) 11 pygame.sprite.draw(screen) 12 pygame.sprite.collide_rect(arrow,dragon) 冲突
13 screen.set_clip(0,400,200,600) 设定裁剪区域; 14 screen.get_clip() 获得裁剪区域
四、事件event
1 pygame.event.get() 获取事件的返回值,使用event.type == 进行区分 2 pygame.event.wait() 等待发生一个事件才会继续下去; 3 pygame.event.poll() 会根据现在的情形返回一个真实的事件 4 pygame.event.set_blocked(事件名) 过滤 5 pygame.event.set_allowed() 允许事件
自定义事件
1 my_event = pygame.event.Event(KEYDOWN,key=K_SPACE,mod=0,unicode=u' ') 2 pygame.event.post(my_event)
pygame所有事件type
1 QUIT 退出; 2 ACTIVEEVENT pygame被激活或隐藏; 3 KEYDOWN 区分不同键 event.key == pygame.K_a,pygame使用keys=pygame.key.get_pressed()来轮询键盘接口,返回的是所有按下键值的元组;用keys[K_b]方式来核对键值;K_b也可以是键值Unicode码;如果mod & KMOD_CTRL为真的话表示同时按下Ctrl键;key.get_mods()组合键,key.set_repeat()重复事件;key.name()接受键值返回键名; 4 KEYUP 按键放开 5 MOUSEMOTION 含event.pos,event.rel,event.buttons属性,用mouse_x,mouse_y = event.pos进行确认,pygame.mouse.get_pos()返回鼠标的当前位置,pygame.mouse.get_rel()获取鼠标相对移动,pygame.mouse.get_pressed()返回按钮状态数组(鼠标三个键的状态) 6 mouse.set_visible(False) 使鼠标不可见; 7 event.set_grab(True) 使鼠标不会跑出窗口 8 mouse.set_pos() 设置鼠标位置 9 mouse.get_focused() 如果鼠标在pygame窗口内有效,返回True 10 mouse.set_cursor() 设置鼠标默认光标式样; 11 mouse.get_cursor() 获取鼠标默认光标式样;
12 MOUSEBUTTONUP 鼠标放开 13 MOUSEBUTTONDOWN 鼠标按下 14 JOYAXISMOTION x手柄移动 15 JOYBALLMOTION 所有手机移动 16 JOYHATMOTION hat手柄移动 17 JOYBUTTONUP 手柄按键放开 18 JOYBUTTONDOWN 手柄按键按下 19 VIDEORESIZE 窗口缩放; 20 VIDEOEXPOSE 窗口部分公开; 21 USEREVENT 触发了一个用户事件;
五、异常捕捉
1 try: 2 screen = pygame.display.set_mode(SCREEN_SIZE) 3 except pygame.error,e: 4 print("Can't create the display :-(") 5 print(e) 6 exit()
六、时间
1 clock = pygame.time.Clock() 初始化一个clock对象 2 clock.tick() 返回一个上次调用的时间,以毫秒为单位 3 clock.tick(30) 控制游戏绘制的最大帧率为30
七、声音
(一)sound对象
pygame.mixer.Sound("文件") 读取声音对象sound,格式只有wav和ogg两种;
对象方法:
1 fadeout() 淡出时间,可用参数为毫秒; 2 get_lengh() 获得声音文件长度,以秒为单位; 3 get_num_channels() 声音要播放的次数; 4 play(loop,maxtime) 对读取的声音对象可执行播放操作,loop为-1表示无限循环,1表示重复两次,maxtime表示多少毫秒后结束;返回一个Channel对象,失败则返回None; 5 set_volum() 设置音量; 6 stop() 停止播放; 7 pygame.mixer.music 背景音乐处理方法 8 pygame.mixer.music.load() 加载文件可为mp3和ogg格式; 9 pygame.mixer.music.play() 播放 10 pygame.mixer.music.stop() 停止,还有pause()和unpause()方法
(二)Channels对象
pygame.mixer.get_num_channels() 获取当前系统可同时播放的声道数;pygame中默认为8;
对象方法:
1 fadeout() 设置淡出时间 2 get_busy() 如果正在播放,返回True; 3 set_endevent() 设置播放完毕时要做的event; 4 get_endevent() 获取播放完毕时要做的event,如果没有则返回None; 5 get_queue() 获得队列中的声音,如果没有则返回None; 6 set_volume() 设置音量; 7 get_volume() 获得音量; 8 pause() 暂停播放; 9 unpause() 继续播放; 10 play() 播放; 11 stop() 停止播放; 12 queue() 将一个Sound对象加入队列,在当前声音播放完毕后播放; 13 set_num_channels() 自定义声道数;
(三)music对象
pygame.mixer.pre_init(frequency,size,stereo,buffer) 声音系统初始化,第一个为采样率,第二个为量化精度,第三为立体声效果,第四为缓冲;
对象方法:
1 fadeout() 设置淡出时间 2 set_endevent() 设置播放完毕后事件 3 get_endevent() 获取播放完毕后进行的事件; 4 set_volume() 设置音量; 5 get_volume() 获取音量; 6 load() 加载音乐文件; 7 rewind() 从头开始播放; 8 get_pos() 获得当前播放的位置,以毫秒为单位;