(大學計算機綜合實驗第二題實驗報告)_第1頁
(大學計算機綜合實驗第二題實驗報告)_第2頁
(大學計算機綜合實驗第二題實驗報告)_第3頁
(大學計算機綜合實驗第二題實驗報告)_第4頁
(大學計算機綜合實驗第二題實驗報告)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗流程及實驗效果(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論