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调用C/C++动态链接库的方法详解
Jul 22 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
通过python爬虫赚钱的方法
Jan 29 Python
Python元组知识点总结
Feb 18 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
Python 如何批量更新已安装的库
May 26 Python
python interpolate插值实例
Jul 06 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
教你使用pyinstaller打包Python教程
May 27 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
PHP中的加密功能
2006/10/09 PHP
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
Python聊天室实例程序分享
2016/01/05 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
生产主管岗位职责
2013/11/10 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
婚内房产协议书范本
2014/10/02 职场文书
城管年度个人总结
2015/02/28 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
主题班会开场白
2015/06/01 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL