python游戏开发步骤_详解Python GUI版24点游戏制作过程
本文作者為浙江溫州永嘉縣教師發展中心應根球老師,電子郵箱:ycicada@163.com。
傳統用撲克牌算24點游戲用于小學低中段學生訓練四則運算效果不錯,也可用于防止老年癡呆。本項目模擬傳統撲克24點算法,由計算機發4張牌,人工在下方輸入算式,算式只能用加減乘除、左右括號和顯示的4個數字(各個數字均用一次,且只能用一次),按“驗證結果”即可判定你的輸入是否正確有效;完成后,或無解題,可按“重新發牌”來繼續游戲。本項目主要由tkinter界面、隨機發牌、驗證結果三大部分構成。游戲運行結果如圖所示:
一、界面生成:
利用Page 4.7 for Python這款可視化tkinter GUI界面生成工具來布置界面,放Label1~Label4四個標簽組件用于顯示撲克牌,撲克牌用c1~c13.jpg(草花)、f1~f13.jpg(方塊)、h1~h13.jpg(黑桃)和r1~r13.jpg(紅桃)這些JPG文件來表達,放在image文件夾下。由于tkinter不能支持JPG文件,這里用了pillow庫實現。下面這段代碼實現顯示一張紅桃A:
from PIL import Image as pImage
from PIL import ImageTk as pImageTk
from tkinter import *
root=Tk()
Label1 = Label(root) #建立標簽
im1=pImage.open(".\\image\\r1.jpg") #打開圖片文件
p1=pImageTk.PhotoImage(im1) #建立與tkinter適用的接口
Label1['image']=p1 #把圖片放入標簽
Label1.image=p1 #這句話不可不放,否則影響及時更新
Label1.pack()
除了Label組件外,還放入一個單行文本框(Text Var設置為myEval),驗證結果按鈕(text屬性設置為'''驗證結果'',command設置為judge),重新發牌按鈕(text屬性設置為'''重新發牌''',command設置為again)。界面設計完成后,使用菜單生成Python程序game24dian.py和相關的支持程序game24dian_support.py。
二、隨機發牌
用Idle打開game24dian_support.py文件,修改完成again()函數。先隨機選四個花色,再隨機找四個數字,以組合成四張牌。直接上源碼:
def again():
'''發牌,從四種花色中抽1-10張牌中的4種'''
global huase,shuzi
#初始化表達式
myEval.set("")
#選花色
huase=[random.choice("rhfc") for i in range(4)]
#選牌
shuzi=[random.randint(1,10) for i in range(4)]
#組合生成四張牌的文件名,要用PIL庫才能在tkinter中使用jpg文件
im1=pImage.open(".\\image\\" + huase[0] + str(shuzi[0]) + ".jpg")
im2=pImage.open(".\\image\\" + huase[1] + str(shuzi[1]) + ".jpg")
im3=pImage.open(".\\image\\" + huase[2] + str(shuzi[2]) + ".jpg")
im4=pImage.open(".\\image\\" + huase[3] + str(shuzi[3]) + ".jpg")
p1=pImageTk.PhotoImage(im1)
p2=pImageTk.PhotoImage(im2)
p3=pImageTk.PhotoImage(im3)
p4=pImageTk.PhotoImage(im4)
#在標簽中設置圖片
w.Label1['image'], w.Label2['image'], w.Label3['image'], w.Label4['image'] = p1, p2, p3, p4
w.Label1.image, w.Label2.image, w.Label3.image, w.Label4.image = p1, p2, p3, p4
sys.stdout.flush()
三、驗證結果
用Idle打開game24dian_support.py文件,完成judge()函數。先判斷輸入的表達式值是否為24,如果是抽取表達式中的數字并排序,與發牌時生成的有序數字序列比較,完全相等,則說明用戶輸入正確,否則提示不正確。直接上源碼:
def judge():
'''判斷計算輸入是否正確'''
if myEval.get() and eval(myEval.get())==24:
#對輸入的表達式中抽取數并排序
lst1 = re.findall('\d', myEval.get())
lst1 = sorted(map(int, lst1))
#對生成的數字列表進行排序
lst2=sorted(shuzi)
#比較列表,進行判斷
if lst1==lst2:
messagebox.showinfo("祝賀你!", myEval.get()+"=24,\n你算對了,真了不起!")
else:
messagebox.showinfo("注意:", "每個數字都要用,且只能用一次。")
else:
messagebox.showinfo("不正確:", "請輸入正確的表達式,使得計算結果為24。")
sys.stdout.flush()
長按下面的二維碼關注本公眾號,歡迎更多讀者和Python愛好者投稿!
總結
以上是生活随笔為你收集整理的python游戏开发步骤_详解Python GUI版24点游戏制作过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小新air13与14区别
- 下一篇: 谷歌慌了,想发论文得审批,优先开发产品: