欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Pygame 打字游戏项目实例

程序员文章站 2022-03-28 17:50:43
Pygame 打字游戏项目完整工程资源链接: https://download.csdn.net/download/qq_41676952/12666420《Python编程:从入门到实践》这本书学了大概快一个月,觉得可以动手实践一下了,于是花了两天时间写了一个打字游戏的项目,练习盲打熟悉键盘,废话不多,直接看效果图:最上方显示的 time:29.6 speed: 60.8 errors: 3 为上次练习的结果标红的字母是第一次按下按键错误的内容,只有第一...

Pygame 打字游戏项目

完整工程资源链接: https://download.csdn.net/download/qq_41676952/12666420

《Python编程:从入门到实践》这本书学了大概快一个月,觉得可以动手实践一下了,于是花了两天时间写了一个打字游戏的项目,练习盲打熟悉键盘,废话不多,直接看效果图:

Pygame 打字游戏项目实例
最上方显示的 time:29.6 speed: 60.8 errors: 3 为上次练习的结果

标红的字母是第一次按下按键错误的内容,只有第一次就正确按下相应按键才不会标红,而且只有正确按下相应按键光标才会往后移动

本来还打算在窗口下方加上一个键盘的图案,当按下某个键时,在图案上显示出相应的按键被按下,
这个内容先留着,等再学习点东西,留到以后完善
效果如下:
Pygame 打字游戏项目实例

基本思路:

1.创建窗口
2.初始化各项设置内容
3.产生目标字符串
4.初始化显示
5.开始计时,进入循环
6.检测按键事件
7.判断当前输入是否正确
8.更新屏幕
9.当一次循环完毕,结束计时,统计错误个数,计算速度

各项设置:窗口宽度 ,高度,背景颜色,字体,字体大小 等参数

class Settings:
    def __init__(self):
        """初始化游戏各项设置"""
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (230, 230, 230)
        self.font = "JetBrains Mono"
        self.font_size = 40

        self.errors = 0
        self.time = 0
        self.speed = 0

        self.alpha = {'a': 16, 'b': 18, 'c': 16, 'd': 18, 'e': 18, 'f': 12, 'g': 18, 'h': 18, 'i': 10, 'j': 10, 'k': 18,
                      'l': 10, 'm': 24, 'n': 18, 'o': 18, 'p': 18, 'q': 18, 'r': 14, 's': 16, 't': 12, 'u': 18, 'v': 16,
                      'w': 24, 'x': 18, 'y': 18, 'z': 16, ',': 20, '.': 20, '/': 20, ';': 20, '\'': 20, '[': 20,
                      ']': 20, '-': 20, '=': 20, '0': 20, '1': 20, '2': 20, '3': 20, '4': 20, '5': 20, '6': 20, '7': 20,
                      '8': 20, '9': 20}

各项初始化:

    # 初始化 pygame 组件
    pygame.init()

    # 初始化各项设置
    ty_settings = Settings()

    # 窗口设置
    screen = pygame.display.set_mode((ty_settings.screen_width, ty_settings.screen_height))
    pygame.display.set_caption('Typing')

初始化显示,计时 ,进入循环检测鼠标和键盘事件,循环完毕统计各项打字的参数

# 初始化界面显示
        gf.show_init(ty_settings, screen, s1)

        # 开始计时
        start_time = time.time()

        # 开始游戏的主循环
        while index < len_s1:
            # 监视键盘和鼠标事件
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()

                elif event.type == pygame.KEYDOWN:
                    # 判断当前输入是否正确
                    if chr(event.key) == s1[index]:
                        index = index + 1
                        # 更新屏幕
                        gf.update_screen(ty_settings, screen, s1, index, err)

                    else:
                        err[index] = 1
        end_time = time.time()
        ans = end_time - start_time
        ty_settings.time = format(ans, '.1f')
        ty_settings.speed = format(60 * len_s1 / ans, '.1f')
        ty_settings.errors = err.count(1)

完整工程资源链接: https://download.csdn.net/download/qq_41676952/12666420

本文地址:https://blog.csdn.net/qq_41676952/article/details/107631668