Python语言编写智力问答小游戏功能


Posted in Python onOctober 13, 2020

本篇博文将使用Python代码语言简单编写一个轻松益智的小游戏,效果如下所示:

Python语言编写智力问答小游戏功能

1、设计思路

本项目使用SQLite建立问答题库,每道题包括4个选项答案(3个正确答案,1个错误答案)。每道题都有一定分值,根据用户的答题效率,自动计算出最后的答题成绩。

Python语言编写智力问答小游戏功能

2、建立题库

使用SQLite数据库建立题库,本质上就是SQL语句,创建exam表,实现代码如下所示:

#导入SQLite驱动
import sqlite3 
# 连接到SQLite数据库,数据库文件是test.db
# 如果文件不存在,会自动在当前目录创建:
conn = sqlite3.connect('test2.db')
cursor = conn.cursor()# 创建一个Cursor:
#cursor.execute("delete from exam")
# 执行一条SQL语句,创建exam表:
cursor.execute('CREATE TABLE [exam] ([question] VARCHAR(80) NULL,[Answer_A] VARCHAR(1) NULL,[Answer_B] VARCHAR(1) NULL,[Answer_C] VARCHAR(1) NULL,[Answer_D] VARCHAR(1) NULL,[right_Answer] VARCHAR(1) NULL)')
# 继续执行一条SQL语句,插入一条记录:
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('哈雷慧星的平均周期为', '54年', '56年', '73年', '83年', 'C')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('夜郎自大中“夜郎”指的是现在哪个地方?', '贵州', '云南', '广西', '福建', 'A')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('在中国历史上是谁发明了麻药', '孙思邈', '华佗', '张仲景', '扁鹊', 'B')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('京剧中花旦是指', '年轻男子', '年轻女子', '年长男子', '年长女子', 'B')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('篮球比赛每队几人?', '4', '5', '6', '7', 'B')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('在天愿作比翼鸟,在地愿为连理枝。讲述的是谁的爱情故事?', '焦钟卿和刘兰芝', '梁山伯与祝英台', '崔莺莺和张生', '杨贵妃和唐明皇', 'D')")
# 通过rowcount获得插入的行数:
print(cursor.rowcount) #1
# 关闭Cursor:
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()

3、答题设计

从建立好的题库数据库中读取试题信息,callNext()函数实现判断用户选择答案的正误,正确则加10分,错误不加分。并判断用户是否做完,如果没做完则将下一题的题目信息显示到timu标签,而4个选项显示到radio1~ radio4这4个单选按钮上;callResult()函数在GUI上显示此时答题得分,实现代码如下所示:

conn = sqlite3.connect('test2.db')
cursor = conn.cursor()
# 执行查询语句:
cursor.execute('select * from exam')
# 获得查询结果集:
values = cursor.fetchall()
print(values)
 
print('记录数:',len(values))
for k in range(len(values)):
 print(k,values[k][0])
cursor.close()
conn.close()
 
def callNext():
 global k
 global score
 useranswer=r.get()
 print (r.get())      #获取被选中单选按钮变量值
 if useranswer==values[k][5]:
  showinfo("恭喜","恭喜你对了!")
  score+=10
 else:
  showinfo("遗憾","遗憾你错了!") 
 k=k+1
 if k>=len(values):
  showinfo("提示","题目做完了")
  return
 #显示下一题
 timu["text"]=values[k][0]
 radio1["text"]=values[k][1]
 radio2["text"]=values[k][2]
 radio3["text"]=values[k][3]
 radio4["text"]=values[k][4]
 r.set('E')
 
def callResult():
 showinfo("你的得分",str(score))

4、GUI设计

最后设计GUI,添加两个Frame组件组件,实现选择答案、确认和查看结果功能,实现代码如下所示:

import tkinter
from tkinter import *
from tkinter.messagebox import *
 
root=tkinter.Tk()
root.title('Python智力问答游戏')
root.geometry("500x200")
r=tkinter.StringVar()						#创建StringVar对象
r.set('E') 							#设置初始值为'E',初始没选中
k=0
score=0
timu=tkinter.Label(root,text=values[k][0])      #题目
timu.pack()
f1 = Frame(root)						#创建第1个Frame组件
f1.pack()
radio1=tkinter.Radiobutton(f1,variable=r,value='A',text=values[k][1])
radio1.pack()
radio2=tkinter.Radiobutton(f1,variable=r,value='B',text=values[k][2])
radio2.pack()
radio3=tkinter.Radiobutton(f1,variable=r,value='C',text=values[k][3])
radio3.pack()
radio4=tkinter.Radiobutton(f1,variable=r,value='D',text=values[k][4])
radio4.pack()
f2 = Frame(root)						#创建第2个Frame组件
f2.pack()
Button(f2,text = '下一题',command=callNext).pack(side = LEFT)
Button(f2,text = '结 果',command=callResult).pack(side = LEFT)
root.mainloop()

到此这篇关于Python语言编写智力问答小游戏功能的文章就介绍到这了,更多相关Python 智力问答小游戏内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
Python实现导出数据生成excel报表的方法示例
Jul 12 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
python实现飞机大战
Sep 11 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
python argparse传入布尔参数false不生效的解决
Apr 20 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
python程序如何进行保存
Jul 03 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
OpenCV全景图像拼接的实现示例
Jun 05 Python
Django Auth用户认证组件实现代码
Oct 13 #Python
通过代码实例了解Python3编程技巧
Oct 13 #Python
Python SQLAlchemy库的使用方法
Oct 13 #Python
Pycharm github配置实现过程图解
Oct 13 #Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 #Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 #Python
python关于倒排列的知识点总结
Oct 13 #Python
You might like
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
prototype 学习笔记整理
2009/07/17 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
node后端服务保活的实现
2019/11/10 Javascript
JS实现图片切换特效
2019/12/23 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
详解Python的单元测试
2015/04/28 Python
实时获取Python的print输出流方法
2019/01/07 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
pygame实现非图片按钮效果
2019/10/29 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Python实现把类当做字典来访问
2019/12/16 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
环保建议书100字
2014/05/14 职场文书
技术股东合作协议书
2014/12/02 职场文书