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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QG0hhvFR-1636186979788)(https://upload-images.jianshu.io/upload_images/25002343-d7f5c51600aa5072.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

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 tkinterfrom tkinter import *from tkinter.messagebox import * root=tkinter.Tk()
root.title('Python智力问答游戏')root.geometry("500x200")
r=tkinter.StringVar()
#创建StringVar对象r.set('E')
#设置初始值为'E',初始没选中k=0score=0timu=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()r
adio3=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()

关注小编,回复关键词:01 获取源码~


本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

Python实现智力问答小游戏 内附代码相关推荐

  1. Appgamekit制作消消乐小游戏(附代码)# 1

    Appgamekit制作消消乐小游戏(附代码)# 1 其实作者我也是刚刚才接触的Appgamekit,而且以前我是学C/C++的,所以我学的东西拿来这里就只有代码的结构思路会清晰一点了.(但是思路其实 ...

  2. python智力问答游戏代码_Python智力问答小游戏

    目录 1.设计思路 2.建立题库 3.答题设计 4.GUI设计 本篇博文将使用Python代码语言简单编写一个轻松益智的小游戏,效果如下所示: 1.设计思路 本项目使用SQLite建立问答题库,每道题 ...

  3. 假期用Python写8个小游戏(附源码)

    假期玩嗨了吧,我给你准备了六个小游戏,有胆子来玩一玩吗?我自己是玩了很多遍的,所以想让大家一起玩,独乐乐不如众乐乐.代码放在下面了,动手操作吧. 1.小恐龙 玩法:上下控制起跳躲避 源码分享: Pyt ...

  4. python简易贪吃蛇小游戏任务书含代码

    目  录 第一章 绪论 1.1 开发的背景 1.2 开发的目的 1.3 开发的意义 1.4 开发工具简介 第二章 需求分析 (1) 利用方向键来改变蛇的运行方向. (2) 在随机的地方产生食物. (3 ...

  5. Java实现愤怒的小鸟小游戏【附代码】

    目录 1. FlappyBird小游戏设计与实现 1.1需求分析 1.2游戏功能设计 1.3 游戏详细设计(具体实现) 1.4部分效果图展示 1.5源代码 1. FlappyBird小游戏设计与实现 ...

  6. 几个 Python“小伎俩” | 内附代码

    来源 | NewBeeNLP(ID:gh_627b00c8dbd0) 责编 | 夕颜 写在前面 今天,我们一起回顾下Python Cookbook,全书是以问答对的形式展开,这是我很久之前看的笔记.C ...

  7. 用Python做雷霆战机小游戏【附素材+源码】

    前言 嗨嗨,我是小圆 最近很多朋友都在问我要一些游戏的代码 所以这篇文章就出来了 [想一键获取素材和源码的,点击文章末尾名片] 模块准备 import pygame, os import time i ...

  8. python实现掷骰子小游戏(附源码 简单易懂)

    需要图片集可以点赞关注收藏后评论区留言~~~ 如图 随机生成1-6之间的数字 按回车键就会自动生成 代码如下 import cv2 import time import random inx=inpu ...

  9. Appgamekit制作消消乐小游戏(附代码)# 4

    废话 突然,在一个弥漫着病毒的温馨下午,我,Xresking,放下了手中的手柄,电脑屏幕上大大的红色楷体死字像是黑暗中的血月,随着苇明弦一郎的刀光,切向我的Zn头.我惊讶的发现,我摸鱼好久了- 我闲了 ...

最新文章

  1. golang中数组和slice作为参数的区别
  2. a commit git 参数是什么意思_深入理解Git - 一切皆commit
  3. EIGENVECTORS FROM EIGENVALUES论文结论举例验证
  4. 查看服务器物理内存大小,如何看服务器的物理内存大小
  5. centos7 hadoop3.0.1安装
  6. linux中python安装_linux环境下的python安装过程图解(含setuptools)
  7. mysql远程访问错误
  8. 鸿蒙os来了,华为操作系统“鸿蒙OS”来了!
  9. NodeJS学习笔记之express
  10. C++模板实现的通用工厂方法模式
  11. FCPX内置音效库汉化版
  12. m6000查看端口状态_Linux查看端口使用状态、关闭端口方法
  13. 内点法外点法matlab代码,分享:惩罚函数法(内点法、外点法)求解约束优化问题最优值...
  14. 《现代操作系统(中文第四版)》课后习题答案 第二章 进程与线程
  15. Java FTP 下载文件和文件夹
  16. 如何开发Alexa Intent skill
  17. 一种通用的Qt数据库接口操作方法
  18. VMware esxi6.7虚拟机安装教程
  19. 酷睿i7 1260p怎么样 i71260p参数
  20. python捕捉warning_Pytest官方教程-10-捕获警告信息

热门文章

  1. 5.4 堆溢出利用(上)——DWORD SHOOT
  2. 猜成语游戏c语言程序设计教程课后答案,《C语言基础》习题及答案.doc
  3. hardmard积 用什么符号表示_矩阵的Hadamard积与符号模式
  4. 在C语言中如何处理字符串,C语言中字符串的处理方式
  5. 【Drools规则引擎】基础入门案例五(Kie-Server+WorkBench)
  6. hybris impex 那点事
  7. OpenWRT配置 -- 修改用户名、密码以及网页用户名的修改
  8. ES 文档的基本操作
  9. 报错:SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder“. SLF4J: Defaulting to no-operation
  10. 北京理工大学 c语言期末试题,北京理工大学C语言期末模拟试题.docx