用户:
超级无敌编程大神查看:0 回复:1 评论:0 创建时间:2022-06-09T09:56:37
【作品展示】

【作品介绍】
这是我做的超级作品!
【作品源代码】
import math
import pgzrun
import random
o_speed = 喵00000000000000000000000000000000
initial_speed = 3
speedinterval_time = 1
every_add_speed = 1
vacating_time = 0.5
WIDTH = 380
HEIGHT = 600
max_o_speed = 12
max_initial_speed = 12
min_o_speed = 3
min_initial_speed = 3
max_every_add_speed = 3
min_every_add_speed = 1
max_vacating_time = 8
min_vacating_time = 0.5
# 准备背景图
bg = Actor('readybg.png')
bgFun = Actor('bg.png', [WIDTH/2, HEIGHT/2-40])
# 结束背景图
bgEnd = Actor('endbg.png')
# 开始游戏
startBg = Actor('start.png', [WIDTH-95, HEIGHT/1.2])
# 再试一次
againBg = Actor('again.png', [WIDTH-95, HEIGHT/1.2])
# 游戏标题
gametitle = Actor('title.png', [WIDTH/2, HEIGHT/5])
# gameover
gameover = Actor('gameover.png', [WIDTH/2, HEIGHT/3.2])
# 结束界面的得分
gamescore = Actor('scorefont.png', [WIDTH/2.5, HEIGHT/2.5])
# 人物
character = Actor('skill.png', [WIDTH/2, HEIGHT/1.5])
# 障碍物(包含奖品、跳板)
obstacleList = ['tree1.png', 'stone1.png', 'tree2.png', 'prize1.png',
'stone2.png', 'tree1.png', 'prize2.png', 'tree2.png', 'slope.png']
oList = []
# 奖励组
prizeList = ['prize1.png', 'prize2.png']
# 状态
state = '准备'
# 得分
score = 0
# 计时
timedata = 0
newtimedata = 0
# 障碍物类(包含奖品、跳板)
class Obstacle():
def __init__(self, obstacleItem):
self.obstacleItem = obstacleItem
def drawObstacle(self):
self.obstacleItem.draw()
def renderObstacle():
y = 0
for p in obstacleList:
y = y - 100
if p == 'slope.png':
y = y - 60
obstacle = Actor(p, [random.randint(40, WIDTH-40), y])
obstacleItem = Obstacle(obstacle)
oList.append(obstacleItem)
renderObstacle()
def timeSpeed():
global timedata, o_speed, newtimedata
if state == '运行':
if newtimedata == 0:
newtimedata = timedata
timedata += 1
if math.fabs(timedata - newtimedata) == speedinterval_time:
newtimedata = timedata
if o_speed >= min_o_speed and o_speed < max_o_speed:
o_speed = o_speed
elif o_speed >= max_o_speed:
o_speed = max_o_speed
else:
o_speed = min_o_speed
if every_add_speed <= max_every_add_speed and every_add_speed >= min_every_add_speed:
o_speed += every_add_speed
else:
o_speed += min_every_add_speed
clock.schedule_interval(timeSpeed, 1.0)
def on_mouse_down(pos):
global state
if state == '准备':
if startBg.collidepoint(pos):
state = '运行'
if state == '结束':
if againBg.collidepoint(pos):
state = '准备'
resetAny()
def on_mouse_move(pos):
if state == '运行':
character.pos = pos
def draw():
# 背景
if state == '准备':
bg.draw()
gametitle.draw()
# 开始游戏
startBg.draw()
if state == '运行':
bgFun.draw()
# 障碍物(包含奖品、跳板)
for oi in oList:
oi.drawObstacle()
# 人物
character.draw()
screen.draw.text('score:' + str(score), center=(55, 20), fontsize=25)
if state == '结束':
bgEnd.draw()
gametitle.draw()
gameover.draw()
gamescore.draw()
screen.draw.text(str(score), center=(
WIDTH/1.7, HEIGHT/2.55), fontsize=40)
# 再来一次
againBg.draw()
# 障碍物移动(包含奖品、跳板)
def oMove(list):
global state, score
if state == '运行':
for i in list:
if o_speed >= min_o_speed and o_speed < max_o_speed:
i.obstacleItem.y += o_speed
elif o_speed >= max_o_speed:
i.obstacleItem.y += max_o_speed
else:
i.obstacleItem.y += min_o_speed
if i.obstacleItem.y > HEIGHT:
i.obstacleItem.x = random.randint(40, WIDTH-40)
i.obstacleItem.y = -370
if i.obstacleItem.image == 'slope.png':
if i.obstacleItem.colliderect(character):
character.image = 'skillfly'
if vacating_time >= min_vacating_time and vacating_time <= max_vacating_time:
clock.schedule_unique(changeSkill, vacating_time)
else:
clock.schedule_unique(changeSkill, min_vacating_time)
elif i.obstacleItem.image == 'prize1.png' or i.obstacleItem.image == 'prize2.png':
if i.obstacleItem.colliderect(character):
score += 10
list.remove(i)
else:
if character.image == 'skill' or character.image == 'skill.png':
if i.obstacleItem.colliderect(character):
state = '结束'
# 恢复正常滑行的状态
def changeSkill():
character.image = 'skill'
# 重置人物、障碍物、奖品的位置、分数
def resetAny():
global oList, score, timedata, newtimedata, o_speed
bgFun.pos = (WIDTH/2, HEIGHT/2-40)
character.pos = (WIDTH/2, HEIGHT/1.5)
oList = []
renderObstacle()
score = 0
timedata = 0
newtimedata = 0
if initial_speed >= min_initial_speed and initial_speed < max_initial_speed:
o_speed = initial_speed
elif initial_speed >= max_initial_speed:
o_speed = max_initial_speed
else:
o_speed = min_initial_speed
timeSpeed()
def update():
oMove(oList)
if state == '运行':
# 运行时背景图的滚动
if o_speed >= min_o_speed and o_speed <= max_o_speed:
bgFun.y += o_speed
else:
bgFun.y += min_o_speed
if bgFun.top >= 0:
bgFun.y = 0
if len(oList) != len(obstacleList):
obstacle = Actor(random.choice(prizeList), [
random.randint(40, WIDTH-40), -420])
obstacleItem = Obstacle(obstacle)
oList.append(obstacleItem)
pgzrun.go()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn