今天我学会了如何在pygame创建的画布中使素材移动并碰壁反弹。
假如我做了一张10x10的小猪头照片pig.png
# coding:utf-8
import pygame #调用pygame库
import time #调用time库
import sys #调用sys库
import easygui #调用easygui库
from pygame.locals import * #加载pygame在本地磁盘的所有功能
pygame.init() #初始化运行
screen = pygame.display.set_mode((480, 650)) #创建窗口大小500*800
screen.fill((255,255,255)) #创建窗口背景颜色为255,255,255的RGB数据颜色
pygame.display.set_caption("碰壁反弹") #创建窗口名"碰壁反弹"
pig=pygame.image.load("picture/pig.png") #加载一个相对路径中的照片
#以下为探测:鼠标点击右上角关闭或键盘敲击ESC键时,执行程序的退出命令。
def handleEvent():
for event in pygame.event.get():
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
pygame.quit()
sys.exit()
#添加素材
x=int(easygui.enterbox("输入小猪出生点x坐标")) #利用easygui的输入窗口记录图片pig出生点坐标x
y=int(easygui.enterbox("输入小猪出生点y坐标")) #利用easygui的输入窗口记录图片pig出生点坐标y
xspend=3 #设置图片横向移动速度为3像素/次
yspend=3 #设置图片纵向移动速度为3像素/次
while True:
screen.blit(pig,(x,y)) #将10x10的小猪图片以手动输入的xy坐标添加至窗口内
x=x-xspend #使x坐标减少3
y=y+yspend #使y坐标增加3
time.sleep(0.01) #使每0.01秒执行一次以上命令
if x<0: #碰到左边
xspend=-3 #使图片触碰左边框线时,x速度变为-3每次,此处因为x-xspend,将会变为每秒增加x
if y>790: #因为图片占10x10,所以触碰下框线的标准要减去图片的长度10
yspend=-3 #使图片触碰下边框线时,y速度变为-3每次,此处因为y-xspend,将会变为每秒减少y
if x>423: #因为图片占10x10,所以触碰右框线的标准要减去图片的宽度10
xspend=3 #此处是图片触碰右框线时重新恢复到x<0之前的状态,变为每秒减少x
if y<0: #碰到上面
yspend=3 #此处是图片触碰上框线时重新恢复到y>790之前的状态,变为每秒减少x
#可以看出,碰壁反弹是靠不同情况改变运行速度来达到目的的.
pygame.display.update() #更新屏幕内容
handleEvent() #实现def定义的监听功能