猫史档案馆


【Python作品分享】跑酷猿(3)【作品秀】

用户:x博x博查看:0 回复:1 评论:0 创建时间:2020-12-20T19:15:37


【作品展示】

center_image

 

【作品介绍】

解压视频,不可操作。升级版预计明年二月发布

 

【作品源代码】


import pygame
import sys
import random


pygame.init()
screen = pygame.display.set_mode([750, 500])
# 设置窗口标题
pygame.display.set_caption('奔跑吧!忍者猿')
# 加载并设置窗口标题
iconImg = pygame.image.load('pkimages/logo.jpg')
pygame.display.set_icon(iconImg)
# 加载背景图片
bgImg = pygame.image.load('pkimages/bg.png')
# 加载地面图片
groundImg = pygame.image.load('pkimages/ground.png')
# 加载角喵片
playerImg = pygame.image.load('pkimages/player_run_1.png')
# 获取角色高度
playerHeight = playerImg.get_rect().height

# 自定义事件(添加障碍物定时器事件)ADDBARRIER-----------
ADDBARRIER = 24
# 启动定时器 -----------------------
pygame.time.set_timer(ADDBARRIER, int(1500))

# 背景数据
bg = {'img': bgImg,
      'x': 0,
      'y': 0,
      'step': 2}

# 地面数据
gd = {'img': groundImg,
      'x': 0,
      'y': 330,
      'step': 4}

# 创建列表barrierImgList,用于保存障碍物图片
barrierImgList = []

# 遍历加载图片
for i in range(1, 7):
    # 完成加载障碍物图片
    picName = 'pkimages/barrier' + str(i) + '.png'
    barrierImg = pygame.image.load(picName)
    # 向障碍物图片列表中添加障碍物图片
    barrierImgList.append(barrierImg)


# 把生成障碍物封装成函数
def getBarrier():
    barrierImg = random.choice(barrierImgList)
    # 障碍物字典
    rect = barrierImg.get_rect()
    barrier = {'img': barrierImg,
               'width': rect.width,
               'height': rect.height,
               'x': 750,
               'y': 330 - rect.height,
               'step': 4}
    return barrier


def draw():
    # 绘制背景图
    screen.blit(bg['img'], [bg['x'], bg['y']])
    # 绘制背景图2
    screen.blit(bg['img'], [bg['x'] + 750, bg['y']])
    # 绘制地面图
    screen.blit(gd['img'], [gd['x'], gd['y']])
    # 绘制地面图2
    screen.blit(gd['img'], [gd['x'] + 750, gd['y']])
    # 绘制角喵
    screen.blit(playerImg, [60, 330 - playerHeight])
    # 遍历列表,绘制障碍物图片
    for barrier in barrierList:
        screen.blit(barrier['img'], [barrier['x'], barrier['y']])


def move():
    # 设置背景向左移动2个像素
    bg['x'] -= bg['step']
    # 判断背景图到达临界位置就重新设置背景图x坐标
    if bg['x'] <= -750:
        bg['x'] = 0
    # 设置地面向左移动2个像素
    gd['x'] -= gd['step']
    # 判断地面图到达临界位置就重新设置地面图x坐标
    if gd['x'] <= -750:
        gd['x'] = 0
    # 遍历列表,设置障碍物向左移动4个像素
    for barrier in barrierList:
        barrier['x'] -= barrier['step']


# 创建一个障碍物列表
barrierList = []

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        # 判断生成障碍物事件,使用getBarrier()函数生成障碍物添加到列表中------------
        elif event.type == ADDBARRIER:
            barrierList.append(getBarrier())

    # 使用绘制函数
    draw()
    # 使用移动函数
    move()
    pygame.display.update()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
烧瓶下的酒精灯烧瓶下的酒精灯

学猿编程的人

点赞0


评论