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装饰器 免去调用父类构造函数的麻烦
May 18 Python
在Python中操作时间之tzset()方法的使用教程
May 22 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
python numpy 反转 reverse示例
Dec 04 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 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图形操作之Jpgraph学习笔记
2015/12/25 PHP
php实用代码片段整理
2016/11/12 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
js使用递归解析xml
2014/12/12 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python实现DDos攻击实例详解
2019/02/02 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
遗失说明具结保证书
2015/02/26 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL