如何用python做一個麻將游戲
『壹』 -------用Python編寫骰子游戲-------幾乎完成,但是有不明白的地方……
骰子游戲
最近寫了一個小游戲,就是酒吧里常玩的一種扔骰子然後猜骰子個數的游戲。
寫了3個版本,分別用Java,C++,python各寫了一遍。
Java的太簡單,基本功能都沒有完善,規則也不正確,就算了。
C++版和python版的比較,C++版已經比較完善可以玩了,python版更強大一些,功能更豐富,電腦AI的能力也要強一些。
C++版的地址:DiceGame
python版的地址:DiceGame
其中python版需要安裝了python 2.5才可以運行。
python 2.5.2的下載地址:python 2.5.2
朋友寫了一個精美的手機版,用Adobe Flash Lite 完成的:BeautyDice.rar
下面是游戲規則。
騙子骰(大話骰、古惑骰)
二個以上人玩,每人五粒骰子。每人各搖一次,然後看自己盒內的點數,由莊家開始吆喝自己骰盒裡有多少個點數(一般都叫成2個3,2個6,3個2什麼的)。然後對方猜信不信,對方信的話就下家重來,不對的話就開盒驗證。要是屬實的話就莊家贏,猜者輸;不屬實的話就猜者贏,莊家輸。輸者喝酒。
注意:
1、叫數只能越叫越大(如: 2個6,3個2,喊了2個6後就不能再喊2個3之類的)。
2、1點可以作為任何數,例如骰盒內只有3個2點,1個1點,莊家其實自己就可當作有4個2點;但如果莊家叫過1點的話,那1點以後就不可以當任何數了(如: 2個1,4個1之類的)。
『貳』 用python做鬥地主,大家都有什麼好一點的設計方案呢越詳細越好,拜託了
如果只是自己練習著玩。你隨便寫一寫吧。 如果是想做成一個真正的游戲。一個產品。就首先理清楚需求。
你這個軟體誰用的。怎麼賺錢,要滿足用戶的哪些需求。再根據這些需求建立一個開發方案。
我只能猜猜,你這個軟體是局域內學生用,聯網玩的。因為你們不能上互聯網。所以只能區域網玩。我記得微軟的幾個牌類游戲是可以聯網玩的。你自己檢查一下看。開源的也有類似的程序。
如果一定要自己寫這就需要分客戶端與服務端。服務端可以不用開發。這種簡單游戲,直接用一個資料庫當服務端好了。或者是一個memcache或者是一個key value的非關系型資料庫。總之不用認證,不用加密。
下面就是客戶端開發。網路部分不說。那就只剩下界面與撲克的演算法。界面也不用說什麼,做一個Canvas,然後繪制,這樣效果最好,但是復雜了。直接用一個Image控制項來玩,相對非常簡單。動態創建與刪除控制項。綁定控制項的消息就成了。
至於撲克演算法及數據結構。這個好象沒有太多難度。會打牌的人都可以做。記錄打牌的所有牌的狀態,每個玩家的狀態,以及按次序發牌,判斷勝負就可以了。
『叄』 python怎麼做一個游戲
安裝pygame並創建能左右移動的飛船
安裝pygame
本人電腦是windows 10、python3.6,pygame下載地址:傳送門
請自行下載對應python版本的pygame
運行以下命令
$ pip install wheel
$ pip install pygame‑1.9.3‑cp36‑cp36m‑win_amd64.whl
1
2
1
2
創建Pygame窗口及響應用戶輸入
新建一個文件夾alien_invasion,並在文件夾中新建alien_invasion.py文件,輸入如下代碼。
『肆』 用python能製作游戲嗎
能,但不適合。
用錘子能造汽車嗎? 誰也沒法說不能吧?歷史上也確實曾經有些汽車,是用錘子造出來的。但一般來說,還是用工業機器人更合適對嗎?
比較大型的,使用Python的游戲有兩個,一個是《EVE》,還有一個是《文明》。但這僅僅是個例,沒有廣泛意義。
一般來說,用來做游戲的語言,有兩種。一是C++。。一是C#。。
Python理論上,不僅不適合做游戲,而是只要大型的程序,都不適合。只適合寫比較小型的東西,比如一個計算器,一個爬蟲等。
主要有2個方面,一是速度慢,二是語法缺陷。
也許你一定覺得,Python的語法又干凈,又優雅,怎麼還有缺陷?但仔細想想,為什麼別的語言沒有這么干凈?沒有這么優雅?明明可以直接a=123 幹嘛非要寫成 int a=123;呢?難道是其他語言的設計者,都有強迫症嗎?道理很簡單,有得必有失。
如果數據類型,只有字元串和數字,省略掉聲明變數的過程,當然不是問題。但只要邏輯一復雜,情況就完全不同了。。。游戲中,你用C#或C++寫起來,大概會是這樣。
技能 a=xxxx;
武器 b=xxxx;
角色 c=xxxx;
葯水 d=xxxx;
音樂 e=xxxx;
而Python呢?大概是這個樣子
a=xxxx
b=xxxx
c=xxxx
d=xxxx
如果你的代碼很少,顯然是Python比較方便。但如果你創建幾百個對象,代碼超過1萬行。。。寫到幾千行的時候,遇到一個叫x的對象,你還知道它到底是個啥嗎?是一把武器?還是一瓶葯水?還是一張圖片?一段音頻?一盞燈光?一座房子?
不要以為1萬行代碼很多。。。。1萬行連個《鬥地主》都寫不完。。
用Python寫大程序的感覺就是,當你第一天,只寫了50行代碼,創建了3個類,5個對象。你會覺得太爽了,這絕對是世界上最好的語言。。。第二天,你又創建了2個類,5個對象的時候,就覺得有點暈暈的了。第三天,又創建了2個類之後,你會發現自己必須非常仔細的看一遍注釋,否則就不會寫了。第四天,你一整天都在看注釋。。。。
這就是動態語言的劣根性。一開始代碼量少,看不出任何缺點,各種省事,各種爽。代碼量越多,腦子越亂。一般500行以上,效率就會被JAVA,C#之類的語言反超。。1000行,就必須要各種加註釋才能看懂了。。2000行,注釋比代碼還多了。。5000行,注釋已經完全不管用了,自己根本看不懂自己的代碼,需要准備棄坑了。
『伍』 python能開發游戲嗎
能,但不適合。
用錘子能造汽車嗎? 誰也沒法說不能吧?歷史上也確實曾經有些汽車,是用錘子造出來的。但一般來說,還是用工業機器人更合適對嗎?
比較大型的,使用Python的游戲有兩個,一個是《EVE》,還有一個是《文明》。但這僅僅是個例,沒有廣泛意義。
一般來說,用來做游戲的語言,有兩種。一是C++。。一是C#。。
Python理論上,不僅不適合做游戲,而是只要大型的程序,都不適合。只適合寫比較小型的東西,比如一個計算器,一個爬蟲等。
主要有2個方面,一是速度慢,二是語法缺陷。
也許你一定覺得,Python的語法又干凈,又優雅,怎麼還有缺陷?但仔細想想,為什麼別的語言沒有這么干凈?沒有這么優雅?明明可以直接a=123 幹嘛非要寫成 int a=123;呢?難道是其他語言的設計者,都有強迫症嗎?道理很簡單,有得必有失。
如果數據類型,只有字元串和數字,省略掉聲明變數的過程,當然不是問題。但只要邏輯一復雜,情況就完全不同了。。。游戲中,你用C#或C++寫起來,大概會是這樣。
技能 a=xxxx;
武器 b=xxxx;
角色 c=xxxx;
葯水 d=xxxx;
音樂 e=xxxx;
而Python呢?大概是這個樣子
a=xxxx
b=xxxx
c=xxxx
d=xxxx
如果你的代碼很少,顯然是Python比較方便。但如果你創建幾百個對象,代碼超過1萬行。。。寫到幾千行的時候,遇到一個叫x的對象,你還知道它到底是個啥嗎?是一把武器?還是一瓶葯水?還是一張圖片?一段音頻?一盞燈光?一座房子?
不要以為1萬行代碼很多。。。。1萬行連個《鬥地主》都寫不完。。
用Python寫大程序的感覺就是,當你第一天,只寫了50行代碼,創建了3個類,5個對象。你會覺得太爽了,這絕對是世界上最好的語言。。。第二天,你又創建了2個類,5個對象的時候,就覺得有點暈暈的了。第三天,又創建了2個類之後,你會發現自己必須非常仔細的看一遍注釋,否則就不會寫了。第四天,你一整天都在看注釋。。。。
這就是動態語言的劣根性。一開始代碼量少,看不出任何缺點,各種省事,各種爽。代碼量越多,腦子越亂。一般500行以上,效率就會被JAVA,C#之類的語言反超。。1000行,就必須要各種加註釋才能看懂了。。2000行,注釋比代碼還多了。。5000行,注釋已經完全不管用了,自己根本看不懂自己的代碼,需要准備棄坑了。
『陸』 python能做什麼游戲
Python是一門高級且有趣的編程語言,除了網路爬蟲、人工智慧、數據分析之外,Python還可以進行游戲開發,為大家介紹五個支持Python的2D、3D游戲開發庫。
1、Cocos2d:是一系列開源軟體框架,用於構建跨平台2D游戲和應用程序,由cocos2d-x、cocos2d-js、cocos2d-xna和cocos2d多種框架組成,像大魚賭場、城堡沖突等小游戲,就是用此框架開發出來的。
2、Panda3D:是由迪士尼開發的3D游戲引擎,一個用於Python和C++程序的3D渲染和游戲開發框架,並由卡內基梅隴娛樂技術中心負責維護,使用C++編寫的,針對Python進行了完全的封裝。
3、Pygame:它是一組Python模塊,用來編寫游戲,可支持Python3.7,游戲例子有:紙牌游戲、超級馬里奧、擊球等多種游戲。
4、Pyogre:ogre 3D渲染引擎的Python綁定,可以用來開發游戲和模擬程序等任何3D應用,它的API更加穩定,也非常快速靈活。
5、RenPy:一個視覺小說引擎,被世界各地的成千萬的創造者所使用,它可以幫助你使用文字、圖像和聲音來講述電腦和移動設備上的故事。RenPy是開放源碼的,可免費的商業用途,易於學習的腳本語言任何人都能有效地編寫大型視覺小說,它的Python腳本足以用來模擬游戲。
『柒』 如何用python寫一個單機麻將
你就是想找個軟體或者券商的介面去上傳交易指令,你前期的數據抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。還有的法是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的,第三種就是走野路子,滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。還有一種更野的方法,就是找到這些軟體的關於交易指令的底層代碼並更改,我網路看到的,不知道是不是真的可行。。散戶就這樣,沒資金就得靠技術,不過我覺得T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧
『捌』 麻將游戲一般是用什麼語言開發的,哪部分代碼最難實現
多是C++語言,其他的語言只有能實現,也可以。
最重要也是最難實現的部分,應該是核心玩法的代碼,需要考慮周到,仔細架構。
如果你要做,建議找經驗豐富的技術公司,像是摩天游科技,專門做地方游戲的,技術經驗豐富,基本不會出現太大問題。
『玖』 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寫一個小游戲
下載pygame包
然後找本書看一下,很容易的。
python基礎好的話,只要2-3天就搞定了。