123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package teen
- import (
- "encoding/json"
- "fmt"
- "math/rand"
- "os"
- "server/game"
- "server/game/room"
- "server/msg"
- "server/user"
- "time"
- "github.com/name5566/leaf/gate"
- "github.com/name5566/leaf/log"
- )
- type TeenPattiRoom struct {
- Boot string `json:"boot"`
- MinBuyin string `json:"minBuyin"`
- ChaalLimmit string `json:"chaalLimmit"`
- PotLimit string `json:"potLimit"`
- TotalPlayers string `json:"totalPlayers"`
- RoomLevel string `json:"roomLevel"`
- RoomId string `json:"roomId"`
- Type string `json:"type"`
- }
- var GameConfig struct {
- GameId string `json:"game_id"`
- Name string `json:"name"`
- Status int `json:"status"`
- RoomList []TeenPattiRoom `json:"room_list"`
- ThinkTime int `json:"think_time"`
- }
- // var Teen_Patti_Room = &room.Room{
- // Id: "teen_patti",
- // Players: make([]*player.Player, 0),
- // Status: 1,
- // }
- var SelfSitPos int32 = 4
- func InitGame() {
- }
- func init() {
- data, err := os.ReadFile("../../bin/gamedata/teen_patti_conf.json")
- if err != nil {
- log.Fatal("%v", err)
- }
- err = json.Unmarshal(data, &GameConfig)
- if err != nil {
- log.Fatal("%v", err)
- }
- go handleEvents()
- }
- func createRoom(userId string, roomId string, agent gate.Agent) {
- //随即创建 1-3 个人机陪这个userId
- userData := agent.UserData().(*user.UserData)
- random := rand.Intn(3) + 1
- //先移除掉除自己之外的机器人
- userData.Teen_Patti_Room.RemoveAllRobot()
- sitPosList := randomSitPos(userData.Teen_Patti_Room, random)
- for i := 0; i < random; i++ {
- userData.Teen_Patti_Room.Players = append(userData.Teen_Patti_Room.Players, &room.Player{
- Id: fmt.Sprintf("%d", i),
- Agent: nil,
- IsRobot: true,
- UserData: createRobotUserData(),
- SitPos: int32(sitPosList[i]),
- HandCards: &[]msg.ReqCard{},
- IsPacked: false,
- IsSeen: false,
- IsShow: false,
- IsDealer: false,
- })
- }
- randomDealer(userData.Teen_Patti_Room)
- }
- // 创建人机的UserData
- func createRobotUserData() *user.UserData {
- return &user.UserData{
- Id: "robot",
- Status: 1,
- Teen_Patti_Room: nil,
- Head_Image: randomIndianHeadImage(),
- Nickname: randomIndianName(),
- }
- }
- func startGame(userId string, roomId string, agent gate.Agent, teenPattiRoom *room.Room) {
- // agent := Teen_Patti_Room.GetPlayer(userId).Agent
- createRoom(userId, roomId, agent)
- agent.WriteMsg(&msg.ReqJoinRoom{
- UserId: userId,
- RoomId: roomId,
- GameId: "teen_patti",
- RoomInfo: buildRoom(teenPattiRoom),
- SitPos: SelfSitPos,
- })
- game.Module.Skeleton.AfterFunc(time.Second*2, func() {
- startDealCard(teenPattiRoom)
- })
- }
- /* 完整的52张牌映射:
- 黑桃(0):
- i=0: ♠A (Color=0, Point=1)
- i=1: ♠2 (Color=0, Point=2)
- i=2: ♠3 (Color=0, Point=3)
- ...
- i=10: ♠J (Color=0, Point=11)
- i=11: ♠Q (Color=0, Point=12)
- i=12: ♠K (Color=0, Point=13)
- 红桃(1):
- i=13: ♥A (Color=1, Point=1)
- i=14: ♥2 (Color=1, Point=2)
- i=15: ♥3 (Color=1, Point=3)
- ...
- i=23: ♥J (Color=1, Point=11)
- i=24: ♥Q (Color=1, Point=12)
- i=25: ♥K (Color=1, Point=13)
- 梅花(2):
- i=26: ♣A (Color=2, Point=1)
- i=27: ♣2 (Color=2, Point=2)
- i=28: ♣3 (Color=2, Point=3)
- ...
- i=36: ♣J (Color=2, Point=11)
- i=37: ♣Q (Color=2, Point=12)
- i=38: ♣K (Color=2, Point=13)
- 方块(3):
- i=39: ♦A (Color=3, Point=1)
- i=40: ♦2 (Color=3, Point=2)
- i=41: ♦3 (Color=3, Point=3)
- ...
- i=49: ♦J (Color=3, Point=11)
- i=50: ♦Q (Color=3, Point=12)
- i=51: ♦K (Color=3, Point=13)
- */
- // 初始化房间的卡牌
- func initCardDeck(c_room *room.Room) {
- // 创建长度为52的切片
- cards := make([]msg.ReqCard, 52)
- // 初始化卡牌
- for i := 0; i < 52; i++ {
- cards[i] = msg.ReqCard{
- Color: int32(i / 13),
- Point: int32(i%13 + 1),
- }
- }
- // 赋值给房间
- c_room.CardDeck = &cards
- }
- // 洗牌
- func shuffleCardDeck(deck *[]msg.ReqCard) {
- rand.Shuffle(len(*deck), func(i, j int) {
- (*deck)[i], (*deck)[j] = (*deck)[j], (*deck)[i]
- })
- }
|