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暴力破解zip文件口令的方法详解
Dec 21 Python
Python AES加密实例解析
Jan 18 Python
python Pandas 读取txt表格的实例
Apr 29 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
python之消除前缀重命名的方法
Oct 21 Python
Python常用的json标准库
Feb 19 Python
python 定时器,轮询定时器的实例
Feb 20 Python
对Django中内置的User模型实例详解
Aug 16 Python
Django操作session 的方法
Mar 09 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
你需要学会的8个Python列表技巧
Jun 24 Python
python调用摄像头的示例代码
Sep 28 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通过COM类调用组件的实现代码
2012/01/11 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
php fread函数使用方法总结
2019/05/28 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
jQuery select控制插件
2009/08/17 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
javascript定时器完整实例
2015/02/10 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python中对列表排序实例
2015/01/04 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
python with (as)语句实例详解
2020/02/04 Python
Python修改DBF文件指定列
2020/12/19 Python
python中time tzset()函数实例用法
2021/02/18 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
青年创业培训欢迎词
2014/01/08 职场文书
小学语文课后反思精选
2014/04/25 职场文书
科学育儿宣传标语
2014/10/08 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书