Python实现智力问答小游戏 内附代码
本篇文章将使用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实现智力问答小游戏 内附代码相关推荐
- Appgamekit制作消消乐小游戏(附代码)# 1
Appgamekit制作消消乐小游戏(附代码)# 1 其实作者我也是刚刚才接触的Appgamekit,而且以前我是学C/C++的,所以我学的东西拿来这里就只有代码的结构思路会清晰一点了.(但是思路其实 ...
- python智力问答游戏代码_Python智力问答小游戏
目录 1.设计思路 2.建立题库 3.答题设计 4.GUI设计 本篇博文将使用Python代码语言简单编写一个轻松益智的小游戏,效果如下所示: 1.设计思路 本项目使用SQLite建立问答题库,每道题 ...
- 假期用Python写8个小游戏(附源码)
假期玩嗨了吧,我给你准备了六个小游戏,有胆子来玩一玩吗?我自己是玩了很多遍的,所以想让大家一起玩,独乐乐不如众乐乐.代码放在下面了,动手操作吧. 1.小恐龙 玩法:上下控制起跳躲避 源码分享: Pyt ...
- python简易贪吃蛇小游戏任务书含代码
目 录 第一章 绪论 1.1 开发的背景 1.2 开发的目的 1.3 开发的意义 1.4 开发工具简介 第二章 需求分析 (1) 利用方向键来改变蛇的运行方向. (2) 在随机的地方产生食物. (3 ...
- Java实现愤怒的小鸟小游戏【附代码】
目录 1. FlappyBird小游戏设计与实现 1.1需求分析 1.2游戏功能设计 1.3 游戏详细设计(具体实现) 1.4部分效果图展示 1.5源代码 1. FlappyBird小游戏设计与实现 ...
- 几个 Python“小伎俩” | 内附代码
来源 | NewBeeNLP(ID:gh_627b00c8dbd0) 责编 | 夕颜 写在前面 今天,我们一起回顾下Python Cookbook,全书是以问答对的形式展开,这是我很久之前看的笔记.C ...
- 用Python做雷霆战机小游戏【附素材+源码】
前言 嗨嗨,我是小圆 最近很多朋友都在问我要一些游戏的代码 所以这篇文章就出来了 [想一键获取素材和源码的,点击文章末尾名片] 模块准备 import pygame, os import time i ...
- python实现掷骰子小游戏(附源码 简单易懂)
需要图片集可以点赞关注收藏后评论区留言~~~ 如图 随机生成1-6之间的数字 按回车键就会自动生成 代码如下 import cv2 import time import random inx=inpu ...
- Appgamekit制作消消乐小游戏(附代码)# 4
废话 突然,在一个弥漫着病毒的温馨下午,我,Xresking,放下了手中的手柄,电脑屏幕上大大的红色楷体死字像是黑暗中的血月,随着苇明弦一郎的刀光,切向我的Zn头.我惊讶的发现,我摸鱼好久了- 我闲了 ...
最新文章
- golang中数组和slice作为参数的区别
- a commit git 参数是什么意思_深入理解Git - 一切皆commit
- EIGENVECTORS FROM EIGENVALUES论文结论举例验证
- 查看服务器物理内存大小,如何看服务器的物理内存大小
- centos7 hadoop3.0.1安装
- linux中python安装_linux环境下的python安装过程图解(含setuptools)
- mysql远程访问错误
- 鸿蒙os来了,华为操作系统“鸿蒙OS”来了!
- NodeJS学习笔记之express
- C++模板实现的通用工厂方法模式
- FCPX内置音效库汉化版
- m6000查看端口状态_Linux查看端口使用状态、关闭端口方法
- 内点法外点法matlab代码,分享:惩罚函数法(内点法、外点法)求解约束优化问题最优值...
- 《现代操作系统(中文第四版)》课后习题答案 第二章 进程与线程
- Java FTP 下载文件和文件夹
- 如何开发Alexa Intent skill
- 一种通用的Qt数据库接口操作方法
- VMware esxi6.7虚拟机安装教程
- 酷睿i7 1260p怎么样 i71260p参数
- python捕捉warning_Pytest官方教程-10-捕获警告信息
热门文章
- 5.4 堆溢出利用(上)——DWORD SHOOT
- 猜成语游戏c语言程序设计教程课后答案,《C语言基础》习题及答案.doc
- hardmard积 用什么符号表示_矩阵的Hadamard积与符号模式
- 在C语言中如何处理字符串,C语言中字符串的处理方式
- 【Drools规则引擎】基础入门案例五(Kie-Server+WorkBench)
- hybris impex 那点事
- OpenWRT配置 -- 修改用户名、密码以及网页用户名的修改
- ES 文档的基本操作
- 报错:SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder“. SLF4J: Defaulting to no-operation
- 北京理工大学 c语言期末试题,北京理工大学C语言期末模拟试题.docx