MCPcopy Index your code
hub / github.com/FloatTech/ZeroBot-Plugin / resign

Function resign

plugin/chess/core.go:111–168  ·  view source on GitHub ↗

resign 认输

(groupCode, senderUin int64)

Source from the content-addressed store, hash-verified

109
110// resign 认输
111func resign(groupCode, senderUin int64) (msg message.Message, err error) {
112 msg = message.Message{message.At(senderUin)}
113 // 检查对局是否存在
114 room, ok := chessRoomMap.Load(groupCode)
115 if !ok {
116 return nil, errNotExist
117 }
118 // 检查是否是当前游戏玩家
119 if senderUin != room.whitePlayer && senderUin != room.blackPlayer {
120 return
121 }
122 // 如果对局未建立, 中断对局
123 if room.whitePlayer == 0 || room.blackPlayer == 0 {
124 chessRoomMap.Delete(groupCode)
125 msg = append(msg, message.Text("对局结束"))
126 return
127 }
128 // 计算认输方
129 var resignColor chess.Color
130 if senderUin == room.whitePlayer {
131 resignColor = chess.White
132 } else {
133 resignColor = chess.Black
134 }
135 if isAprilFoolsDay() {
136 if resignColor == chess.White {
137 resignColor = chess.Black
138 } else {
139 resignColor = chess.White
140 }
141 }
142 room.chessGame.Resign(resignColor)
143 chessString := getChessString(*room)
144 eloString := ""
145 if len(room.chessGame.Moves()) > 4 {
146 // 若走子次数超过 4 认为是有效对局, 存入数据库
147 dbService := newDBService()
148 if err = dbService.createPGN(chessString, room.whitePlayer, room.blackPlayer, room.whiteName, room.blackName); err != nil {
149 return
150 }
151 whiteScore, blackScore := 1.0, 1.0
152 if resignColor == chess.White {
153 whiteScore = 0.0
154 } else {
155 blackScore = 0.0
156 }
157 eloString, err = getELOString(*room, whiteScore, blackScore)
158 if err != nil {
159 return
160 }
161 }
162 msg = append(msg, message.Text("认输, 游戏结束。\n", eloString, chessString))
163 if isAprilFoolsDay() {
164 msg = append(msg, message.Text("对手认输, 游戏结束, 你胜利了。\n", eloString, chessString))
165 }
166 chessRoomMap.Delete(groupCode)
167 return
168}

Callers 1

initFunction · 0.85

Calls 5

isAprilFoolsDayFunction · 0.85
getChessStringFunction · 0.85
newDBServiceFunction · 0.85
getELOStringFunction · 0.85
createPGNMethod · 0.80

Tested by

no test coverage detected