pygame:
ygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发。允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块可以支持多个操作系统。用它来开发小游戏非常适合。并且只能开发2D游戏
安装:
python -m pip install pygame
不知道为何去掉pip -m后会超时异常
检验安装成功的方法:
IDE中:
import pygame
print(pygame.ver)
使用pygame
import pygame
from pygame.locals import * #导入常用的常量
pygame.init()#初始化
初始化后就可以方便的使用pygame了!
简单的例子:
弹窗 蓝色背景 白色字:
import pygame
from pygame.locals import * #引入pygame中的所有常量
pygame.init() #初始化
screen = pygame.display.set_mode((600,500)) #创建窗口 大小为600*500
#打印字体
font = pygame.font.Font(None,60) #创建字体对象,None表示默认字体
white = (255,255,255)#字体颜色
blue = (0,0,200)#背景颜色
#在内存中创建文本图像,然后将文本当作一个图像来渲染。
textImage = font.render("Hello pygame",True,white)
#事件循环
while True:
#退出事件
for event in pygame.event.get():
if event.type in (QUIT,KEYDOWN):
exit()
#显示
screen.fill(blue)
screen.blit(textImage,(100,100))
pygame.display.update()
Pygame的最重要部分是surface。就把surface想当成一张白纸吧。你要用对一个surface做许多的事——你可以在它上面画线,给它的部分填充颜色,把图像拷进去或者拷出来,设置或者读取它上面的某个单独的像素的颜色值。一个surface可以是任何大小(可以理解)并且你要多少就有多少(也可以理解)。有一个surface是特别的——你用pygame.display.set_mode()创建的那一个。这个display surface代表了屏幕;你对它做的任何事情都会呈现在用户屏幕上。你只能有一个这玩意——这是SDL的一个限制,而不是pygame的。pygame.display.set_mode():创建了一个窗口,set_mode会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,如果不用什么特性,就指定0;第三个为色深。当我们把第二个参数设置为FULLSCREEN时,就能得到一个全屏窗口了
pygame.font.Font():create a new font object from a file
font.render():draw text on a new surface;render方法的第一个参数是写入的文字内容;第二个是布尔值,说明是否开启抗锯齿;第三个是字体本身的颜色;第四个是背景的颜色。如果不想有背景色,也就是让背景透明的话,可以不加第四个参数。
screen.blit(textImage,(100,100)):绘制位图 ,第一个参数为加载完成的位图,第二个参数为起始坐标
pygame.display.update()就是把surface对象不断地显示到屏幕 更新窗口
另一个例子:图片加载与简单事件:
background_image_filename ='sushiplate.jpg'#背景图
mouse_image_filename='fugu.png'#光标图
import pygame
from pygame.locals import * #导入常用的函数和常量
from sys import exit#借用sys模块的exit函数用于退出
pygame.init()
screen = pygame.display.set_mode((640,480),0,32)
pygame.display.set_caption("Hello World!")#窗口标题
background = pygame.image.load(background_image_filename).convert()
mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha()
while True:
for event in pygame.event.get():
if event.type==QUIT:
exit()
screen.blit(background,(0,0))#画背景图
x,y = pygame.mouse.get_pos()#得到光标位置
x-=mouse_cursor.get_width()/2#除以2是为了使图片中心与光标位置对齐,否则默认以光标位置为原点
y-=mouse_cursor.get_height()/2
screen.blit(mouse_cursor,(x,y))#将光标移动到新的位置
pygame.display.update()
image.load()加载图片