用户:赛罗Wuvh查看:0 回复:0 评论:0 创建时间:2021-12-04T16:49:28
【作品展示】

【作品介绍】
嘿嘿嘿
【作品源代码】
import pygame
import sys
import random
import time
pygame.init()
screen = pygame.display.set_mode((600, 700))
pygame.display.set_caption("水果忍者")
myFont = pygame.font.SysFont(None, 80)
myFont2 = pygame.font.SysFont("kaiti", 20)
# myFont2 = pygame.font.SysFont("kaittf",20) # mac系统使用
letterList = ["a", "b", "c", "d", "e", "f", "g", "h",
"i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
letterWait = []
score = 0 # 获得分数
scoreText = "当前分数:0"
chance = 5 # 5次错过字母机会
chanceText = "剩余机会:5"
level = 0
levelText = "当前关卡:1" # 设置关卡显示内容
letterSpeed = 1 # 字母下落速度
fruitX = 400 # hero位置
fruitY = 0
yellow = (255, 255, 0)
rate = 0 # 正确率
rateTxt = "正确率:"
clickNum = 0 # 点击次数
# 添加图片
bgPic = pygame.image.load("bg.png")
boom1 = pygame.image.load("boom1.png")
boom2 = pygame.image.load("boom2.png")
boom3 = pygame.image.load("boom3.png")
boom = [boom1, boom2, boom3]
# 添加水果图片
fruit1 = pygame.image.load("fruit1.png")
fruit2 = pygame.image.load("fruit2.png")
fruit3 = pygame.image.load("fruit3.png")
fruit4 = pygame.image.load("fruit4.png")
fruit5 = pygame.image.load("fruit5.png")
fruit = [fruit1, fruit2, fruit3, fruit4, fruit5]
# 增加音效
sound1 = pygame.mixer.Sound("boom.wav")
pygame.mixer.music.load("bgmusic.wav")
pygame.mixer.music.play(-1)
t1 = time.time()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
# ============================================
# 补充61-62行代码,完成音效播放、统计按键总次数clickNum累加1
sound1.play()
clickNum = clickNum + 1
# ============================================
for letter in letterWait:
if event.key == ord(letter["word"]):
# 消除时获取字母的位置
fruitX = letter['x']
fruitY = letter['y']
letterWait.remove(letter)
score = score + 1
scoreText = "当前分数:" + str(score)
# ===========================================
# 补充78-83行代码,实现刀的完整效果
screen.blit(boom1, (fruitX-60, fruitY-60))
pygame.display.update()
time.sleep(0.01)
screen.blit(boom2, (fruitX-60, fruitY-60))
pygame.display.update()
time.sleep(0.01)
screen.blit(boom3, (fruitX-60, fruitY-60))
pygame.display.update()
time.sleep(0.01)
# ============================================
# 生成字母
t2 = time.time()
if t2 - 2 > t1:
t1 = t2
l1 = random.choice(letterList)
c1 = (random.randint(0, 255), random.randint(
0, 255), random.randint(0, 150)) # 颜色随机
x1 = random.randint(50, 550) # x坐标从左右边距各100之间随机
y1 = 10
index1 = random.randint(0, 4)
letterDict = {"word": l1, "color": c1,
"x": x1, "y": y1, "index1": index1}
letterWait.append(letterDict)
# 绘制背景
screen.blit(bgPic, (0, 0))
# 绘制字母
for letter in letterWait:
x2 = letter["x"]
y2 = letter["y"]
l2 = letter["word"]
c2 = letter["color"]
index1 = letter["index1"]
textImage = myFont.render(l2, True, c2)
# 绘制字母的时候也绘制对应的图片
screen.blit(fruit[index1], (x2 - 60, y2 - 60))
screen.blit(textImage, (x2, y2))
# 字母下移
for letter in letterWait:
letter["y"] = letter["y"] + letterSpeed
if letter["y"] > 800:
letterWait.remove(letter)
chance = chance - 1
chanceText = "剩余机会:" + str(chance)
# 退出
if chance <= 0:
print("机会耗尽,886!最后得分", score)
pygame.quit()
sys.exit()
# 难度晋级
if score % 10 == 0:
level = score // 10 + 1
letterSpeed = level
levelText = "当前关卡:" + str(level)
# 显示得分
scoreShow = myFont2.render(scoreText, True, yellow)
screen.blit(scoreShow, (450, 30))
# 显示剩余机会
chanceShow = myFont2.render(chanceText, True, yellow)
screen.blit(chanceShow, (450, 60))
# 显示关卡数
levelShow = myFont2.render(levelText, True, yellow)
screen.blit(levelShow, (450, 90))
# ==============================================
# 补充143-145行代码,计算并显示正确率
if clickNum > 0:
rate = score / clickNum * 100
rate = round(rate, 2)
rateTxt = "正确率:" + str(rate) + "%"
rateShow = myFont2.render(rateTxt, True, yellow)
screen.blit(rateShow, (450, 120))
# ==============================================
pygame.display.update()
time.sleep(0.02)
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn