Python版打字练习软件源代码,键盘练习软件源代码,含娱乐模式和训练模式
按ESC切换左手练习,右手练习、双手练习

完整代码下载地址:Python版打字练习软件源代码


核心代码:

import random
import pygame
from pygame.locals import *
from kb import *
from alpha import *
from player import *
from button import *
from cloud import *
import sys
from setting import *pygame.init()
pygame.mixer.init()
ADDBIRD = pygame.USEREVENT + 1
pygame.time.set_timer(ADDBIRD, 1500)ADDCLOUD = pygame.USEREVENT + 2
pygame.time.set_timer(ADDCLOUD, 20000)
COUNTDOWN = pygame.USEREVENT + 3
pygame.time.set_timer(COUNTDOWN, 1000)boom_file = "./sound/boom.wav"
# print(file)
music_boom = pygame.mixer.Sound(boom_file)
music_boom.set_volume(0.4)clock = pygame.time.Clock()
screen = pygame.display.set_mode((WIDTH, HEIGHT))text_font = pygame.font.Font("./font/jiangxizhuokai20.TTF", 30)
text_color = "white"
train_score = 0
happy_score = 0
count = COUNTDOWN_TIMEdef print_text(font, text, pos, color):img_text = font.render(text, True, color)screen.blit(img_text, pos)def print_hand_info(text_font, substage, pos , text_color):print_text(text_font, SHOW_HANDS_INFO[substage], pos, text_color)hand_image = pygame.image.load("./imgs/" + hand_images[substage])screen.blit(hand_image, (pos[0] + 180, pos[1]))running = True
# stage = RUN_TRAIN_MODE
# stage = RUN_HAPPY_MODE
stage = MENU_MODE
substage = RUN_LEFT_MODE
kb_pressd = KB_Pressed()
player = Player(y=300)
bird = MenuBird()
boom_group = pygame.sprite.Group()bird_group = pygame.sprite.Group()
bullet_group = pygame.sprite.Group()
float_alpha_group = pygame.sprite.Group()
clouds = pygame.sprite.Group()
hit_alpha = None # fix bug, 防止进入娱乐模式后,直接按空格发射子弹,程序崩溃
if __name__ == "__main__":keyboard = pygame.image.load(KB_IMAGE)while running:for event in pygame.event.get():if event.type == KEYUP:if event.key == K_ESCAPE:substage = (substage + 1) % 3elif event.type == KEYDOWN:if event.key == K_SPACE and stage == RUN_HAPPY_MODE:print("hit_alpha", shoot_alpha)bullet = Bullet(player.rect, shoot_alpha)bullet.play_shoot()bullet_group.add(bullet)if event.type == ADDBIRD:if stage in (RUN_HAPPY_MODE, RUN_TRAIN_MODE):bird = Bird(substage, stage)bird_group.add(bird)if event.type == ADDCLOUD:if stage in (RUN_HAPPY_MODE, RUN_TRAIN_MODE):cloud = Cloud()# print("add cloud")clouds.add(cloud)if event.type == COUNTDOWN:if stage == RUN_TRAIN_MODE:if count <= 0:old_stage = stagestage = GAME_OVER_MODE# RUN_TRAIN_MODE_FLAG = Truecount -= 1if event.type == QUIT:sys.exit()elif event.type == MOUSEBUTTONUP:x, y = event.posif stage == MENU_MODE:for button_choice in menu_mode_buttons:# 在菜单页面,选择娱乐模式,训练模式,退出的逻辑处理if button_choice.rect.collidepoint(x, y):if button_choice.type == RUN_TRAIN_MODE:pygame.time.set_timer(ADDBIRD, 2000)if button_choice.type in (RUN_HAPPY_MODE, RUN_TRAIN_MODE):# 初始化:云,鸟,字母,子弹,倒计时,得分train_score = 0happy_score = 0count = COUNTDOWN_TIMEsubstage = RUN_LEFT_MODEstage = button_choice.typekb_pressd = KB_Pressed()boom_group = pygame.sprite.Group()bird_group = pygame.sprite.Group()bullet_group = pygame.sprite.Group()clouds = pygame.sprite.Group()for cloud_index in range(len(INIT_CLOUD_POS)):cloud = Cloud(INIT_CLOUD_POS[cloud_index])clouds.add(cloud)bird = Bird(substage, stage)bird_group.add(bird)elif button_choice.type == GAME_QUIT:sys.exit()# 娱乐模式和训练模式左上角的返回按钮elif stage in (RUN_HAPPY_MODE, RUN_TRAIN_MODE):if return_menu_mode.rect.collidepoint(x, y):return_menu_mode.revert_image()stage = MENU_MODE# 初始化鸟和飞行员player = Player()bird = MenuBird()float_alpha_group = pygame.sprite.Group()elif stage == GAME_OVER_MODE:if return_menu.collidepoint(x, y):stage = MENU_MODEplayer = Player()bird = MenuBird()elif replay_again.collidepoint(x, y):if old_stage == RUN_TRAIN_MODE:train_score = 0count = COUNTDOWN_TIMEelif old_stage == RUN_HAPPY_MODE:happy_score = 0bullet_group = pygame.sprite.Group()stage = old_stage# 初始化:云,鸟,字母,子弹,得分substage = RUN_LEFT_MODE# kb_pressd = KB_Pressed()boom_group = pygame.sprite.Group()bird_group = pygame.sprite.Group()clouds = pygame.sprite.Group()float_alpha_group = pygame.sprite.Group()for cloud_index in range(len(INIT_CLOUD_POS)):cloud = Cloud(INIT_CLOUD_POS[cloud_index])clouds.add(cloud)elif event.type == MOUSEMOTION:x, y = event.posif stage == MENU_MODE:for button_choice in menu_mode_buttons:button_choice.do_mouse_on(x, y)if stage in (RUN_HAPPY_MODE, RUN_TRAIN_MODE):screen.fill((135, 206, 250))# screen.fill("black")clouds.update()clouds.draw(screen)# return to menu buttonreturn_menu_mode.update()return_menu_mode.draw(screen)# screen.blit(BG_IMG, (0, 0))screen.blit(keyboard, KB_POS)hit_alpha = kb_pressd.update() # 得到一个按下的字母kb_pressd.draw(screen)# hit_alpha 得到按下的字母for bird in bird_group:bird.update()bird.draw(screen)if stage == RUN_HAPPY_MODE:if bird.is_dead():old_stage = stagestage = GAME_OVER_MODEif stage == RUN_TRAIN_MODE:  # 训练模式:小鸟原地自爆炸# 得分显示print_text(text_font, "SCORE: " + str(train_score), (1720, 20), "black")# 倒计时显示print_text(text_font, "倒计时: " + str(count), (1520, 20), "black")# 如果有字母按下if hit_alpha:float_alpha = FloatAlpha(hit_alpha)float_alpha_group.add(float_alpha)for show_bird in bird_group: # 遍历正在向左移动的字母if hit_alpha == show_bird.get_label(): # 如果向左的字母 和 按下的字母是一样的# print(hit_alpha)train_score += 1music_boom.play()x, y = show_bird.get_pos()boom = Boom(x-10, y-10)boom_group.add(boom)show_bird.kill() # 干掉向左移动的字母breakif stage == RUN_HAPPY_MODE: # 娱乐模式:小鸟被子弹射杀if hit_alpha:float_alpha = FloatAlpha(hit_alpha)float_alpha_group.add(float_alpha)for show_bird in bird_group: # 遍历正在向左移动的字母if hit_alpha == show_bird.get_label(): # 如果向左的字母 和 按下的字母是一样的# 1. 移动player的位置到,show_bird,这一行player.move_y(show_bird.rect.y)shoot_alpha = hit_alphabreak# 子弹与字母的 碰撞检测collisions = pygame.sprite.groupcollide(bullet_group, bird_group, False, False)if collisions:for bullet, birds in collisions.items():for bird in birds:if bullet.get_label() == bird.get_label():happy_score += 1music_boom.play()x, y = bird.get_pos()boom = Boom(x-10, y-10)boom_group.add(boom)bullet.kill()bird.kill()print_text(text_font, "SCORE: " + str(happy_score), (1720, 20), "black")player.update()player.draw(screen)bullet_group.update()bullet_group.draw(screen)float_alpha_group.update()float_alpha_group.draw(screen)boom_group.update()boom_group.draw(screen)# print_text(text_font, SHOW_HANDS_INFO[substage], (20, 900), text_color)print_hand_info(text_font, substage, (20, 900), text_color)elif stage == MENU_MODE:screen.blit(MENU_MODE_BG, (0, 0))for button in menu_mode_buttons:if button.type != MENU_MODE:button.update()button.draw(screen)player.random_move()player.update()player.draw(screen)bird.update()bird.draw(screen)elif stage == GAME_OVER_MODE:if old_stage == RUN_TRAIN_MODE:screen.blit(game_over_bg, (0, 0))screen.blit(GAME_OVER_IMAGE, (WIDTH//2 - 150, HEIGHT//2 - 250))elif old_stage == RUN_HAPPY_MODE:screen.blit(game_over_bg, (0, 0))screen.blit(GAME_OVER_IMAGE, (WIDTH//2 - 150, HEIGHT//2 - 250))pygame.display.update()clock.tick(FPS)

完整代码下载地址:Python版打字练习软件源代码

Python版打字练习软件源代码,键盘练习软件源代码,含娱乐模式和训练模式相关推荐

  1. 华为2019年校招(20届实习)机考题python版解答与思路(2019-3-13软件题)

    试题为今天考试时记下,记于此仅做学习分享.侵删. 答案思路仅供参考,肯定有更优的办法!第三题没解出来,欢迎大家评论提点! 第一题: 这道题对输入做切分(调用split()方法)后,进行反复的10-2进 ...

  2. 软件项目规模评估方法之软件源代码行法

    软件项目规模的评估方法有很多,我们近期会把这些方法一一进行梳理然后发布出来供大家学习了解.今天我们来说说软件项目规模评估方法中的软件源代码行法. 软件源代码行法(SLOC)是以软件的源代码行数量来计算 ...

  3. Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk

    Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk 程序依赖:pygame2.0.1, pymunk5.5.0 直接运行main.py 完整代码下载地址:Python版经典小游戏 ...

  4. Python版警察抓小偷游戏源代码,有多个难度级别

    Python版警察抓小偷游戏源代码,有多个难度级别,直接运行game.py,输入难度级别(1-13).不同的难度等级对应不同的图形. game.py """ Header ...

  5. 用Python写的猜灯谜软件源代码

    主要实现原理:首先通过爬虫获取灯谜的数据,灯谜数据来源于汉谜网,然后用保存为csv或者表格数据,并用用tk做界面进行展示.完整程序代码包请在文末地址下载,程序运行截图: 从汉谜网爬取灯谜程序spide ...

  6. Python版儿童识字游戏源代码,结合植物大战僵尸和儿童识字的小游戏,含学习模式和娱乐模式

    Python版儿童识字游戏源代码,结合植物大战僵尸和儿童识字的小游戏,含学习模式和娱乐模式. 娱乐模式下,僵尸会头顶不同的汉字,此时屏幕会提示要消灭的汉字,移动豌豆消灭对应汉字的僵尸,如果攻击非提示汉 ...

  7. Python版名片管理系统源代码

    Python版名片管理系统,功能: 新增名片(记录用户的姓名,电话,QQ,邮箱): 显示所有名片: 查询名片: 查询成功后可以修改,删除名片 运行截图: cards_main.py :程序的入口,完整 ...

  8. Python版简易银行管理系统源代码,银行管理系统python代码、银行自助提款系统

    Python版简易银行管理系统源代码,银行管理系统python代码,实现开户.账户查询.存取款.转账.改密.锁定.解锁.补卡.销户等银行管理操作.账户信息存在allusers.txt中,通过该文件的读 ...

  9. Python版水果忍者源代码

    切水果风靡一时的游戏,不知道为啥总是切刀炸掉,挺解压的游戏.完整程序包请在文末地址下载 主要程序 import pygame, sys import os import randomplayer_li ...

最新文章

  1. wpgcms---流程控制
  2. python软件开发-有哪些值得推荐的 Python 开发工具?
  3. C语言指针实现计算平均分等功能
  4. http / 关于长连接和短链接的理解
  5. 几个常用SQL2000语句
  6. 黄金分割小数点后100位小数的c语言编程,黄金分割数小数点后100位
  7. NLP应该如何学、如何教?斯坦福大学大牛Dan Jurafsky教授专访
  8. 【转】单元测试基础知识
  9. Oracle PLSQL语句实例
  10. Perl语言必看书籍推荐
  11. 平板 电脑 android 2.2,最新版:360 Tablet Guardian安卓版(适用于Android平板电脑)v 3. 2. 2中文正式安装版...
  12. 【经验分享】如何将拍摄的照片制作成扫描件 PS+WORD教程
  13. 猎头推荐转行大数据分析师骗局
  14. command命令大全(转自http://blog.dhedu.gov.cn/u/72/archives/2009/14290.html)
  15. firefox_config
  16. [硬件]电路-TTL
  17. Unity脚本(二)
  18. 唐骏欧铃,物料数据及时监控
  19. MySQL字符集设定与查询
  20. 别看唐探了,Q(ueue)的真相在这里

热门文章

  1. 主引导扇区及主引导记录MBR的详细说明
  2. Python之Pandas连接详解
  3. 上架APPStore 截图尺寸要求
  4. fluent柱坐标系设定_Fluent中速度入口条件要设置哪些参数
  5. 医疗卫生信息化领域的一些术语和标准
  6. 跟踪信号发生器如何产生宽频带信号?
  7. vue/react/web前端项目部署到阿里云服务器_nginx_pm2流程及部署前的准备
  8. 5和6 objbc oracle_《Oracle Database 12c完全参考手册(第7版)(试读版)》
  9. 为什么装完计算机系统后进不去,电脑系统装完后为啥进不去?
  10. uhs3内存卡有哪些_UHS-I与UHS-II存储卡有什么区别?