本篇博文将使用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()
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】