IT小工匠

这里是站点说明

pygame-弹球游戏

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的分享

本原创文章未经允许不得转载 | 当前页面:IT小工匠 » pygame-弹球游戏

评论

广告位