开篇祭出pygame官方文档:http://www.pygame.org/docs/ref/pygame.html
pygame的模块很多,例如:
pygame,顶级模块
pygame.locals,pygame的常量定义
pygame.display,pygame的显示表面(surface)
pygame.event,pygame的事件
以下内容主要关于pgame库的用于控制显示的display模块,用于图像控制的surface模块,用于控制人机交互的event模块。
1、导入模块
import pygame
#import time
2、搭建界面
def main():
‘’‘
============↓
1.创建一个窗口,用来显示内容,窗口大小480px宽,852px高。
如果32位置(对应depth,位深,用多少位来表示颜色)设置错误,会提示pygame.error: Invalid bits per pixel (range is {8...32})(也就是需要设置8-32范围)。
pygame.display.set_mode(resolution=(0,0),flags=0,depth=0)
返回一个surface对象,resolution可以控制生成窗口的大小,flags代表的是扩展选项,depath不推荐设置。
flags控制你想要什么样的显示屏,主要有下面几个,这几个量相当于是全局的常量,使用的时候可以from pygame.locals import *导入
FULLSCREEN,控制全屏,0或者1来控制
HWSURFACE 控制是否进行硬件加速
RESIZABLE 控制窗口是否可以调节大小
对应参数的flags,如
- screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)
’‘’
screen=pygame.display.set_mode((480,852),0,32)
pygame.display.set_caption('飞机大战')
‘’‘
===============↓
2.创建一个和窗口大小的图片,用来充当背景。进行图片格式转换,返回一个surface对象。
’‘’
background=pygame.image.load(''./feiji/background.png")
’‘’
================↓
3.把背景图放到窗口中显示,直接while会导致cpu使用率飙升,可以引入time模块sleep方法提高效率。
blit()为surface对象的方法,将一个surface画到调用方法的实例上,其参数有(sourse,dest,area = None,special_flag=0)。
‘’‘
while True:
#设定需要显示的背景图,(0,0)以左上角为原点,对应参数的dest,向下为y轴正方向,向右为x轴正方向。
screen.blit(background,(0,0))
#更新需要显示的内容。update()将内存中的数据显示到屏幕上。
pygame.display.update()
#time.sleep(0.01)
for event in pygame.event.get():
#写pygame.QUIT和pygame.display.quit()效果相同;type判断是quit还是键盘按键
if event.type==QUIT:exit()#pygame.quit() #函数结束return,循环结束break,程序结束exit()
elif event.type==KEYDOWN:
#key判断具体是按了哪个键
if event.key==K_a or event.key==K_LEFT:print('left')#K_RIGHT,R_SPACE...
待续。。。
好玩:通过F键切换全/窗口屏幕
#!/usr/bin/python #-*-coding:utf-8-*- import pygame from sys import exit from pygame.locals import * pygame.init() Pic = (449,300) #记录图片分辨率,为了填充好窗口 screen = pygame.display.set_mode(Pic,0,32) pygame.display.set_caption("Fullscreen Testing") #设置窗口的标题 background_image_filename = "/home/yg/Pictures/1.jpg" background = pygame.image.load(background_image_filename).convert() Fullscreen = False while True: for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == KEYDOWN: #当事件类型为键盘按下时候,event会有三个属性,unicode,key,mod,unicode会记录按了哪个键, #可以用print str(event)打印出来看上面的几个属性信息, print str(event) if event.unicode == u'f': #判断是否按了这个键,按了的话符合条件然后就设置全屏幕 Fullscreen = not Fullscreen #Fullscreen用的太机智了,下一次按就会符合另外一个条件,达到按F可以交替全/非全屏幕 if Fullscreen: screen = pygame.display.set_mode(Pic,FULLSCREEN,32) else: screen = pygame.display.set_mode(Pic,0,32) screen.blit(background,(0,0)) #把背景图片花到surface对象(屏幕那个框框)上。 pygame.display.update() #每次循环都更新一下