猫史档案馆


【Python作品分享】圣诞礼物

用户:Lily.sunrprgLily.sunrprg查看:0 回复:0 评论:0 创建时间:2021-02-28T18:27:06


【作品展示】

center_image

 

【作品介绍】

呵呵

 

【作品源代码】

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


回复

上一页1 页 / 共 0下一页