安装pygame库
pip install pygame
实现以下功能
创建一个音响窗口,在游戏窗口中创建一个不断斜向移动的小球,并在小球移动至窗口边缘时使其弹回并继续移动
贴出代码
import pygame,sys
pygame.init() #初始化pygame
info = pygame.display.Info() #获取当前窗口信息
size = width,height = info.current_w,info.current_h #设置窗口大小
speed = [1,1] #设置运动速度
black = 0,0,0 #设置背景颜色为黑色
fps = 600 #设置帧率为300
s = pygame.display.set_mode(size,pygame.FULLSCREEN) #设置窗口大小和显示模式,pygame.NOFRAME:无边框,pygame.RESIZABLE:窗口大小可调,pygame.FULLSCREEN:全屏显示
pygame.display.set_caption("ball") #设置窗口标题
ball = pygame.image.load("ball.gif") #加载图片,加载成功后,pygame会将图片转换成一个Surface对象返回,修改该对象位置就相当于移动图片
ballrect = ball.get_rect() #将图片生成一个矩形
fclock = pygame.time.Clock() #创建一个clock对象,用于操作时间
while True: #定义一个不退出游戏就不会停止的循环
for event in pygame.event.get(): #定义循环获取每个窗口事件
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
speed[0] = speed[0] + 1
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1
if event.key == pygame.K_DOWN:
speed[1] = speed[1] + 1
if event.key == pygame.K_ESCAPE:
sys.exit()
ballrect = ballrect.move(speed[0],speed[1]) #球的移动,ballrect.move(x,y)方法中横轴移动x像素,纵轴移动y像素
s.fill(black) #在球移动后填充背景颜色为黑色(使用RGB色彩体系,R表示红色G表示绿色B表示蓝色)
s.blit(ball,ballrect) #通过ballrect矩形的移动来引导球的移动(blit函数:将一个图像绘制在另一个图像上)
pygame.display.update() #刷新屏幕
fclock.tick(fps) #设置屏幕帧率
运行效果
以下是可以使用键盘加快小球移动速度和鼠标控制小球位置的代码
import pygame,sys
#鼠标移动
pygame.init()
size = width,height = 600,400 #设置窗口大小
speed = [1,1] #设置运动速度,x轴与y轴每次移动1(像素)
black = 0,0,0 #设置背景颜色为黑色
fps = 300 #设置帧率为300
flag = False
ico = pygame.image.load("1.ico")
pygame.display.set_icon(ico)
s = pygame.display.set_mode(size,pygame.RESIZABLE) #设置窗口大小和显示模式,pygame.NOFRAME:无边框,pygame.RESIZABLE:窗口大小可调,pygame.FULLSCREEN:全屏显示
pygame.display.set_caption("ball") #设置窗口标题
ball = pygame.image.load("ball.gif") #加载图片,加载成功后,pygame会将图片转换成一个Surface对象返回,修改该对象位置就相当于移动图片
ballrect = ball.get_rect() #将图片生成一个矩形
fclock = pygame.time.Clock() #创建一个clock对象,用于操作时间
while True: #定义一个不退出游戏就不会停止的循环
for event in pygame.event.get(): #定义循环获取每个窗口事件
if event.type == pygame.QUIT: #当前事件为关闭窗口时关闭该程序
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1) * int(speed[0]/abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
if event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1]/abs(speed[1]))
if event.key == pygame.K_ESCAPE:
sys.exit()
elif event.type == pygame.VIDEORESIZE:
size = width, height = event.w , event.h
s = pygame.display.set_mode(size, pygame.RESIZABLE)
elif event.type == pygame.MOUSEBUTTONDOWN: #鼠标按下事件
if event.button == 1: #如果鼠标按下的是左键
flag = True
elif event.type == pygame.MOUSEBUTTONUP: #鼠标松开事件
flag == False
if event.button == 1:
ballrect = ballrect.move(event.pos[0] - ballrect.left , event.pos[1] - ballrect.top)
elif event.type == pygame.MOUSEMOTION:
if event.buttons[0] == 1:
ballrect = ballrect.move(event.pos[0] - ballrect.right, event.pos[1] - ballrect.bottom)
ballrect = ballrect.move(speed) #球的移动,ballrect.move(x,y)方法中横轴移动x像素,纵轴移动y像素
if ballrect.left < 0 or ballrect.right > width: #如果球碰到左或者右边缘,就将球横向速度取反
speed[0] = - speed[0]
if ballrect.top < 0 or ballrect.bottom > height: #如果球碰到左或者右边缘,就将球纵向速度取反
speed[1] = - speed[1]
s.fill(black) #在球移动后填充背景颜色为黑色(使用RGB色彩体系,R表示红色G表示绿色B表示蓝色)
s.blit(ball,ballrect) #通过ballrect矩形的移动来引导球的移动(blit函数:将一个图像绘制在另一个图像上)
pygame.display.update() #刷新屏幕
fclock.tick(fps) #设置屏幕帧率