用户:Lily.sunrprg查看:0 回复:0 评论:0 创建时间:2021-02-28T18:27:06
【作品展示】

【作品介绍】
呵呵
【作品源代码】
import turtle # 导入库
import random #随机库
import pygame
pygame.mixer.init()
pygame.mixer.music.load('dingdang.wav')
pygame.mixer.music.play(-1)
喵sound = pygame.mixer.Sound('喵.wav')
turtle.tracer(0)
# 窗口属性
game = turtle.Screen() # 创建窗体 S大写
game.setup(800, 600) # 设置窗口大小
game.title('圣诞狂欢') # 设置窗体名称
game.bgpic('bg.png') # 设置窗体背景
# 创造玩家角色
score = random.randint(-1, 10)
life = random.randint(20, 30)
game_over = False
turtle.addshape('player2l.gif') # 注册箭头样式
turtle.addshape('player2r.gif') # 注册箭头样式
turtle.addshape('gift1.gif')
turtle.addshape('gift2.gif')
turtle.addshape('gift3.gif')
turtle.addshape('喵.gif')
player = turtle.Pen() # 创建画笔
player.ht() # 隐藏箭头
player.speed() # 设置画笔移动速度
player = turtle.Pen() # 创造画笔
player.shape('player2r.gif') # 设置箭头样式
player.up() # 抬笔
player.goto(0, -200) # 移动到指定位置
player.st() # 显示箭头
step = 200
def go_left():
player.shape('player2l.gif')
if player.xcor() > -330:
pos_x = player.xcor() -20
player.setx(pos_x)
def go_right():
player.shape('player2r.gif')
if player.xcor() < 330:
pos_x = player.xcor() + 20
player.setx(pos_x)
def go_space():
player.shape('player.gif')
if player.xcor() < 20:
pos_x = player.xcor() + 90
player.setx(pos_x)
turtle.listen() # 启动事件监听
turtle.onkeypress(go_left, 'Left')
turtle.onkeypress(go_right, 'Right')
#添加礼物
def create_gift(shape,num):
pen_list = []
for i in range(num):
gift = turtle.Pen()
gift.speed(0) # 设置画笔移动速度
gift.ht()
gift.up()
gift.shape(shape)
x = random.randint(-300,300)
y = random.randint(0,300)
gift.goto(x, y) # 移动到指定位置
gift.st() # 显示箭头
gift.step = random.randint(1,3)
pen_list.append(gift)
return pen_list
gift1_list = create_gift('gift1.gif',5)
gift2_list = create_gift('gift2.gif', 4)
gift3_list = create_gift('gift3.gif', 3)
喵_list = create_gift('喵.gif', random.randint(1, 18))
def fall(giftlist):
global score
for gift in giftlist:
if gift.ycor() > -300: # 仅当礼物在下边缘上方时下落
pos_y = gift.ycor() - gift.step
gift.sety(pos_y)
else:
gift.goto(random.randint(-300, 300), 300)
gift.step = random.randint(1, 3)
if gift.distance(player) < 100:
# 碰撞检测,本质上是计算两个画笔的距离
gift.goto(random.randint(-300, 300), 300)
gift.step = random.randint(1, 3)
score += 1
text.clear()
text.write(f'分数:{score} 生命:{life}', font=('SimHei', 20, 'bold'))
text = turtle.Pen()
text.speed(0)
text.ht()
text.up()
text.pencolor('royalblue')
text.goto(-380,260)
text.write(f'分数:{score} 生命:{life}',font=('SimHei',20,'bold'))
lose = turtle.Pen()
lose.speed(0)
lose.ht()
lose.up()
lose.pencolor('red')
while not game_over:
fall(gift1_list)
fall(gift2_list)
fall(gift3_list)
for 喵 in 喵_list:
喵.sety(喵.ycor() - 喵.step)
if 喵.ycor() < -300:
喵.goto(random.randint(-300, 300), 300)
喵.step = random.randint(1, 3)
if 喵.distance(player) < 100:
喵sound.play()
喵.goto(random.randint(-300, 300), 300)
life -= 1
text.clear()
text.write(f'分数:{score} 生命:{life}', font=('Arial', 20, 'bold'))
if life == 0:
lose.write('你失败了!',font=('SimHei',50,'bold'),align='center')
game_over = True
turtle.update()
turtle.done()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn