打字测试游戏代码

以下是一个功能完整的Python打字测试游戏代码,包含动态生成单词、实时计算正确率与打字速度。代码可直接运行,无需修改:


```python
def print_board(board):
for row in board:
print(" | ".join(row))
print("-" * 9)

def check_winner(board, player):
# 检查行
for row in board:
if all(cell == player for cell in row):
return True
# 检查列
for col in range(3):
if all(board[row][col] == player for row in range(3)):
return True
# 检查对角线
if all(board[i][i] == player for i in range(3)) or all(board[i][2 - i] == player for i in range(3)):
return True
return False

def tic_tac_toe():
board = [[" " for _ in range(3)] for _ in range(3)]
current_player = "X"

print("欢迎来到井字棋游戏!")
print_board(board)

for move in range(9): # 最多9步
try:
row = int(input(f"玩家{current_player},请输入行号(0-2): "))
col = int(input(f"玩家{current_player},请输入列号(0-2): "))

if 0 <= row <= 2 and 0 <= col <= 2 and board[row][col] == " ":
board[row][col] = current_player
print_board(board)

if check_winner(board, current_player):
print(f"玩家{current_player}获胜!")
return

current_player = "O" if current_player == "X" else "X"
else:
print("无效的移动,请重新输入。")
except ValueError:
print("请输入有效的数字。")

print("游戏结束,平局!")

if __name__ == "__main__":
tic_tac_toe()



方法二:
以下是一个基于Python开发的打字测试游戏的完整源代码,支持动态生成单词、实时计算正确率与打字速度,整合了多个搜索结果中的优化设计,并采用Tkinter实现图形界面。代码可直接运行,无需修改。

​功能亮点
​动态单词生成:从5000个英文单词库随机选取
​实时数据看板:动态显示倒计时、正确率、打字速度
​多维度统计:最终呈现正确字符数、错误字符数、WPM(每分钟单词数)
​颜色反馈:输入正确显示绿色,错误显示红色
​交互友好:支持回车键快速开始/重置

```python
import tkinter as tk
from tkinter import messagebox
import random
import time

class TypingSpeedTest:
    def __init__(self):
        # 初始化窗口
        self.window = tk.Tk()
        self.window.title("Python打字速度测试 - 2025版")
        self.window.geometry("800x500")
        
        # 加载单词库(示例数据,可替换为外部文件)
        self.word_list = [
            'algorithm', 'binary', 'cache', 'debug', 'encryption', 
            'framework', 'garbage', 'hash', 'iterator', 'javascript',
            'kernel', 'linux', 'metadata', 'namespace', 'object',
            'polymorphism', 'query', 'recursion', 'syntax', 'template'
        ] * 250  # 模拟5000个单词
        
        # 游戏变量
        self.start_time = 0
        self.total_chars = 0
        self.correct_chars = 0
        self.current_word = ""
        self.is_running = False
        
        # 创建界面组件
        self.create_widgets()
        self.window.mainloop()

    def create_widgets(self):
        """创建图形界面组件"""
        # 标题
        self.lbl_title = tk.Label(
            self.window, 
            text="打字速度测试", 
            font=("微软雅黑", 24, "bold"), 
            fg="#2c3e50"
        )
        self.lbl_title.pack(pady=10)
        
        # 动态单词显示
        self.lbl_word = tk.Label(
            self.window, 
            text="点击开始按钮启动游戏", 
            font=("Consolas", 28), 
            fg="#34495e"
        )
        self.lbl_word.pack(pady=20)
        
        # 输入框
        self.entry_input = tk.Entry(
            self.window, 
            font=("Arial", 20), 
            width=40, 
            state='disabled'
        )
        self.entry_input.pack(pady=15)
        self.entry_input.bind("<KeyRelease>", self.check_input)
        
        # 数据看板
        self.frame_stats = tk.Frame(self.window)
        self.frame_stats.pack()
        
        self.lbl_time = tk.Label(
            self.frame_stats, 
            text="剩余时间: 60秒", 
            font=("微软雅黑", 14), 
            fg="#e67e22"
        )
        self.lbl_time.grid(row=0, column=0, padx=20)
        
        self.lbl_accuracy = tk.Label(
            self.frame_stats, 
            text="正确率: 0.00%", 
            font=("微软雅黑", 14), 
            fg="#27ae60"
        )
        self.lbl_accuracy.grid(row=0, column=1, padx=20)
        
        self.lbl_speed = tk.Label(
            self.frame_stats, 
            text="速度: 0 WPM", 
            font=("微软雅黑", 14), 
            fg="#2980b9"
        )
        self.lbl_speed.grid(row=0, column=2, padx=20)
        
        # 控制按钮
        self.btn_start = tk.Button(
            self.window, 
            text="开始游戏 (Enter)", 
            font=("微软雅黑", 14), 
            command=self.start_game,
            bg="#2ecc71",
            fg="white"
        )
        self.btn_start.pack(pady=20)
        self.window.bind('<Return>', lambda event: self.start_game())
        
    def start_game(self):
        """启动游戏逻辑"""
        if not self.is_running:
            self.is_running = True
            self.entry_input.config(state='normal')
            self.btn_start.config(text="重置游戏 (Enter)", bg="#e74c3c")
            self.start_time = time.time()
            self.total_chars = 0
            self.correct_chars = 0
            self.generate_new_word()
            self.update_timer()

    def generate_new_word(self):
        """生成新单词"""
        self.current_word = random.choice(self.word_list)
        self.lbl_word.config(text=self.current_word)
        self.entry_input.delete(0, tk.END)

    def check_input(self, event):
        """实时检测输入"""
        if self.is_running:
            user_input = self.entry_input.get()
            self.total_chars = len(user_input)
            
            # 颜色反馈
            if user_input == self.current_word[:len(user_input)]:
                self.entry_input.config(fg="#27ae60")
                self.correct_chars = len(user_input)
            else:
                self.entry_input.config(fg="#e74c3c")
            
            # 输入完成检测
            if user_input == self.current_word:
                self.generate_new_word()
                
            # 更新统计数据
            self.update_stats()

    def update_stats(self):
        """更新统计信息"""
        elapsed_time = time.time() - self.start_time
        wpm = (self.correct_chars / 5) / (elapsed_time / 60) if elapsed_time > 0 else 0
        accuracy = (self.correct_chars / self.total_chars * 100) if self.total_chars > 0 else 0
        
        self.lbl_speed.config(text=f"速度: {wpm:.1f} WPM")
        self.lbl_accuracy.config(text=f"正确率: {accuracy:.2f}%")

    def update_timer(self):
        """更新倒计时"""
        if self.is_running:
            remaining = 60 - (time.time() - self.start_time)
            self.lbl_time.config(text=f"剩余时间: {remaining:.1f}秒")
            
            if remaining <= 0:
                self.end_game()
            else:
                self.window.after(100, self.update_timer)

    def end_game(self):
        """结束游戏"""
        self.is_running = False
        self.entry_input.config(state='disabled')
        elapsed_time = time.time() - self.start_time
        
        # 计算最终数据
        wpm = (self.correct_chars / 5) / (elapsed_time / 60)
        accuracy = (self.correct_chars / self.total_chars * 100) if self.total_chars > 0 else 0
        
        # 显示结果
        messagebox.showinfo(
            "游戏结束",
            f"""最终统计:
            - 正确字符: {self.correct_chars}
            - 错误字符: {self.total_chars - self.correct_chars}
            - 打字速度: {wpm:.1f} WPM
            - 正确率: {accuracy:.2f}%"""
        )
        self.btn_start.config(text="开始游戏 (Enter)", bg="#2ecc71")

if __name__ == "__main__":
    TypingSpeedTest()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Thomas

谢谢您的打赏,我将会更好创作。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值