版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗流程及實驗效果(1)定義四個全局變量(2)定義一個列表存放這四個變量
(3)定義游戲答案中的運算符號(4)定義便用戶更改四位數(shù)字重新開始游戲的函數(shù)
(5)打印出游戲的規(guī)則:
“str1="游戲說明:\n在這個游戲中,系統(tǒng)隨機發(fā)四張牌,玩家需運用加減乘除四則運算嘗試構(gòu)建表達式,使得運算結(jié)果為24,每個數(shù)字均需用到,點擊“開始”發(fā)牌,點擊“完成”完成游戲,點擊“提示答案”查看一種答案,點擊“重新開始”重新發(fā)牌"”(6)定義顯示框并定義其屬性(7)定義清空函數(shù)表達式
(8)定義隨機獲取四個數(shù)的函數(shù)(9)定義將新字符添加進表達式的函數(shù)
(10)定義制造隨機運算法則的函數(shù),為下面函數(shù)做準備(11)排除分母為0的情況,輸出100,使該式的值不可能為24
(12)定義函數(shù)計算對于一個排好序的列表中的四個數(shù)是否有可能出現(xiàn)24,為下面hard函數(shù)判斷可能性做準備(13)根據(jù)不同方式進行運算,符合條件則將對應(yīng)的判斷標志改為1,否則記為0(14)定義函數(shù)輸出供用戶參考的正確答案(15)將所有可能的方案列出(16)定義一個列表存放對應(yīng)的數(shù)字排序是否可行的標志(17)定義變量用于判斷確認是否有解決方案(18)繪制窗口(19)給窗口命名(20)定義表達式為交互式對象(21)定義顯示框并定義其屬性(22)設(shè)置窗口背景顏色、長、寬(23)將Label的內(nèi)容與display關(guān)聯(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ā)四張牌,玩家需運用加減乘除四則運算嘗試構(gòu)建表達式,使得運算結(jié)果為24,每個數(shù)字均需用到,點擊“開始”發(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度定制衣柜設(shè)計制作合同樣本4篇
- 技術(shù)部合同范本(2篇)
- 房建工程監(jiān)理合同(2篇)
- 承包商安全環(huán)保管理合同(2篇)
- 二零二五美容院客戶關(guān)系管理系統(tǒng)采購合同3篇
- 2025年度寵物養(yǎng)護咨詢快速反饋合同
- 二零二五版民間融資居間風(fēng)險控制合同范本4篇
- 2025年票據(jù)質(zhì)押借款合同履約保證金管理辦法
- 二零二五年度果品加工副產(chǎn)品綜合利用合同3篇
- 二零二五年度互聯(lián)網(wǎng)企業(yè)員工勞動合同范本3篇
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價格水平調(diào)整的通知
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 【教案】+同一直線上二力的合成(教學(xué)設(shè)計)(人教版2024)八年級物理下冊
- 湖北省武漢市青山區(qū)2023-2024學(xué)年七年級上學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(含解析)
- 單位往個人轉(zhuǎn)賬的合同(2篇)
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學(xué)生運動能力測評規(guī)范
- 鍋爐本體安裝單位工程驗收表格
- 高危妊娠的評估和護理
- 2024年山東鐵投集團招聘筆試參考題庫含答案解析
評論
0/150
提交評論