pygame-弹球游戏
标签: none
pygame-弹球游戏
pygame
思来想去还是用pygame写点游戏,一来复习,二来也能自己玩一玩,第一个小游戏还是写了一个弹球游戏。为了方便大家学习pygame,我没有用任何的封装,全部顺序结构的写法,所以代码上看起来十分臃肿。不过之后我就会逐步的利用函数和类进行封装,以便代码的后续使用。
源码
因为游戏很简单我就直接贴源码了。
import sys,pygame,random
# 初始化
pygame.init()
# 设置窗口大小
size = width, height = 640,480
# 设置颜色
color = (46,45,92)
# 导入图片
ballimage = pygame.image.load('./photo/ball.png')
boardimage = pygame.image.load('./photo/board.png')
# 设置球的大小
ball = pygame.transform.scale(ballimage,(20,20))
board = pygame.transform.scale(boardimage,(150,10))
# 获取矩形区域
ballrect = ball.get_rect()
boardrect = board.get_rect()
# print(boardrect.left,boardrect.top)
# 初始化板子位置
boardrect.left = 245
boardrect.top = 460
# 显示窗口
screen = pygame.display.set_mode(size)
# 设置时钟
clock = pygame.time.Clock()
# 死循环显示窗口
# 设置移动的x,y,初始化速度
speed = [5,5]
boardspeed = 0
pygame.display.set_caption('弹球游戏')
# 设置得分
font = pygame.font.Font('./photo/myfont.ttf', 30)
score = 0
while True:
# 每秒执行60次
clock.tick(60)
# 遍历所有事件
for event in pygame.event.get():
# 如果关闭窗口,则退出
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
boardspeed = -5
elif event.key == pygame.K_RIGHT:
boardspeed = 5
elif event.type == pygame.KEYUP:
boardspeed = 0
# 移动小球
ballrect = ballrect.move(speed)
boardrect = boardrect.move(boardspeed, 0)
'''
注意pygame窗口的左边原点为左上角(0,0)
'''
# 画分数
scoreface = font.render('得分:%s' % score, True, (0,0,0))
scoreRect = scoreface.get_rect()
scoreRect.topleft = (width - 120, 10)
# 判断是否碰到边缘
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
elif ballrect.top < 0 :
speed[1] = -speed[1]
elif ballrect.bottom > height:
break
# 判断接触
if ballrect.colliderect(boardrect) :
speed[1] = -speed[1]
score += 1
# 填充颜色
screen.fill(color)
# 将图片画到窗口
screen.blit(ball,ballrect)
screen.blit(board,boardrect)
screen.blit(scoreface,scoreRect)
# 更新全部显示
pygame.display.flip()
# 退出
font = pygame.font.Font('./photo/myfont.ttf', 40)
tip = font.render('游戏结束啦', True, (65, 105, 225))
gameoverimage = pygame.image.load('./photo/gameover.png')
while True:
screen.blit(gameoverimage, (60, 0))
screen.blit(tip, (80, 300))
pygame.display.flip()
for event in pygame.event.get():
# 如果关闭窗口,则退出
if event.type == pygame.QUIT:
sys.exit()
pygame.quit()
图片素材
链接: https://pan.baidu.com/s/1Dkl5XjTAhX3M8APa7pdxrA 密码: w9j9
--来自百度网盘超级会员V4的分享