24点纸牌游戏的开发 python 各路大神我需要帮助

Python014

24点纸牌游戏的开发 python 各路大神我需要帮助,第1张

很久之前自己写的了,用的就是高级一点的穷举,还挺快的。

附带一个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()

你说的是系统自带的IDLE吧,设置Ctrl+Space的时候出的错误,然后就消失了?我之前也出现过这个问题,想到是开源的,而且它可以在Win+R里运行,就首先找环境变量了。你看一下环境变量里面C:\Python32\Lib\idlelib还在不在,不在的话把其中的idle.bat拷到在环境变量中的文件夹里就好了。

1.打开默认的chrome

在python版的Webdriver中要打开chrome浏览器,需要安装chromedriver.exe。。

将这个chromedriver.exe放置在chrome的安装目录下 相对路径为 …\Google\Chrome\Application\,然后设置path环境变量,把chrome的安装目录地址放入path变量中。我的安装目录是C:\Program Files\Google\Chrome\Application,也即是在path变量的最后,加上此目录即可,然后尝试在python中运行

from selenium import webdriver

driver = webdriver.Chrome()

若不报错,即代表安装成功。

2.打开本地的Chrome

import os

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from time import sleep

executable_path = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe" //指定chromediver的位置,如果在默认路径,这两行可以省略。

os.environ["webdriver.chrome.driver"] = executable_path

options = webdriver.ChromeOptions() //定义配置对象

options.add_argument("--user-data-dir="+r"C:/Users/cui/AppData/Local/Google/Chrome/User Data/")

//指定用户的配置地址,并加载至配置对象中。

browser = webdriver.Chrome(executable_path,chrome_options=options)

//此处注意,有两个参数,后面那个参数,一定要写成 chrome_options=XX的形式,否则运行报错。

备注:chrome的用户配置数据,在c盘的user用户下,可能有些人不能找到此目录,这是因为AppDate文件夹是默认隐藏的,需要进入文件夹选项去设置一下即可。