3#include "ChessStepsChinese.h"
5CChessStepsChinese::CChessStepsChinese() :
CChessSteps()
15CChessStepsChinese::~CChessStepsChinese()
19std::string CChessStepsChinese::toString()
24 while (m_nSteps < m_Steps.size()) {
25 strStep curStep = m_Steps[m_nSteps];
26 switch (m_nSteps % 4) {
28 szRet += std::to_string(m_nSteps / 4 + 1) +
". ";
32 strStep fromStep = m_Steps[m_nSteps - 1];
33 szRet += StepToString(curStep, fromStep);
34 if(!curStep.szDescript.empty())
37 szRet += curStep.szDescript;
41 m_Board[fromStep.i][fromStep.j] = CPiece::NoQiZi;
42 m_Board[curStep.i][curStep.j] = fromStep.qz;
50 strStep fromStep = m_Steps[m_nSteps - 1];
51 szRet += StepToString(curStep, fromStep);
52 if(!curStep.szDescript.empty())
55 szRet += curStep.szDescript;
60 m_Board[fromStep.i][fromStep.j] = CPiece::NoQiZi;
61 m_Board[curStep.i][curStep.j] = fromStep.qz;
72int CChessStepsChinese::GetStep(
int &i,
int &j, CPiece::ENUM_QiZi &qz, std::string &szDescript)
77std::string CChessStepsChinese::GetQiZi(CPiece::ENUM_QiZi qz)
109std::string CChessStepsChinese::StepToString(strStep to, strStep from)
113 CPiece::ENUM_QiZi qz = from.qz;
116 szRet = GetQiZi(qz) + ChineseNumber[9 - from.i];
118 szRet += m_Ping + ChineseNumber[9 - to.i];
125 szRet += ChineseNumber[1];
129 szRet = GetQiZi(qz) + std::to_string(from.i + 1);
131 szRet += m_Ping + std::to_string(to.i + 1);
143 szRet = GetQiZi(qz) + ChineseNumber[9 - from.i];
148 szRet += ChineseNumber[9 - to.i];
152 szRet = GetQiZi(qz) + std::to_string(from.i + 1);
157 szRet += std::to_string(to.i + 1);
162 int nRet = FindSameQiZi(from);
165 szRet = GetQiZi(qz) + ChineseNumber[9 - from.i];
168 szRet = m_Qian + GetQiZi(qz);
171 szRet = m_Hou + GetQiZi(qz);
177 szRet += ChineseNumber[9 - to.i];
182 int nRet = FindSameQiZi(from);
185 szRet = GetQiZi(qz) + std::to_string(from.i + 1);
188 szRet = m_Qian + GetQiZi(qz);
191 szRet = m_Hou + GetQiZi(qz);
197 szRet += std::to_string(to.i + 1);
203 int nRet = FindSameQiZi(from);
206 szRet = GetQiZi(qz) + ChineseNumber[9 - from.i];
209 szRet = m_Qian + GetQiZi(qz);
212 szRet = m_Hou + GetQiZi(qz);
215 szRet += m_Ping + ChineseNumber[9 - to.i];
222 szRet += ChineseNumber[std::abs(to.j - from.j)];
229 int nRet = FindSameQiZi(from);
232 szRet = GetQiZi(qz) + std::to_string(from.i + 1);
235 szRet = m_Qian + GetQiZi(qz);
238 szRet = m_Hou + GetQiZi(qz);
241 szRet += m_Ping + std::to_string(to.i + 1);
248 szRet += std::to_string(std::abs(to.j - from.j));
254 szRet = FindSameColumBing(from);
257 szRet = GetQiZi(qz) + ChineseNumber[9 - from.i];
260 szRet += GetQiZi(qz);
264 szRet += m_Ping + ChineseNumber[9 - to.i];
266 szRet += m_Jin + ChineseNumber[std::abs(to.j - from.j)];
271 szRet = FindSameColumBing(from);
273 szRet = GetQiZi(qz) + std::to_string(from.i + 1);
275 szRet += GetQiZi(qz);
278 szRet += m_Ping + std::to_string(to.i + 1);
280 szRet += m_Jin + std::to_string(std::abs(to.j - from.j));
292int CChessStepsChinese::FindSameQiZi(strStep step)
295 for(
int j = 0; j < 10; j++)
297 if(j == step.j)
continue;
299 if(step.qz == m_Board[step.i][j])
330std::string CChessStepsChinese::FindSameColumBing(strStep step)
333 int nRet = FindSameQiZi(step);
343 for(
int i = 0; i < 9; i++)
346 for(
int j = 0; j < 10; j++)
348 if(m_Board[i][j] == step.qz)
368 for(
int j = 0; j < 10; j++)
370 if(m_Board[step.i][j] == step.qz)
375 for(
int j = 0; j < 10; j++)
377 if(m_Board[step.i][j] == step.qz)
401 return ChineseNumber[curNum];
406 for(
int j = 0; j < 10; j++)
408 if(m_Board[step.i][j] == step.qz)
413 if(nFirstCol == step.i)
414 return ChineseNumber[curNum];
415 return ChineseNumber[curNum + nTotal];
422 for(
int i = 8; i >=0 ; i--)
425 for(
int j = 9; j >= 0; j--)
427 if(m_Board[i][j] == step.qz)
447 for(
int j = 9; j >= 0; j--)
449 if(m_Board[step.i][j] == step.qz)
454 for(
int j = 9; j >= 0; j--)
456 if(m_Board[step.i][j] == step.qz)
480 return ChineseNumber[curNum];
485 for(
int j = 9; j >= 0; j--)
487 if(m_Board[step.i][j] == step.qz)
492 if(nFirstCol == step.i)
493 return ChineseNumber[curNum];
494 return ChineseNumber[curNum + nTotal];
static bool IsRedQiZi(ENUM_QiZi qz)
函数名:GetQiZiSide 功 能:得到棋子是红棋,还是黑棋 参 数: ENUM_QiZi qz:要专断的棋子 返回值:返回红棋还是黑棋或无棋 作 者:康 林 版 本:1....