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实现七彩蟒蛇绘制实例代码
Jan 16 Python
python删除文本中行数标签的方法
May 31 Python
python人民币小写转大写辅助工具
Jun 20 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
python 安全地删除列表元素的方法
Mar 16 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
smarty自定义函数用法示例
2016/05/20 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
AngularJS实现星星等级评分功能
2016/09/24 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python异常处理操作实例详解
2018/08/28 Python
python中退出多层循环的方法
2018/11/27 Python
python自动生成model文件过程详解
2019/11/02 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
班级学雷锋活动总结
2014/06/26 职场文书
放弃继承权公证书
2015/01/23 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android