Advertisement

简易打字游戏

阅读量:

许多刚开始接触电脑的新手用户对打字感到担忧,请放心我会为大家介绍如何编写简单的打字练习程序

基本设置:

复制代码
 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)

还没有任何评论哟~