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实现的udp协议Server和Client代码实例
Jun 04 Python
python中日期和时间格式化输出的方法小结
Mar 19 Python
python获取元素在数组中索引号的方法
Jul 15 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
Python基于traceback模块获取异常信息
Jul 23 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 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
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
javascript Array.remove() 数组删除
2009/08/06 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
js实现小时钟效果
2020/03/25 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
Python中的tuple元组详细介绍
2015/02/02 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
django主动抛出403异常的方法详解
2019/01/04 Python
python图像处理入门(一)
2019/04/04 Python
Python flask框架post接口调用示例
2019/07/03 Python
python 求10个数的平均数实例
2019/12/16 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python实现查找所有程序的安装信息
2020/02/18 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
数据库方面面试题
2012/04/22 面试题
物流仓储实习自我鉴定
2013/09/25 职场文书
给排水工程师岗位职责
2013/11/21 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
法人委托书范本
2014/04/04 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
服务承诺书怎么写
2014/05/24 职场文书
小学亲子活动总结
2014/07/01 职场文书
离职报告范文
2014/11/04 职场文书