# 一个python的TK猜成语游戏 **Repository Path**: TianYuZhiYou/guess_the_chengyu ## Basic Information - **Project Name**: 一个python的TK猜成语游戏 - **Description**: 本游戏使用到的python模块有tkinter,random,hashlib;整个游戏分为四个窗口,一个进入游戏的窗口、一个选关窗口、一个游戏进行窗口和一个游戏结束的窗口。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2017-11-07 - **Last Updated**: 2021-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一个python的TK猜成语游戏 - 本游戏使用到的python模块有tkinter,random,hashlib;整个游戏分为四个窗口,一个进入游戏的窗口、一个选关窗口、一个游戏进行窗口和一个游戏结束的窗口。 1. **setting模块:游戏所有的相关参数的设置。** - dict_key: 该字典设置游戏点击选择答案的按钮,格式为{关数:32个文字} 如: ``` dict_key = {"30":"九一大底走闻鸡一花生篇流观起交捞有织舞下容马爱千死恨无乃律耻月海"} # 設置第30关的文字 ``` 设置方法: 在setting模块的if __name__=="__main__"中,如下代码: ``` str2 = "" results = rm.sample(str2, len(str2)) results = "".join(results) print(results) # 得到乱序后的字列 ``` 将需要打乱顺序的成语赋值给str2,生成result添加到字典中去。 - dict_result:设置问题的答案的区域,格式为{关数:加密后的答案},如果新增加关数,如dict_key一样的设置方法,答案的加密: ``` str1 = "" # 用来生成加密的答案 md5_answer = hb.md5(str1.encode("utf-8")).hexdigest() print(md5_answer) # 得到加密的答案 ``` 将答案赋值给str1,运行后生成密文加入到字典里去。 - dict_problems:游戏问题的文本,是一个字典,格式和以上设置完全一样,需要注意的是问题不能过长,最好不要超过20个字。 - list_answer:答案提示列表,按顺序提醒每一关的答案的第一个字符。 2. **mygame.py模块:** 该模块定义了四个类,ButtonSelect,ButtonNew,GameWindow,AllButton. - ButtonSelect:该类定义选关的按钮,点击后能跳转到相应的关卡。 - ButtonNew:该类定义一个选择按钮,该按钮点击后可以将自身代表的字符发送个答案处理逻辑进行验证。 - GameWindow:该类定义了所有的UI界面设计、相关的处理逻辑。 - AllButton:该类定义系统的全局开关,用来进行解耦操作。 3. **main.py模块** 游戏的入口,规定了游戏运行的方法和更新的方法。 - 游戏运行:在终端下进入游戏目录,输入: ``` python main.py start # 游戏运行 ``` - 游戏更新还原为最初的状态,在终端下输入: ``` python main.py start ``` ## 版本信息 **v1.1版本** - 缺陷或bug: 1. 点击按钮将答案输入显示,每个答案点击按钮都通过了自定义一个类来实现,原因是无法找到简单的方法记录回调函数的传参,不知大家有没有好的建议;同理选关按钮也是一样。 - 修改记录: 1. 增加了选关界面; 2. 修改了答案和问题等数据资源的配置方式,拆分为3个字典; 3. 修改了四个界面的控制方式,集中到一个函数中进行管理。 **v1.2版本** - 修改记录: 1. 增加了直接输入答案的功能,不一定要点击按钮。