德州撲克伺服器Go實現

2021-09-25 13:14:48 字數 2509 閱讀 6975

type cards byte

// todo 兩對和四張起腳牌的判定

var straightmask = uint16

//順子(straight,亦稱「蛇」)

//此牌由五張順序撲克牌組成。

//平手牌:如果不止一人抓到此牌,則五張牌中點數最大的贏得此局,

// 如果所有牌點數都相同,平分彩池。

func (this *cards) straight() uint32

handvalue |= (1 << (value - 1 ) )

} for i := uint8(0); i < 10; i++

} return 0

}//同花順(straight flush)

//五張同花色的連續牌。

//平手牌:如果攤牌時有兩副或多副同花順,連續牌的頭張牌大的獲得籌碼。

//如果是兩副或多副相同的連續牌,平分籌碼。

func (this *cards) straightflush() uint32

handvalue |= (1 << (value - 1 ) )

}} for i := uint8(0); i < 10; i++

} }return 0

}//皇家同花順(royal flush)

//同花色的a, k, q, j和10。

//平手牌:在攤牌的時候有兩副多副皇家同花順時,平分籌碼。

func (this *cards) royalflush() uint32

handvalue |= (1 << (value - 1 ) )

}} if handvalue&straightmask[0] == straightmask[0]

} return 0

}//四條(four of a kind,亦稱「鐵支」、「四張」或「炸彈」)

//其中四張是相同點數但不同花的撲克牌,第五張是隨意的一張牌。

//那麼第五張牌最大者贏局(起腳牌,2張起手牌中小的那張就叫做起腳牌)。如果起腳牌也一樣,平分彩池。

func (this *cards) four(counter *valuecounter) uint32

return 0

}//滿堂彩(fullhouse,葫蘆,三帶二)

//由三張相同點數及任何兩張其他相同點數的撲克牌組成。

//如果三張牌都一樣,則兩張牌中點數較大者贏局,如果所有的牌都一樣,則平分彩池。

func (this *cards) fullfouse(counter *valuecounter) uint32

} return 0

}//同花(flush,簡稱「花」)

//此牌由五張不按順序但相同花的撲克牌組成。

//平手牌:如果不止一人抓到此牌相,則牌點最高的人贏得該局,

//如果最大點相同,則由第

二、第三、第四或者第五張牌來決定勝負,如果所有的牌都相同,平分彩池。

func (this *cards) flush() uint32

handvalue |= (1 << (value - 1 ) )}}

return en(flush, uint32(handvalue))}}

} }return 0

}//三條(three of a kind,亦稱「三張」)

//由三張相同點數和兩張不同點數的撲克組成。

//平手牌:如果不止一人抓到此牌,則三張牌中最大點數者贏局,

//如果三張牌都相同,比較第四張牌,必要時比較第五張,點數大的人贏局。如果所有牌都相同,則平分彩池。

func (this *cards) three(counter *valuecounter) uint32

return 0

}//兩對(two pairs)

//兩對點數相同但兩兩不同的撲克和隨意的一張牌組成。

//平手牌:如果不止一人抓大此牌相,牌點比較大的人贏,如果比較大的牌點相同,那麼較小牌點中的較大者贏,

//如果兩對牌點相同,那麼第五張牌點較大者贏(起腳牌,2張起手牌中小的那張就叫做起腳牌)。如果起腳牌也相同,則平分彩池。

func (this *cards) twopair() uint32

} return 0

}//一對(one pair)

//由兩張相同點數的撲克牌和另三張隨意的牌組成。

//平手牌:如果不止一人抓到此牌,則兩張牌中點數大的贏,如果對牌都一樣,則比較另外三張牌中大的贏,

//如果另外三張牌中較大的也一樣則比較第二大的和第三大的,如果所有的牌都一樣,則平分彩池。

func (this *cards) onepair() uint32

} return 0

}func tovalue(cards byte) uint32

return res

}func de(v uint32) (uint8, uint32)

func en(t uint8, v uint32) uint32

附上完整**,有需要的兄弟可以參考:

伺服器實現 如何實現session跨伺服器共享

session共享有多種解決方法,常用的有四種 客戶端cookie儲存 伺服器間session同步 使用集群管理session 把session持久化到資料庫。1.客戶端cookie儲存 以cookie加密的方式儲存在客戶端,每次session資訊被寫在客戶端,然後經瀏覽器再次提交到伺服器,即使兩次...

go語言實現聊天伺服器 多人聊天)

用go語言實現乙個server作中轉 訊息,多個客戶端聊天 1 伺服器開啟,等待來自客戶端的連線,把每乙個客戶端儲存在map中 2 客戶端連線伺服器,給自己取乙個別名,儲存在伺服器 4 客戶端發訊息,伺服器解析協議,給每乙個客戶端 5 客戶端下線 server server project main...

GO 檔案的收發伺服器

傳送方 package main import fmt os net io 傳送檔案內容 func sendfile path string conn net.conn defer f.close 核心功能,讀多少就傳送多少 buf make byte,2048 fortrue else 給伺服器傳...