您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關使用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語言實現智力問答小游戲功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。