如何用Python实现网红儿童计算器游戏

开发 前端
要使用图形用户界面(GUI)实现这个“儿童计算器”游戏,我们可以使用Python中的Tkinter库,它是Python的标准GUI库,非常适合创建简单的桌面应用程序。

要使用图形用户界面(GUI)实现这个“儿童计算器”游戏,我们可以使用Python中的Tkinter库,它是Python的标准GUI库,非常适合创建简单的桌面应用程序。

import tkinter as tk
from tkinter import messagebox
import random


class CalculatorGame(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("儿童计算器游戏")
        self.geometry("400x250")

        self.operation_var = tk.StringVar(value="+")

        self.create_widgets()
        self.set_new_question()  # 确保在UI构建完成后设置第一次题目

    def set_new_question(self):
        op = self.operation_var.get()
        self.num1 = random.randint(1, 10)
        if op in ['+', '-']:
            self.num2 = random.randint(1, 10)
        elif op == '*':
            self.num2 = random.randint(1, 10)
        else:  # 除法
            self.num2 = random.choice([i for i in range(1, self.num1 + 1) if self.num1 % i == 0])
        self.correct_answer = self.calculate_correct_answer(op)
        self.update_question_label()

    def calculate_correct_answer(self, op):
        if op == '+':
            return self.num1 + self.num2
        elif op == '-':
            return self.num1 - self.num2
        elif op == '*':
            return self.num1 * self.num2
        else:  # 除法
            return self.num1 // self.num2

    def update_question_label(self):
        self.question_label.config(text=f"{self.num1} {self.operation_var.get()} {self.num2} = ?")

    def create_widgets(self):
        self.question_label = tk.Label(self, text="", font=("Arial", 16))
        self.question_label.pack(pady=20)

        self.operation_var.trace('w', lambda *args: self.set_new_question())
        self.operation_menu = tk.OptionMenu(self, self.operation_var, "+", "-", "*", "/")
        self.operation_menu.pack(pady=10)

        self.answer_entry = tk.Entry(self)
        self.answer_entry.pack(pady=10)

        self.submit_button = tk.Button(self, text="提交答案", command=self.check_answer)
        self.submit_button.pack(pady=10)

    def check_answer(self):
        user_answer = self.answer_entry.get()
        try:
            user_answer = int(user_answer)
            if user_answer == self.correct_answer:
                messagebox.showinfo("正确", "恭喜你,答对了!")
            else:
                feedback_msg = f"很遗憾,答错了。正确答案是{self.correct_answer}。"
                messagebox.showerror("错误", feedback_msg)
        except ValueError:
            messagebox.showerror("错误", "请输入一个有效的数字。")
        finally:
            self.answer_entry.delete(0, tk.END)
            self.set_new_question()


if __name__ == "__main__":
    app = CalculatorGame()
    app.mainloop()

实现逻辑:

导入库

import tkinter as tk
from tkinter import messagebox
import random
tkinter 是 Python 的标准 GUI 库,用于创建图形用户界面。
messagebox 是 tkinter 的一个子模块,用于弹出消息对话框,比如错误、警告或确认信息。
random 库用于生成随机数,以便在游戏里随机选择数学运算的数值。

类定义:CalculatorGame 继承自 tk.Tk

class CalculatorGame(tk.Tk):
定义了一个名为 CalculatorGame 的类,继承自 tkinter 的 Tk 类,意味着它将是一个具有图形界面的应用程序。

初始化方法:init

def __init__(self):
    super().__init__()
    self.title("儿童计算器游戏")
    self.geometry("400x250")
    self.operation_var = tk.StringVar(value="+")
    self.create_widgets()
    self.set_new_question()
调用父类的初始化方法,设置窗口标题和大小。
定义一个 StringVar 变量 operation_var 来存储当前选择的运算符,默认为 "+"。
调用 create_widgets 方法来构建 UI 界面。
调用 set_new_question 方法来初始化第一道题目。

set_new_question 方法

def set_new_question(self):
    # 根据运算符生成随机数并计算正确答案,更新题目显示
这个方法根据当前选择的运算符生成两个随机数(确保除法时能整除),计算出正确答案,并调用 update_question_label 更新显示的题目。
calculate_correct_answer 方法
def calculate_correct_answer(self, op):
    # 计算当前题目答案
根据运算符计算并返回当前题目的正确答案。

update_question_label 方法

def update_question_label(self):
    # 更新题目标签的文本内容
更新显示题目和数值的标签,使其反映出当前的数学问题。

create_widgets 方法

def create_widgets(self):
    # 创建所有UI组件
构建游戏的UI元素,包括:
问题标签 (question_label) 显示当前的数学问题。
运算符选择菜单 (operation_menu) 允许用户选择运算类型。
输入框 (answer_entry) 供用户输入答案。
提交按钮 (submit_button) 用户点击提交答案。

check_answer 方法

def check_answer(self):
    # 检查用户输入的答案并给出反馈
处理用户提交的答案:
尝试将输入转换为整数并比较与正确答案。
显示正确的消息框或错误提示,并在任何情况下清空输入框准备下一次输入。
提交答案后,立即生成新题目。

主程序执行

if __name__ == "__main__":
    app = CalculatorGame()
    app.mainloop()
当脚本直接运行时,创建 CalculatorGame 类的实例,并启动 Tkinter 的事件循环,即显示图形界面并等待用户交互。
责任编辑:华轩 来源: 测试开发学习交流
相关推荐

2022-07-11 16:19:22

css属性鸿蒙

2020-08-12 08:22:37

Python开发个税

2011-09-16 14:13:15

Windows7计算器

2024-01-31 08:33:06

C++编程计算器

2016-12-12 13:41:37

iOS简易加法开发

2020-05-09 10:38:31

Python透视表数据

2020-10-19 16:40:18

LinuxWindows计算器

2015-07-09 09:49:39

PHPSocket服务器

2015-08-05 09:30:32

C#下拉式计算器

2012-06-05 09:13:50

Facebook儿童游戏

2017-09-05 16:43:47

Electron桌面计算器

2009-02-05 14:17:37

FTP服务器Java

2020-09-25 08:40:02

Python开发网络

2013-03-04 10:22:30

Python

2023-12-30 13:33:36

Python解析器JSON

2022-09-09 00:25:48

Python工具安全

2022-09-08 11:35:45

Python表达式函数

2022-09-11 15:02:22

机器学习算法感知器

2022-03-10 14:57:35

ArkUIets项目开发鸿蒙

2023-12-25 15:28:57

Python工具pywebio
点赞
收藏

51CTO技术栈公众号