版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗流程及實驗效果(1)定義四個全局變量(2)定義一個列表存放這四個變量
(3)定義游戲答案中的運算符號(4)定義便用戶更改四位數字重新開始游戲的函數
(5)打印出游戲的規(guī)則:
“str1="游戲說明:\n在這個游戲中,系統(tǒng)隨機發(fā)四張牌,玩家需運用加減乘除四則運算嘗試構建表達式,使得運算結果為24,每個數字均需用到,點擊“開始”發(fā)牌,點擊“完成”完成游戲,點擊“提示答案”查看一種答案,點擊“重新開始”重新發(fā)牌"”(6)定義顯示框并定義其屬性(7)定義清空函數表達式
(8)定義隨機獲取四個數的函數(9)定義將新字符添加進表達式的函數
(10)定義制造隨機運算法則的函數,為下面函數做準備(11)排除分母為0的情況,輸出100,使該式的值不可能為24
(12)定義函數計算對于一個排好序的列表中的四個數是否有可能出現(xiàn)24,為下面hard函數判斷可能性做準備(13)根據不同方式進行運算,符合條件則將對應的判斷標志改為1,否則記為0(14)定義函數輸出供用戶參考的正確答案(15)將所有可能的方案列出(16)定義一個列表存放對應的數字排序是否可行的標志(17)定義變量用于判斷確認是否有解決方案(18)繪制窗口(19)給窗口命名(20)定義表達式為交互式對象(21)定義顯示框并定義其屬性(22)設置窗口背景顏色、長、寬(23)將Label的內容與display關聯(lián)(24)布置按鈕(25)給出AC鍵大小、位置以及觸發(fā)的操作
(26)給出(鍵大小、位置以及觸發(fā)的操作(27)給出)鍵大小、位置以及觸發(fā)的操作(28)給出-鍵大小、位置以及觸發(fā)的操作(29)完成'(30)提示答案重新開始
顯示界面2.代碼#-*-coding:utf-8-*-
#pleaseinputyourcodehere.
fromtkinterimport*
fromrandomimportrandint
num1=randint(1,10)
num2=randint(1,10)
num3=randint(1,10)
num4=randint(1,10)
list=[]
list.append(num1)
list.append(num2)
list.append(num3)
list.append(num4)
operator=[]
foriinrange(0,3):
operator.append('no')
defchange():
globalnum1
globalnum2
globalnum3
globalnum3
num1=randint(1,10)
num2=randint(1,10)
num3=randint(1,10)
num4=randint(1,10)
globallist
list[0]=num1
list[1]=num2
list[2]=num3
list[3]=num4
get()
str1="游戲說明:\n在這個游戲中,系統(tǒng)隨機發(fā)四張牌,玩家需運用加減乘除四則運算嘗試構建表達式,使得運算結果為24,每個數字均需用到,點擊“開始”發(fā)牌,點擊“完成”完成游戲,點擊“提示答案”查看一種答案,點擊“重新開始”重新發(fā)牌"
root1=Tk()
root1.title("游戲說明")
frametext=Frame(root1,width=400,height=200,bg='green')
pagate(False)
frametext.pack(side=TOP)
t=Text(frametext)
t.pack(expand='yes',fill='both',pady=4)
t.insert(INSERT,str1)
defclear():
display.set("")
defget():
display.set(list)
defnExp(num):
exp=display.get()+num
display.set(exp)
deffunc(a,b,op,s):
if(op==1):
operator[s]='+'
return(a+b)
if(op==2):
operator[s]='-'
return(a-b)
if(op==3):
operator[s]='*'
return(a*b)
if(op==4):
#排除分母為0的情況,輸出100,使該式的值不可能為24
if(b!=0):
operator[s]='/'
return(a/b)
else:return100
defcalculate(list):
get=0
k=1
while(get==0andk<=4):
i=1
while(get==0andi<=4):
j=1
while(get==0andj<=4):
if(func(func(list[0],list[1],i,0),func(list[2],list[3],j,2),k,1)==24):
get=1
return1
j=j+1
i=i+1
k=k+1
if(get==0):return0
defhard():
mylist=[]
ele=[]
elep=[]
fori1inrange(0,4):
fori2inrange(0,4):
fori3inrange(0,4):
fori4inrange(0,4):
ele.append([i1,i2,i3,i4])
foriinrange(0,256):
forminele[i]:
forninele[i]:
if(m==n):elep.append(0)
else:elep.append(1)
if(elep[i]!=0):
mylist.append([list[ele[i][0]],list[ele[i][1]],list[ele[i][2]],list[ele[i][3]]])
possibility=[]
solution=0
i=0
while(i<256andsolution==0):
possibility.append('no')
possibility[i]=calculate(mylist[i])
if(possibility[i]==1):
display.set("提示答案:("+str(mylist[i][0])+str(operator[0])+str(mylist[i][1])+")"+operator[1]+"("+str(mylist[i][2])+operator[2]+str(mylist[i][3])+")")
solution=1
i=i+1
if(solution!=1):
display.set("無解")
defeasy():
exp=display.get()
res=eval(exp)
ifres==24:
foriinrange(len(list)):
ifstr(list[i])inexp:
display.set("True")
else:
display.set("UnvalidValue")
else:
display.set("False")
root=Tk()
root.title('24點游戲')
display=StringVar()
LabelA=Label(root,relief='sunken',borderwidth=4,anchor=SE)
LabelA.configure(background='white',height=4,width=50)
LabelA['textvariable']=displayLabelA.grid(row=0,column=0,columnspan=4)
Button(root,text='AC',width=10,height=3,command=clear).grid(row=1,rowspan=2)
Button(root,text='(',width=10,command=lambda:nExp('(')).grid(row=1,column=1)
Button(root,text=')',width=10,command=lambda:nExp(')')).grid(row=1,column=2)
Button(root,text='-',width=10,height=3,command=lambda:nExp('-')).grid(row=1,rowspan=2,column=3)
Button(root,text='/',width=10,command=lambda:nExp('/')).grid(row=2,column=1)
Button(root,text='*',width=10,command=lambda:nExp('*')).grid(row=2,column=2)
Button(root,text='7',width=10,command=lambda:nExp('7')).grid(row=3)
Button(root,text='8',width=10,command=lambda:nExp('8')).grid(row=3,column=1)
Button(root,text='9',width=10,command=lambda:nExp('9')).grid(row=3,column=2)
Button(root,text='+',width=10,height=3,command=lambda:nExp('+')).grid(row=3,rowspan=2,column=3)
Button(root,text='4',width=10,command=lambda:nExp('4')).grid(row=4,column=0)
Button(root,text='5',width=10,command=lambda:nExp('5')).grid(row=4,column=1)
Button(root,text='6',width=10,command=lambda:nExp('6')).grid(row=4,column=2)
Button(root,text='1',width=10,command=lambda:nExp('1')).grid(row=5,column=0)
Button(root,text='2',width=10,command=lambda:nExp('2')).grid(row=5,column=1)
Button(root,text='3',width=10,command=lambda:nExp('3')).grid(row=5,column=2)
Button(root,text='0',width=10,command=lambda:nExp('0')).grid(row=6,column=0,columnspan=2)
Button(root,text='.',width=10,command=lambda:nExp('.')).grid(row=6,column=2)
Button(root,text=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年國際足球賽事場地租賃合同
- 2024年建筑施工勞務承包簡約合同樣本
- 2024樁基礎工程專業(yè)分包合同模板
- 2024代理合同樣式
- 2024技術參股合作協(xié)議書
- 2024版藥品代理合同
- 二手房交易合同
- 店面承租協(xié)議書范本
- 2024項目開發(fā)全過程專項法律服務合同
- 2024常用合作合同范本
- 圓圈正義讀書分享課件
- 四平事業(yè)單位筆試真題及答案2024
- 一年級數學上冊蘇教版《連加、連減》教學設計
- 北師大版數學二年級上冊小學數學口算、簡算、計算、應用題及能力提升訓練檢測題(含答案)
- 跨文化商務交際課程教學大綱
- 學前兒童英語教育與活動指導(學前教育專業(yè))全套教學課件
- 化工產品銷售管理制度
- 螺旋藻生物學特征課件講解
- 班主任專業(yè)能力大賽情景答辯小學組真題及答案
- 消毒供應中心護理質量考核評價量分表(100分)
- 論企業(yè)營運能力分析-以華潤三九為例-會計-畢業(yè)論文
評論
0/150
提交評論