Python语言编写智力问答小游戏功能

 更新时间:2020年10月13日 09:52:16   作者:不脱发的程序猿  
这篇文章主要介绍了使用Python代码语言简单编写一个轻松益智的小游戏,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

本篇博文将使用Python代码语言简单编写一个轻松益智的小游戏,效果如下所示:

1、设计思路

本项目使用SQLite建立问答题库,每道题包括4个选项答案(3个正确答案,1个错误答案)。每道题都有一定分值,根据用户的答题效率,自动计算出最后的答题成绩。

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中的random.choices函数用法详解

    Python中的random.choices函数用法详解

    这篇文章主要给大家介绍了关于Python中random.choices函数用法的相关资料,random.random() 的功能是随机返回一个 0-1范围内的浮点数,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Python自动化办公之文件整理脚本分享

    Python自动化办公之文件整理脚本分享

    这篇文章主要为大家分享了一个Python自动化办公脚本,可以实现文件整理,这是一个很有用的技能,可以帮助你管理你的电脑上的各种文件,需要的可以收藏一下
    2023-08-08
  • Python flask框架实现浏览器点击自定义跳转页面

    Python flask框架实现浏览器点击自定义跳转页面

    这篇文章主要介绍了Python flask框架实现浏览器点击自定义跳转页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python使用matplotlib绘图时图例显示问题的解决

    python使用matplotlib绘图时图例显示问题的解决

    matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。下面这篇文章主要给大家介绍了在python使用matplotlib绘图时图例显示问题的解决方法,需要的朋友可以参考学习,下面来一起看看吧。
    2017-04-04
  • python异步编程之asyncio低阶API的使用详解

    python异步编程之asyncio低阶API的使用详解

    asyncio中低阶API的种类很多,涉及到开发的5个方面,这篇文章主要为大家详细介绍了这些低阶API的具体使用,感兴趣的小伙伴可以学习一下
    2024-01-01
  • PyHacker实现网站后台扫描器编写指南

    PyHacker实现网站后台扫描器编写指南

    这篇文章主要为大家介绍了PyHacker实现网站后台扫描器编写指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • matplotlib.pyplot.plot()参数使用详解

    matplotlib.pyplot.plot()参数使用详解

    这篇文章主要介绍了matplotlib.pyplot.plot()参数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Tornado服务器中绑定域名、虚拟主机的方法

    Tornado服务器中绑定域名、虚拟主机的方法

    这篇文章主要介绍了Tornado服务器中绑定域名、虚拟主机的方法,本人查看了Tornado才得的方法,特此分享,需要的朋友可以参考下
    2014-08-08
  • Python多线程使用方法详细讲解

    Python多线程使用方法详细讲解

    这篇文章主要介绍了Python中的多线程实例,一个CPU,将时间切成一片一片的,CPU轮转着去处理一件一件的事情,到了规定的时间片就处理下一件事情,更多的相关内容需要的小伙伴可以参考下面文章详细
    2022-10-10
  • 浅谈Python中的字符串

    浅谈Python中的字符串

    这篇文章主要介绍了Python中的字符串相关知识,文中讲解的非常细致,代码帮助大家更好的理解,感兴趣的朋友可以参考下
    2020-06-06

最新评论