十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
总结一下,python不是不能开发游戏,只是并不合适。每种语言都有各自的优缺点,开发游戏这一块或许就是python的缺点吧。 python游戏实例补充: 发牌游戏 1. 游戏介绍...
成都创新互联公司长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为万柏林企业提供专业的成都网站制作、做网站,万柏林网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
def main():
import random
items = ['红桃A', '黑桃A',........,]
x = random.shuffle(items)
#########################################################################
请注意你这里的用法, random.shuffle(items)是直接操作items的,相当于把items传址调用了,改变了items的元素顺序,shuffle跟sorted等是一样的直接操作传进去的参数,没有返回 值(或者说返回值是None)。
你用 x = random.shuffle(items)那么x永远是None了,你这里可以这样用啊:
def main():
import random
items = ['红桃A', '黑桃A',........,]
x = items[:] # 得到一个items的深拷贝
random.shuffle(x)
# 下面你再用这个打乱的x就可以了,如果你的items后面没什么用的话,可以下面直接用items了像下面这样:
def main():
import random
items = ['红桃A', '黑桃A',........,]
random.shuffle(items)
# 下面用到x的地方用items替换掉。
很久之前自己写的了,用的就是高级一点的穷举,还挺快的。
附带一个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()
1、__str__,只有打印单个对象有效,比如:print(对象1),
__repr__() ,打印列表中的对象也有效,比如:print([对象1,对象2,对象3])
2、就是一个嵌套的推导式
3、84-90合并一下,更容易理解
就是一个列表的排序
1. 找到一些有解的必要条件,然后在满足这些条件的前提下,随机生成牌局。可降低无解的可能性。
2. 倒推法:从4色牌都排好开始,(有指导的)随机进行反向的操作,最后得到牌局。倒推的步数多则难,反之则易。
3. 随机生成+机器检查。先自动检查生成的牌局,知道所有牌的情况下应该不难。做这个的时候,说不定你还能得到有解的充分/必要条件,然后就容易了。