unity斗地主洗牌發(fā)牌算法實現(xiàn)

? ? ? ?如果你要問游戲行業(yè)什么游戲開發(fā)起來難度小,周期短?是RPG,MMORPG,Moba?亦或是FPS,賽車游戲?其實都不是!棋牌游戲才是開發(fā)難度小,周期短的游戲項目。是不是有人不服了?沒關(guān)系,聽我說完。首先用unity開發(fā)棋牌游戲的話,諸如斗地主之類的,難點就只有一個,那就是棋牌游戲游戲算法了,比如洗牌,出牌邏輯,比牌邏輯,其他的就沒什么了。至少它邏輯沒有很復(fù)雜。像FPS,Moba,MMORPG等就不同了,有熟悉內(nèi)容多,難度大。賽車游戲就更不用說了,如果你要非常真實的,那么各種和物理相關(guān)的參數(shù)計算,你必須得會,不然做不出高質(zhì)量的賽車游戲。所以,棋牌游戲難度比較小。我做了一個斗地主的洗牌發(fā)牌算法的Demo,這個面試也是會問的。應(yīng)該有點用處。先上效果圖。

? ? ? ?OK,那么我們來看看怎么來實現(xiàn)這個功能!先來梳理下這個Demo具有的功能:創(chuàng)建牌,洗牌,發(fā)牌(連同發(fā)牌效果),排序,就差打牌了,哈哈。好,首先我們來看看這幾步怎么搞定,首先是創(chuàng)建牌,這個的話呢,不是很難。但是我們先要有整體思維,牌的話,我們有花色,大小(權(quán)值),等。然后它是很有規(guī)律的,發(fā)現(xiàn)每月:四色牌各13張,然后大小王各一張。所以,這個時候我們就可以用循環(huán)來做了。直接就是按順序創(chuàng)建就可以。黑紅梅方各13張,然后每13張牌就切換一下花色。這樣52張牌就出來了。大小王再另外寫邏輯就可以了(方法多種,不一定要用我這種)。這里原理說的應(yīng)該比較清楚了,上代碼:


這是創(chuàng)建牌邏輯。然后牌是創(chuàng)建好了,但是它是按順序的,有規(guī)律的,我們不希望它是這樣的,我們希望它是無需的,隨機的。那么這個時候就需要洗牌了。洗牌邏輯呢也很簡單。原理就是:我們創(chuàng)建的牌是放在一個集合里面了。然后大家應(yīng)該知道我們打牌的時候,是一張一張的發(fā),或者摸的。對吧,所以我們就要有一個概念,那就是洗好的牌,我們也需要放在一個集合里面,這個集合的話,它比較特殊,它應(yīng)該是這樣的,一張一張的出來拍,然后我們一張一張的摸。那么在數(shù)據(jù)結(jié)構(gòu)里面就有這樣的一個集合,它就是隊列,它的特點就是先進先出。所以我們把牌打亂洗好了就放它里面,然后發(fā)牌就從這里發(fā)。好了,那么洗牌原理是什么呢?我們新建一個臨時列表,然后我們就隨機打亂下標(biāo),再插入到它里面去。因為新的列表我們的大小是0,然后我們要不斷循環(huán)來把元素插入到這個新列表去,那么它的大小就會不斷增加,至于循環(huán)多少次,很明顯,牌庫有多少牌,就循環(huán)多少次。

最后再把這個臨時列表一齊賦值給隊列,進入下一步發(fā)牌。OK,上代碼:

發(fā)牌就更簡單了。直接瘋狂出隊列就對了。我就不多說,沒得什么難度,唯一一個點,就是發(fā)牌的動畫(其實也算不算是動畫,或者可以叫它效果),我這里呢,是用的協(xié)程來做的。直接上代碼:

OK,最后一個就是牌發(fā)完需要排序,這個需要用到排序算法,排序算法很多種:諸如冒泡,快牌,插入,選擇...等。這些算法我們都可以用。效果一樣,我這里就直接用冒泡,因為它最簡單,對初學(xué)者最友好。也最容易理解。話不多說,上代碼:

好了,四個模塊都已經(jīng)搞定,當(dāng)然這是四個核心的部分,并不是全的。還有一些其他的不是很重要的東西,同時又比較簡單的,我就沒說。所以如果大家對這個demo感興趣的話,你可以聯(lián)系我,我給你整個Demo。

好了,這節(jié)就到這里了,發(fā)文不易,不喜勿噴哦!點擊鏈接加入群聊【Unity/Cocos交流群】

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 逢年過節(jié),回到老家,玩的最多的就是打麻將、斗地主。今天要說的,就是這個經(jīng)典游戲——斗地主。 一、斗地主牌面分析 斗...
    tomcat_pikaqiu閱讀 6,305評論 2 15
  • 本篇基于國外區(qū)塊鏈游戲Virtue Poker(虛擬撲克)的白皮書翻譯整理而成。面對國內(nèi)各種魚龍混雜的白皮書,Vi...
    yuyangray閱讀 5,592評論 0 3
  • 斗地主是起源于湖北的一項棋牌休閑游戲,游戲是根據(jù)湖北當(dāng)?shù)厥至餍械钠迮仆娣ㄅ艿每熳兓倪M創(chuàng)造出來的。 斗地主是根據(jù)...
    JunChow520閱讀 3,354評論 0 1
  • 白光升騰時,我的腦中一片空白。 白光散去,我發(fā)現(xiàn)自己站在一個桌子旁邊。 昨晚低質(zhì)量的睡眠,讓我甚至無法想起我的身份...
    深海方碑閱讀 201評論 0 0
  • 一、入園活動:搖搖椅 二:字寶寶活動:兩只羊 今日任務(wù):鞏固復(fù)習(xí)字寶寶 兩只羊 周末大小朋友注意用電 外出 交通等...
    Stop_e50f閱讀 104評論 0 0

友情鏈接更多精彩內(nèi)容