導航:首頁 > 編程語言 > python24點游戲程序

python24點游戲程序

發布時間:2022-08-21 04:08:33

❶ 求大神!!python程序設計 一個24點紙牌游戲。如圖所示,最好充分利用提示!

你好:
最好是自己寫一點;
不會的部分,再拿出來詢問!

❷ python想做一個24點游戲,請大神幫我做一個。真的感謝。做出來的。我可以給你錢。需要程序 方

#!python
#vim:fileencoding=utf-8
#=weibo.com/niio=
#2016-04-22
#Theme:Python24點智商矯正工具
#Memo:python2.7/開箱即用/玩得開薰XD
######################

importrandom
defbracket_exp(op,a,b):
return(op,a,b)

defremove_op(ops,op):
tmp=list(ops)
tmp.remove(op)
returntmp

defremove_nums(nums,number_combine):
tmp=list(nums)
foriinnumber_combine:
tmp.remove(i)
returntmp

defappend(res_nums,exp):
tmp=list(res_nums)
tmp.append(exp)
returntmp


defevalexp(e):
ifnotisinstance(e,tuple):
returnint(e)
else:
e1=evalexp(e[1])
e2=evalexp(e[2])
ife1==Noneore2==None:
returnNone
ife[0]=='+':
returne1+e2
elife[0]=='-':
returne1-e2
elife[0]=='*':
returne1*e2
elife[0]=='/':
ife2!=0ande1%e2==0:
returne1/e2
else:
returnNone
else:
None

deffmtexp(e):
ifnotisinstance(e,tuple):
returne
else:
e1=fmtexp(e[1])
e2=fmtexp(e[2])
ife[0]=='+':
return'(%s+%s)'%(e1,e2)
elife[0]=='-':
return'(%s-%s)'%(e1,e2)
elife[0]=='*':
return'(%s*%s)'%(e1,e2)
elife[0]=='/':
return'(%s/%s)'%(e1,e2)
else:
None

#r=evalexp(('+','1',('*','4',('-','6','8'))))
#r=fmtexp(('+','1',('*','4',('-','6','8'))))

defiter_all_exp(ops,nums,target):
iflen(nums)==1:
r=evalexp(nums[0])
ifrandabs(r-target)<0.001:
printfmtexp(nums[0]),'='+str(target)
return
fornumber_combineincombinations(nums,2):
foropinops:
res_ops=remove_op(ops,op)
res_nums=remove_nums(nums,number_combine)

exp=bracket_exp(op,number_combine[0],number_combine[1])
iter_all_exp(res_ops,append(res_nums,exp),target)

ifop=='-'orop=='/':
exp=bracket_exp(op,number_combine[1],number_combine[0])
iter_all_exp(res_ops,append(res_nums,exp),target)
print"正在出題"
q=random.sample([1,2,3,4,5,6,7,8,9],4)

printstr(q[0])+"_"+str(q[1])+"_"+str(q[2])+"_"+str(q[3])+"=24"

show=raw_input("題目不一定有解喔!,回車看答案")
ifshow=="":
iter_all_exp(["+","-","/","*"],[q[0],q[1],q[2],q[3]],24)
else:
print""

❸ 24點紙牌游戲的開發 python 各路大神我需要幫助

很久之前自己寫的了,用的就是高級一點的窮舉,還挺快的。
附帶一個gui
求給分啊
兩個文件,cui負責算數gui是界面,親測可運行的

**************************************cui_24point.py
__author__ = 'Administrator'

add = lambda a,b:a+b
minus = lambda a,b:a-b
mul = lambda a,b:a*b
div = lambda a,b:a/b

caldict = {add:"+", minus:"-", mul:"*", div:"/"}

sortlist = [[a,b,c,d] for a in range(4) for b in range(4) for c in range(4) for d in range(4) if a != b != c != d and a != c and b != d and a != d]

class leaf:
def __init__(self, numlist, layer1, layer2, layer3, ans):
self.numlist = map(lambda a:float(a), numlist)
self.layer1 = layer1
self.layer2 = layer2
self.layer3 = layer3
self.ans = ans
def __str__(self):
return "((%s%s%s)%s%s)%s%s=%s" %(self.numlist[0], caldict[self.layer1], self.numlist[1], caldict[self.layer2], self.numlist[2], caldict[self.layer3], self.numlist[3] ,self.ans)

def tree(numlist):
layer1 = "Null"
layer2 = "Null"
layer3 = "Null"
for c1 in [add, minus, mul, div]:
layer1 = c1
for c2 in [add, minus, mul, div]:
layer2 = c2
for c3 in [add, minus, mul, div]:
layer3 = c3
if c3(c2(c1(numlist[0], numlist[1]), numlist[2]), numlist[3]) == 24:
return leaf(numlist, layer1, layer2, layer3, 24)

class Turn():
def __init__(self, numlist):
if len(numlist) == 4:
self.numlist = numlist
def calculate(self):
anslist = []
for i in sortlist:
templist = [self.numlist[i[0]], self.numlist[i[1]], self.numlist[i[2]], self.numlist[i[3]]]
anslist.append(tree(templist))
return anslist

def calc(templist):
ans = Turn(templist).calculate()
ans = [i for i in ans if i != None]
for i in ans:
print i
return ans

if __name__ == "__main__":
templist = []
for i in range(4):
templist.append(int(raw_input("Input No.%s number \n" %i)))
calc(templist)

*****************************************gui.py
# -*- coding: -UTF-8 -*-
__author__ = 'Administrator'

from Tkinter import *
import cui_24point

root = Tk()
root.geometry("800x400+400+400")
root.title("24點計算程式")

numlist = []
ansVar = StringVar()

def initvariable():
for i in range(4):
numlist.append(StringVar())

def drawframe():
entryframe = Frame(root, width = 300, height = 100)
for i in range(4):
Label(entryframe, text = str(i + 1)).grid(row = 1, column = i)
Entry(entryframe, textvariable = numlist[i]).grid(row = 2, column = i)

entryframe.pack()

ansframe = Frame(root, width = 100, height = 66)
anslistbox = Listbox(ansframe, width = 50, listvariable = ansVar)
ansscrollbar = Scrollbar(ansframe, command = anslistbox.yview)
anslistbox.configure(yscrollcommand = ansscrollbar.set)

anslistbox.pack(side = RIGHT)
ansscrollbar.pack(side = LEFT, fill = Y)
ansframe.pack()

def calculate():
templist = map(lambda i:float(i.get()), numlist)
for i in cui_24point.calc(templist):
anslistbox.insert(END, i)
anslistbox.insert(END, "********************")

Button(text = "計算", command = calculate).pack()

initvariable()
drawframe()

❹ python 24點游戲開發,求大神!!!!!!

這個就是一個排列組合 數字的排列組合,字母的排列組合 你給我留聯系方式,我郵箱給你 網路雲自己下

❺ 誰能用Python編一個24點小游戲嗎謝謝!

記得採納

❻ Python編24點游戲

#!/usr/bin/python
#coding:utf8
'''
原始方法編24點游戲
'''

importitertools
importrandom

numlist=[random.randint(1,13)foriinrange(4)] #隨機4個數
printnumlist

nlist=[]
[nlist.append(nl)fornlinlist(itertools.permutations(numlist))ifnlnotinnlist] #4個數排列組合,並在有重復數字時對組合去重
#printnlist

option=['+','-','*','/']
olist=list(itertools.proct(option,repeat=3)) #操作符重復組合3位
#printolist

retlist=[[str(nl[0])+'*1.0']+[ol[0]]+[str(nl[1])+'*1.0']+[ol[1]]+[str(nl[2])+'*1.0']+[ol[2]]+[str(nl[3])+'*1.0']fornlinnlistforolinolist] #拼湊4個數和3個操作符
#printretlist

#括弧的位置
#(0,3)(0,5)
#(2,5)(2,7)
#(4,7)
#(0,3)和(4,7)
lastlist=[]
forretinretlist:
if('*'notinretand'/'notinret)or('*'inretand'/'inret):
lastlist.append(''.join(ret))
else:
lastlist.append(''.join(['(']+ret[:3]+[')']+ret[3:]))
lastlist.append(''.join(['(']+ret[:5]+[')']+ret[5:]))
lastlist.append(''.join(ret[:2]+['(']+ret[2:5]+[')']+ret[5:]))
lastlist.append(''.join(ret[:2]+['(']+ret[2:7]+[')']))
lastlist.append(''.join(ret[:4]+['(']+ret[4:7]+[')']))
lastlist.append(''.join(['(']+ret[:3]+[')']+ret[3:4]+['(']+ret[4:7]+[')']))
#printlastlist

i=0
forllinlastlist:
try:
ifeval(ll)==24:#計算,每位數*1.0,是防止出現12/5=2的情況
printll.replace('*1.0','')+'=24'#去掉'*1.0'
else:
i+=1
exceptZeroDivisionError,e:
#print'除於0錯誤:'+ll.replace('*1.0','')#表達式中有除於0的
i+=1
continue

ifi==len(lastlist):
print'nooutput!'

❼ 求python寫的24點游戲,帶圖形用戶界面最好

寫了個極其粗魯暴力的草稿版窮舉法,生成表達式。當eval執行後的結果是24的話,判定成功。

目前可見的缺陷是,對於相似結果,沒想到好辦法來過濾。求高手指教。


代碼如下,

#coding:utf-8

'''
計算24點
tested@Windows7Pro64-bitENU
'''


try:
importTkinterasTK
except:
importtkinterasTK

fromrandomimportrandint


#GUIEVENT
defEntryUpdate(number_list):
'DisplaythenumberlistinEntry'
inputbox.delete('0',TK.END)
inputbox.insert('0',','.join([str(i)foriinnumber_list]))

defScrolledTextClear():
'ClearcontentinST'
outputbox.delete('1.0',TK.END)

defScrolledTextAppend(message):
'AppendcontentinST'
outputbox.insert(TK.END,message)

#defSetTriggerState(status=1):
#'Setbuttonstatus'
#trigger.config(state='disabled')ifstatus==0elsetrigger.config(state='active')

defMessageProcessor():
'Dealwithmessagequeue'
iflen(MessageQueue)>0:
ret=str(MessageQueue.pop(0))
ScrolledTextAppend('{} '.format(ret))
root.after(30,MessageProcessor)

#CalculatorEvent
defDivisionVerification(number1,number2):
try:
ifnumber1%number2==0:
return0
except:
try:
ifnumber2%number1==0:
return1
except:
return2

defExpression(number1,number2,operator):
'Returntheexpression(s)'
ifoperator=='1':
return['({0}{2}{1})'.format(number1,number2,operator_dict[operator]),
'({1}{2}{0})'.format(number1,number2,operator_dict[operator])]
elifoperator=='3':
ret=DivisionVerification(number1,number2)
ifret==0:
return['({0}{2}{1})'.format(number1,number2,operator_dict[operator])]
ifret==1:
return['({1}{2}{0})'.format(number1,number2,operator_dict[operator])]
ifret==2:
returnNone
else:
return['({0}{2}{1})'.format(number1,number2,operator_dict[operator])]

defJudgement(operation_expression):
'`target`.'
try:
returnTrueifeval(ur'{}'.format(operation_expression))==targetelseFalse
except:
returnFalse

defEnumerateExpression(number_list):
'''
[A,B,C,D]

1.CalculateAandB->[R,C,D]
2.Threescenarios:
type1:
R,CandD
R,DandC
type2:
RandC,D
'''

strategy=[[[(0,1),2,3],
[(0,1),3,2],
[(0,2),1,3],
[(0,2),3,1],
[(0,3),1,2],
[(0,3),2,1],
[(1,2),0,3],
[(1,2),3,0],
[(2,3),0,1],
[(2,3),1,0]],
[[(0,1),(2,3)],
[(0,2),(1,3)],
[(0,3),(1,2)]]]

#type1
foriteminstrategy[0]:
ds=[number_list[item[0][0]],number_list[item[0][1]],number_list[item[1]],number_list[item[2]]]
foriinrange(4):
try:
forsub_exp_phase_oneinExpression(ds[0],ds[1],str(i)):
forjinrange(4):
try:
forsub_exp_phase_twoinExpression(sub_exp_phase_one,ds[2],str(j)):
forkinrange(4):
try:
forsub_exp_phase_threeinExpression(sub_exp_phase_two,ds[3],str(k)):
ifJudgement(sub_exp_phase_three)isTrue:
MessageQueue.append(sub_exp_phase_three)
except:
continue
except:
continue
except:
continue

#type2
foriteminstrategy[1]:
ds=[number_list[item[0][0]],number_list[item[0][1]]],[number_list[item[1][0]],number_list[item[1][1]]]
foriinrange(4):
try:
forsub_exp_leftinExpression(ds[0][0],ds[0][1],str(i)):
forjinrange(4):
try:
forsub_exp_rightinExpression(ds[1][0],ds[1][1],str(j)):
forkinrange(4):
try:
forsub_exp_finalinExpression(sub_exp_left,sub_exp_right,str(k)):
ifJudgement(sub_exp_final)isTrue:
MessageQueue.append(sub_exp_final)
except:
continue
except:
continue
except:
continue

defExecutor():
#preparedata
input_data=[]
foriinrange(4):
input_data.append(randint(minimum_number,maximum_number))
EntryUpdate(input_data)

#mainfunction
ScrolledTextClear()
EnumerateExpression(input_data)
iflen(MessageQueue)>0:
MessageQueue.append('{} Done'.format('-'*32))
else:
MessageQueue.append(str(input_data))
MessageQueue.append('Nothing!')

#settarget
target=24
minimum_number=1
maximum_number=13
operator_dict={
'0':'+',
'1':'-',
'2':'*',
'3':'/',}

#Generatewindow
root=TK.Tk()
root.attributes('-topmost',1)
root.attributes('-alpha',0.85)
root.geometry('+{}+{}'.format(root.winfo_screenwidth()/8,root.winfo_screenheight()/8))
root.title('Generator->24')

#Addoutputbox,
outputbox=ST(root,
width=35,height=20,
font=('CourierNew',13),
fg='yellow',bg='black')
outputbox.pack(expand=1,fill='both')

#Addinputbox,
inputbox=TK.Entry(root,bd=2,bg='yellow')
inputbox.pack(side=TK.LEFT,expand=1,fill='x')

#Addbutton,
trigger=TK.Button(root,
text='Go!',
command=Executor)
trigger.pack(side=TK.RIGHT,expand=1,fill='x')

#.
MessageQueue=[]
root.after(30,MessageProcessor)

#Displaywindow
TK.mainloop()

❽ 求python寫的24點游戲,帶GUI界面

#!/usr/bin/python
#coding:utf8
'''
介紹:24點游戲
'''

importitertools,random

numlist=[random.randint(1,13)foriinrange(4)]#隨機4個數
printnumlist

nlist=[]
[nlist.append(nl)fornlinlist(itertools.permutations(numlist))ifnlnotinnlist] #4個數排列組合,並在有重復數字時對組合去重
#printnlist

option=['+','-','*','/']
olist=list(itertools.proct(option,repeat=3)) #操作符重復組合3位
#printolist

retlist=[str(nl[0])+'*1.0'+ol[0]+str(nl[1])+'*1.0'+ol[1]+str(nl[2])+'*1.0'+ol[2]+str(nl[3])+'*1.0'fornlinnlistforolinolist] #拼湊4個數和3個操作符
#printretlist

forrlinretlist:
ifeval(rl)==24: #計算,每位數*1.0,是防止出現12/5=2的情況
printrl.replace('*1.0','')+'=24' #去掉'*1.0'

運行結果:
[2,11,6,10]
11+6/2+10=24
11+10+6/2=24
6/2+11+10=24
6/2+10+11=24
10+11+6/2=24
10+6/2+11=24
[Finishedin0.3s]

❾ Python編24點游戲,重新開始怎麼編

從圖片上看,就是重新生成4個數據。不知道這個程序對應的卡牌是怎麼選擇的。。。猜測可以用random.randint來生成1到13之間的某個數字,然後貼對應的圖片。

閱讀全文

與python24點游戲程序相關的資料

熱點內容
度人經pdf 瀏覽:898
怎麼配置android遠程伺服器地址 瀏覽:956
java程序員看哪些書 瀏覽:939
什麼app可以免費和外國人聊天 瀏覽:793
pdf手寫筆 瀏覽:178
別永遠傷在童年pdf 瀏覽:986
愛上北斗星男友在哪個app上看 瀏覽:418
主力散戶派發源碼 瀏覽:667
linux如何修復伺服器時間 瀏覽:58
榮縣優途網約車app叫什麼 瀏覽:477
百姓網app截圖是什麼意思 瀏覽:225
php如何嵌入html 瀏覽:813
解壓專家怎麼傳輸 瀏覽:745
如何共享伺服器的網路連接 瀏覽:134
程序員簡易表白代碼 瀏覽:168
什麼是無線加密狗 瀏覽:64
國家反詐中心app為什麼會彈出 瀏覽:69
cad壓縮圖列印 瀏覽:104
網頁打開速度與伺服器有什麼關系 瀏覽:865
android開發技術文檔 瀏覽:65