pip install pygame
验证是否安装成功。
在IDLE里输入以下命令,如果输出pygame的版本信息,则说明安装成功
import pygame
pygame.ver
模块名 | 功能 |
---|---|
pygame.cdrom | 访问光驱 |
pygame.cursors | 加载光驱 |
pygame.display | 访问显示设备 |
pygame.draw | 绘制形状、线和点 |
pygame.event | 管理事件 |
pygame.font | 使用字体 |
pygame.image | 加载和存储图片 |
pygame.joystick | 使用游戏手柄或者类似的东西 |
pygame.key | 读取键盘按键 |
pygame. mixer | 声音 |
pygame.mouse | 鼠标 |
pygame.movie | 播放视频 |
pygame.overlay | 访问高级视频叠加 |
pygame.rect | 管理矩形区域 |
pygame.sndarray | 操作声音数据 |
pygame.sprite | 操作移动图像 |
pygame.surface | 管理图像和屏幕 |
pygame.surfarray | 管理点阵图像数据 |
pygame.time | 管理时间和帧信息 |
pygame.transform | 缩放和移动图片 |
利用display和event模块创建一个Pygame窗口,代码如下
# -*- coding: utf-8 -*-
import sys
import pygame
pygame.init() # 初始化Pygame
size = width, height = 320, 240 # 设置窗口
screen = pygame.display.set_mode(size) # 显示窗口
# 执行死循环,确保窗口一直显示
while True:
# 检查事件
for event in pygame.event.get(): # 遍历所有事件
if event.type == pygame.QUIT: # 如果单击关闭窗口,则退出
sys.exit()
pygame.quit() # 退出Pygame
下面对代码进行一些解释,
pygame.event.get()能获取时间的队列,然后利用一个死循环,再根据type属性判断事件的类型,如event.type == pygame.QUIT表示,检测到关闭Pygame窗口的事件,pygame.KEYDOWN表示键盘按下事件等等
display模块的常用方法
方法名 | 功能 |
---|---|
pygame.display.init | 初始化display模块 |
pygame.display.quit | 退出diaplay模块 |
pygame.display.set_mode | 初始化一个准备显示的界面 |
pygame.display.set_init | 如果display模块以及初始化,则返回True |
pygame.display.get_syrface | 获取当前的Surface模块 |
pygame.display.flip | 更新整个待显示的Surface对象到屏幕上 |
pygame.display.update | 更新部分内容显示到屏幕上,如果没有参数,则与flip方法的功能相同 |
我们先准一张ball.jpg图片,然后加载该图片,代码如下
# -*- coding: utf-8 -*-
import sys, pygame
pygame.init() # 初始化 Pygame
size = width, height = 640, 480 # 设置窗口
screen = pygame.display.set_mode(size) # 显示窗口
color = (255, 255, 255) # 设置颜色
ball = pygame.image.load("ball.png") # 加载图片
ballrect = ball.get_rect() # 获取矩形框
# 执行死循环
while True:
# 检查事件
for event in pygame.event.get():
if event.type == pygame.QUIT: # 如果单击关闭窗口,则退出
sys.exit()
screen.fill(color) # 填充颜色
screen.blit(ball, ballrect) # 将图片画到窗口上面去
pygame.display.flip() # 更新全部显示
pygame.quit() # 退出Pygame
Surface 对象的常用方法名 | 功能 |
---|---|
pygame.Surface.blit | 将一幅画像画到另一幅图像像 |
pygame.Surface.convert | 转换图像的像素格式 |
pygame.Surface.convert_alpha | 转换图像的像素格式,包含Alpha通道的转换 |
pygame.Surface.fill | 使用颜色填充Surface |
pygame.Surface.get_rect | 获取Surface的矩形区域 |
通过ball.get_rect()方法的返回值bllrectt的一个move()方法让矩形移动。
move(x,y) x表示X轴移动的距离,y表示Y轴移动的距离。窗口左上角坐标为(0,0)
加个while循环,让小球不断的移动起来
# -*- coding=utf8 -*-
import sys
import pygame
pygame.init() # 初始化Pygame
size = width, height = 1000, 650 # 设置窗口
screen = pygame.display.set_mode(size) # 显示窗口
color = (255, 255, 255) # 设置颜色
ball = pygame.image.load("ball.jpg") # 加载图片
ballrect = ball.get_rect() # 获取矩形区域
speed = [5,5] # 设置移动的X轴、Y轴的距离
# 执行死循环,确保窗口一直显示
while True:
# 检查事件
for event in pygame.event.get():
if event.type == pygame.QUIT: # 如果单击关闭窗口,则退出
sys.exit()
ballrect = ballrect.move(speed) # 移动小球
screen.fill(color) # 填充小球
screen.blit(ball, ballrect) # 将图片画到窗口上
pygame.display.flip() # 更新全部显示
pygame.quit() # 退出Pygame
在1.32中我们发现小球在窗口中一闪而过,这时我们就需要添加碰撞检测功能了
# -*- coding=utf8 -*-
import sys
import pygame
pygame.init() # 初始化Pygame
size = width, height = 1000, 650 # 设置窗口
screen = pygame.display.set_mode(size) # 显示窗口
color = (255, 255, 255) # 设置颜色
ball = pygame.image.load("ball.jpg") # 加载图片
ballrect = ball.get_rect() # 获取矩形区域
speed = [2, 2] # 设置移动的X轴、Y轴的距离
# 执行死循环,确保窗口一直显示
while True:
# 检查事件
for event in pygame.event.get():
if event.type == pygame.QUIT: # 如果单击关闭窗口,则退出
sys.exit()
ballrect = ballrect.move(speed) # 移动小球
# 碰到左右边缘
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
# 碰到上下边缘
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
screen.fill(color) # 填充小球
screen.blit(ball, ballrect) # 将图片画到窗口上
pygame.display.flip() # 更新全部显示
pygame.quit() # 退出Pygame
# -*- coding=utf8 -*-
import sys
import pygame
pygame.init() # 初始化Pygame
size = width, height = 1000, 650 # 设置窗口
screen = pygame.display.set_mode(size) # 显示窗口
color = (255, 255, 255) # 设置颜色
ball = pygame.image.load("ball.jpg") # 加载图片
ballrect = ball.get_rect() # 获取矩形区域
speed = [5, 5] # 设置移动的X轴、Y轴的距离
clock = pygame.time.Clock() # 设置时钟
# 执行死循环,确保窗口一直显示
while True:
# 检查事件
clock.tick(60) # 每秒执行60次
for event in pygame.event.get():
if event.type == pygame.QUIT: # 如果单击关闭窗口,则退出
sys.exit()
ballrect = ballrect.move(speed) # 移动小球
# 碰到左右边缘
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
# 碰到上下边缘
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
screen.fill(color) # 填充小球
screen.blit(ball, ballrect) # 将图片画到窗口上
pygame.display.flip() # 更新全部显示
pygame.quit() # 退出Pygame