简易打字游戏
发布时间
阅读量:
阅读量
许多刚开始接触电脑的新手用户对打字感到担忧,请放心我会为大家介绍如何编写简单的打字练习程序
基本设置:
import pygame,sys,random,time
pygame.init()
screen = pygame.display.set_mode((800,500))
pygame.display.set_caption("打字游戏")
myFont=pygame.font.SysFont(None,80)
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 = []
t1=time.time()
letterSpeed = 1 # 字母下落速度
myFont1 = pygame.font.SysFont(None,20)
score = 0
scoreText = "score:0"
red = (255,0,0)
chance = 5
chanceText = "chance:5"
green = (0,255,0)
levelText = "level:1" # 设置关卡显示内容
blue = (0,0,255) # 设置颜色
#添加背景音乐
pygame.mixer.music.load("bgSound.wav")
pygame.mixer.music.play(-1)
分数、段位、难度进阶:
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
for letter in letterWait:
# 计算分数
if event.key == ord(letter["word"]):
letterWait.remove(letter)
score = score + 1
scoreText = "score:"+str(score)
if score <10>20:
print("bronze(青铜)")
t2 = time.time()
if t2 - t1 >= 2:
t1 = t2
letter1 = random.choice(letterList)
color1 = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
x1 = random.randint(100, 700)
y1 = 0
letterDict = {"word": letter1, "color": color1, "x": x1, "y": y1}
letterWait.append(letterDict)
screen.fill((255, 255, 255))
for letter in letterWait: # 绘制字母
x2 = letter["x"]
y2 = letter["y"]
letter2 = letter["word"]
color2 = letter["color"]
textImage = myFont.render(letter2, True, color2)
screen.blit(textImage, (x2, y2))
# 字母下移
for letter in letterWait:
letter["y"] = letter["y"] + letterSpeed
if letter["y"]>500:
letterWait.remove(letter)
chance = chance - 1
chanceText = "chance:"+str(chance)
# 退出
if chance <=0 or score<0>10:
print("生命值耗尽,886!段位:垃圾,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<10>20:
print("生命值耗尽,886!段位:青铜,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<20>30:
print("生命值耗尽,886!段位:白银,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<30>40:
print("生命值耗尽,886!段位:黄金,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<40>50:
print("生命值耗尽,886!段位:铂金,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<50>60:
print("生命值耗尽,886!段位:氪金,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<60>70:
print("生命值耗尽,886!段位:钻石,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<70>90:
print("生命值耗尽,886!段位:战神,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<110>90:
print("生命值耗尽,886!段位:王者,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<130>110:
print("生命值耗尽,886!段位:超神,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<130:
print("生命值耗尽,886!段位:神王,最后得分",score)
pygame.quit()
sys.exit()
# 难度晋级
if score % 10 == 0:
level = score//10 +1
letterSpeed = level
levelText = "level:"+str(level)
# 显示信息
sText = myFont1.render(scoreText,True,red)
screen.blit(sText,(600,0))
cText = myFont1.render(chanceText,True,green)
screen.blit(cText,(600,25))
lText = myFont1.render(levelText,True,blue)
screen.blit(lText,(600,50))
pygame.display.update()
time.sleep(0.02)
完整代码:
import pygame,sys,random,time
pygame.init()
screen = pygame.display.set_mode((800,500))
pygame.display.set_caption("打字游戏")
myFont=pygame.font.SysFont(None,80)
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 = []
t1=time.time()
letterSpeed = 1 # 字母下落速度
myFont1 = pygame.font.SysFont(None,20)
score = 0
scoreText = "score:0"
red = (255,0,0)
chance = 5
chanceText = "chance:5"
green = (0,255,0)
levelText = "level:1" # 设置关卡显示内容
blue = (0,0,255) # 设置颜色
#添加背景音乐
pygame.mixer.music.load("bgSound.wav")
pygame.mixer.music.play(-1)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
for letter in letterWait:
# 计算分数
if event.key == ord(letter["word"]):
letterWait.remove(letter)
score = score + 1
scoreText = "score:"+str(score)
if score <10>20:
print("bronze(青铜)")
t2 = time.time()
if t2 - t1 >= 2:
t1 = t2
letter1 = random.choice(letterList)
color1 = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
x1 = random.randint(100, 700)
y1 = 0
letterDict = {"word": letter1, "color": color1, "x": x1, "y": y1}
letterWait.append(letterDict)
screen.fill((255, 255, 255))
for letter in letterWait: # 绘制字母
x2 = letter["x"]
y2 = letter["y"]
letter2 = letter["word"]
color2 = letter["color"]
textImage = myFont.render(letter2, True, color2)
screen.blit(textImage, (x2, y2))
# 字母下移
for letter in letterWait:
letter["y"] = letter["y"] + letterSpeed
if letter["y"]>500:
letterWait.remove(letter)
chance = chance - 1
chanceText = "chance:"+str(chance)
# 退出
if chance <=0 or score<0>10:
print("生命值耗尽,886!段位:垃圾,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<10>20:
print("生命值耗尽,886!段位:青铜,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<20>30:
print("生命值耗尽,886!段位:白银,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<30>40:
print("生命值耗尽,886!段位:黄金,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<40>50:
print("生命值耗尽,886!段位:铂金,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<50>60:
print("生命值耗尽,886!段位:氪金,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<60>70:
print("生命值耗尽,886!段位:钻石,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<70>90:
print("生命值耗尽,886!段位:战神,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<110>90:
print("生命值耗尽,886!段位:王者,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<130>110:
print("生命值耗尽,886!段位:超神,最后得分",score)
pygame.quit()
sys.exit()
if chance <=0 or score<130:
print("生命值耗尽,886!段位:神王,最后得分",score)
pygame.quit()
sys.exit()
# 难度晋级
if score % 10 == 0:
level = score//10 +1
letterSpeed = level
levelText = "level:"+str(level)
# 显示信息
sText = myFont1.render(scoreText,True,red)
screen.blit(sText,(600,0))
cText = myFont1.render(chanceText,True,green)
screen.blit(cText,(600,25))
lText = myFont1.render(levelText,True,blue)
screen.blit(lText,(600,50))
pygame.display.update()
time.sleep(0.02)
全部评论 (0)
还没有任何评论哟~
