0.1.0 • Published 13 days ago

anpu v0.1.0

Weekly downloads
-
License
Apache License 2....
Repository
-
Last release
13 days ago

anpu

安铺打地主的扑克牌玩法,服务端文档

TODO

  • 贡牌通讯
  • 清理Redis的Room
  • 游戏端显示
  • 重新匹配

对应关系

牌和数字

索引值Point散角花仔红桃大葵
401234
515678
629101112
7313141516
8417161920
9521222324
10625262728
J729303132
Q833343536
K937383940
A1041424344
21145464748
31249505152

玩法没有大小鬼

角色

角色索引索引值Role特征
贫农0Poor-
地主仔1MiniBoss大葵A
大地主2BigBoss大葵3
双地3DoubleBoss大葵A + 大葵3

贡牌规则

第一名第二名第三名第四名贡牌第一名第二名第三名第四名
-6-1-1-1
--13-1-1
-11-31
-222-6
---------
-22-1-1
-1-11-1
-0000
---------
-22-1-1
-0000
-1-11-1

花色 Suit(enum)

花色数字
大葵0
散角1
花仔2
红桃3

牌型 Kind(enum)

牌型类型名索引
单张ONE0
PAIR1
葫芦,三带二FULLHOUSE2
同花FLUSH3
拖尸,四带一FOUR4
蛇,顺STRAIGHT5
同花顺STRAIGHTFLUSH6

http接口(BODY JSON)

登录和注册

/login

post = {
  inputname: string
  inputpass: string
}

resp = { success:boolean uid:number access:string username:string }

## ws全局约定

### c2s auth

{ uid:number // 用户id access:string // 访问token }

## 事件定义

### 要求重新登录,不认token

s2cRelogin = {}

### 加入等候

c2sJoinWaiting = {}

### 等候状态

s2cWaitingStatus = { roomUsers: string[] // 等待中的用户名称列表 }

### 开始游戏

s2cGameStart = s2cPlayCard // 内容相同,只是事件名不同

### 玩家游戏端出牌

c2sPlayCard = { sentCards:number[] // 出牌 pass:boolean // 是否pass }

### 服务端给单个玩家下发

s2cPlayCard = { uid:number username:string myCards:number[] // 我的手牌 active:boolean // 是否可行动,准备出牌

ready: { // 可以行动,准备决策的内容 previousCard: number[] // 上家出牌 availableCards: number // 可用的牌组 enablePass: boolean // 是否可以过牌:开始时和傍风时不能pass isAllPassed: boolean // 是否所有玩家都pass了,即傍风 }

leftPlayer: { // 左边玩家 uid:number username:string cardCount: number // 剩余牌数 active: boolean // 是否在行动,准备出牌 winRank: number // 第几名,默认0未赢 winScore: number // 输赢分数 isBigBoss: boolean // 是否是大地主 isMiniBoss: boolean // 是否是小地主 isPrevious: boolean // 是否是上家 isAllPassed: boolean // 是否所有玩家都pass了,即傍风 hasDiamondFour: boolean, // 是否有散角4 }, rightPlayer = leftPlayer // 右边玩家 upperPlayer = leftPlayer // 上方玩家 }

### 结束结算

s2cGameOver = { continue:boolean // 是否继续游戏,或者直接退出到准备阶段 currentPlayer: Player, // 当前玩家 leftPlayer: Player, // 左边玩家 rightPlayer: Player, // 右边玩家 upperPlayer: Player, // 上方玩家 }

## 数据库表

### 用户表

CREATE TABLE user ( uid int NOT NULL AUTO_INCREMENT, username varchar(100) DEFAULT NULL, password varchar(100) DEFAULT NULL, PRIMARY KEY (uid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

### 游戏记录表

CREATE TABLE game_log ( id int NOT NULL AUTO_INCREMENT, room_id varchar(100) COLLATE utf8mb4_general_ci NOT NULL, start_time datetime DEFAULT NULL, end_time datetime DEFAULT NULL, user_ids varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL, records text COLLATE utf8mb4_general_ci, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

### 玩家记录表

CREATE TABLE play_log ( id int NOT NULL AUTO_INCREMENT, game_log_id int NOT NULL, room_id varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, uid int DEFAULT NULL, username varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, role tinyint DEFAULT NULL COMMENT '0贫农,1地主仔,2大地主,3双地', score tinyint DEFAULT NULL COMMENT '贡牌得分,有负数', rank tinyint DEFAULT NULL COMMENT '排第几', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

0.1.0

13 days ago

0.0.2

22 days ago

0.0.1

3 years ago