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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python简明入门教程
Aug 04 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
深入浅析Python的类
Jun 22 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
在Python中表示一个对象的方法
Jun 25 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
python 实现图片裁剪小工具
Feb 02 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
PHP类的使用 实例代码讲解
2009/12/28 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
php程序内部post数据的方法
2015/03/31 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
angular ng-click防止重复提交实例
2017/06/16 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
Python通过命令开启http.server服务器的方法
2017/11/04 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
python实现静态web服务器
2019/09/03 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
几个Shell Script面试题
2012/08/31 面试题
化工工艺专业求职信
2013/09/22 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
建筑安全生产责任书
2014/07/22 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
邀请函怎么写
2015/01/30 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android