11.1.安装pygame库
pip install pygame
11.2.加载模块初始化
import sys
import pygame
pygame.init() #初始化pygame
11.3.创建窗口
- 作用:创建游戏窗口
- 常见的内置方法:
方法 | 作用 |
pygame.dispaly. init() | 初始化display |
pygame.dispaly. quit() |
结束display模块 |
pygame.dispaly. get_init() | 判断是否初始化 |
pygame.dispaly. get.surface() | 获取当前surface对象 |
pygame.dispaly. flip() | 更新显示 |
pygame.dispaly. update() | 更新部分内容显示到屏幕 |
pygame.dispaly. set_mode() | 初始化一个准备显示的界面 |
import sys
import pygame
pygame.init() #初始化pygame
size=width,height=640*800
screen=pygame.display.set_mode(size) #显示窗口
上述程序运行,会出现一个一闪而过的黑色窗口,原因是执行会立即关闭,若要一直显示,应使用循环显示的手段来实现
import sys
import pygame
pygame.init() #初始化pygame
size=width,height=640,800
screen=pygame.display.set_mode(size) #显示窗口
#执行一个死循环,确保窗口一直存在,知道手动关闭(点击x)
while True:
#检查事件显示窗口也是一个事件,点击关闭也是一个事件
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
上述代码中,添加了轮询事件,pygame.even.get()可以获取事件队列,使用for....in遍历事件,再根据type属性判断事件类型是否属于关闭事件
11.4.添加小球
11.4.1.image模块
- 作用:pygame图像传输模块
- 常用方法:
方法 | 作用 |
pygame.image.load() | 从文件加载图片 |
pygame.image. save() | 将图片保存到磁盘 |
pygame.image. get_extended() | 检查是否支持载入扩展的图像格式 |
pygame.image. tostring() | 将图像转为字符串 |
pygame.image. fromstring() | 将字符串转为图像 |
- 支持的图片格式:jpg,png,gif,bmp,pcx等
- 注意:当一个图像成功载入会转为surface对象,该对象允许二次
11.5.处理surface对象
11.5.1.image.load()方法加载图片后返回一个surface对象,其就是表示图片,可以二次处理如:涂画、变形、赋值等操作
11.5.2.常用方法:
方法 | 作用 |
pygame.Surface. blit() | 将图像绘制到另一个图像上 |
pygame.Surface. convert() | 转为像素格式 |
pygame.Surface. fill() | 使用颜色填充区域 |
pygame.Surface. get_rect() | 获取surface对象的矩形区域 |
import sys
import pygame
pygame.init() #初始化pygame
size=width,height=640,800
screen=pygame.display.set_mode(size) #显示窗口
color=(0,0,0) #设置颜色
ball=pygame.image.load('ball.png') #加载小球图片,但不现实
ballrect=ball.get_rect() #获取矩形区域,其实就会小球图片所占区域,只不过没有内容
#执行一个死循环,确保窗口一直存在,知道手动关闭(点击x)
while True:
#检查事件显示窗口也是一个事件,点击关闭也是一个事件
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
screen.fill(color)
screen.blit(ball,ballrect) #将ball图片填到屏幕矩形区域上
pygame.display.flip()
11.6.移动小球
11.6.1.小球ball移动使用move()方法,move(x,y)表示x轴和y轴的移动距离,左上角(0,0),可设置move(5,5)
import sys
import pygame
pygame.init() #初始化pygame
size=width,height=640,800
screen=pygame.display.set_mode(size) #显示窗口
color=(0,0,0) #设置颜色
ball=pygame.image.load('ball.png') #加载小球图片,但不现实
ballrect=ball.get_rect() #获取矩形区域,其实就会小球图片所占区域,只不过没有内容
#执行一个死循环,确保窗口一直存在,知道手动关闭(点击x)
while True:
#检查事件显示窗口也是一个事件,点击关闭也是一个事件
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
ballrect=ballrect.move(5,5)
screen.fill(color)
screen.blit(ball,ballrect) #将ball图片填到屏幕矩形区域上
pygame.display.flip() #刷新显示
11.6.2.上例程序发现小球移动太快,一闪而过,原因试运行时间太短了,导致肉眼观察出现错觉,因此需要设计一个时钟来控制程序运行事件
11.6.3.pygame.time模块
import sys
import pygame
pygame.init() #初始化pygame
size=width,height=640,800
screen=pygame.display.set_mode(size) #显示窗口
color=(0,0,0) #设置颜色
ball=pygame.image.load('ball.gif') #加载小球图片,但不现实
ballrect=ball.get_rect() #获取矩形区域,其实就会小球图片所占区域,只不过没有内容
clock=pygame.time.Clock() #创建时钟
#执行一个死循环,确保窗口一直存在,知道手动关闭(点击x)
while True:
clock.tick(60) #更新时钟,每秒60次
#检查事件显示窗口也是一个事件,点击关闭也是一个事件
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
ballrect=ballrect.move(5,5)
screen.fill(color)
screen.blit(ball,ballrect) #将ball图片填到屏幕矩形区域上
pygame.display.flip() #刷新显示
- 作用:监控时间模块
- 常用方法:
方法 | 作用 |
pygame.time. get_ticks() | 获取以毫秒为单位的时间 |
pygame.time. wait() | 暂停执行一段时间 |
pygame.time. set_timer() | 在事件队列上重复创建一个事件 |
pygame.time. Clock() | 创建一个对象来帮助跟踪时间 |
11.7.碰撞检测文章来源:https://www.toymoban.com/news/detail-437159.html
上例中小球移动后消失,表示移动到窗口之外,所以需要增加碰撞检测,即小球与窗体任意一边的边缘发生碰撞了则更改小球的移动方向文章来源地址https://www.toymoban.com/news/detail-437159.html
import sys
import pygame
pygame.init() #初始化pygame
size=width,height=640,800
screen=pygame.display.set_mode(size) #显示窗口
color=(0,0,0) #设置颜色
ball=pygame.image.load('ball.gif') #加载小球图片,但不现实
ballrect=ball.get_rect() #获取矩形区域,其实就会小球图片所占区域,只不过没有内容
clock=pygame.time.Clock() #创建时钟
speed=[5,5] #设置移动的x、y轴
#执行一个死循环,确保窗口一直存在,知道手动关闭(点击x)
while True:
clock.tick(60) #更新时钟,每秒60次
#检查事件显示窗口也是一个事件,点击关闭也是一个事件
for event in pygame.event.get():
if event.type==pygame.QUIT:
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) #将ball图片填到屏幕矩形区域上
pygame.display.flip() #刷新显示
到了这里,关于python制作跳跃的小球的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!