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二分查找详解
Sep 13 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
windows下python安装pip图文教程
May 25 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
python lambda表达式(匿名函数)写法解析
Sep 16 Python
Django 自定义分页器的实现代码
Nov 24 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
new_zeros() pytorch版本的转换方式
Feb 18 Python
使用pycharm运行flask应用程序的详细教程
Jun 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
PHP实现获取域名的方法小结
2014/11/05 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
Canvas实现微信红包照片效果
2018/08/21 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
Python splitlines使用技巧
2008/09/06 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
python采集百度百科的方法
2015/06/05 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
python实现感知器
2017/12/19 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
extern是什么意思
2016/03/10 面试题
自荐信怎么写呢?
2013/12/09 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
班风口号
2014/06/18 职场文书
党员剖析材料范文
2014/12/18 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书