ServerProtocol.cpp
上传用户:bsw_2008
上传日期:2013-07-09
资源大小:2446k
文件大小:3k
源码类别:

棋牌游戏

开发平台:

Visual C++

  1. // ServerProtocol.cpp: implementation of the CServerProtocol class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "CServerFrame.h"
  6. #include "ServerProtocol.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. //////////////////////////////////////////////////////////////////////
  13. // Construction/Destruction
  14. //////////////////////////////////////////////////////////////////////
  15. char CH=char(20);
  16. CServerProtocol::CServerProtocol()
  17. {
  18. }
  19. CServerProtocol::~CServerProtocol()
  20. {
  21. }
  22. char CServerProtocol::Analasys(CString str)
  23. {
  24. message=str;
  25. char k=' ',ch;int i=0,len=str.GetLength();
  26. ch=str.GetAt(i);
  27. if(ch!=CH)
  28. return k;
  29. k=str.GetAt(++i);
  30. switch(k)
  31. {
  32. case 'A':desk=0;
  33. ch=str.GetAt(++i);
  34. while(ch!=' '&&ch!=CH)
  35. {
  36. desk=desk*10+(int)(ch-'0');
  37. ch=str.GetAt(++i);
  38. }
  39. ch=str.GetAt(++i);chat.Empty();
  40. while(ch!=CH)
  41. {
  42. chat+=ch;ch=str.GetAt(++i);
  43. }
  44. break;
  45. case 'B':
  46. case 'P':
  47. case 'Q':
  48. desk=0;
  49. ch=str.GetAt(++i);
  50. while(ch!=' '&&ch!=CH)
  51. {
  52. desk=desk*10+(int)(ch-'0');
  53. ch=str.GetAt(++i);
  54. }
  55. ch=str.GetAt(++i);
  56. direct=(int)(ch-'0');
  57. break;
  58. case 'C':
  59. desk=0;
  60. ch=str.GetAt(++i);
  61. while(ch!=' '&&ch!=CH)
  62. {
  63. desk=desk*10+(int)(ch-'0');
  64. ch=str.GetAt(++i);
  65. }
  66. direct=(int)(str.GetAt(++i)-'0');i++;
  67. toBoard(str,i);
  68. break;
  69. case 'E':
  70. desk=0;
  71. ch=str.GetAt(++i);
  72. while(ch!=' '&&ch!=CH)
  73. {
  74. desk=desk*10+(int)(ch-'0');
  75. ch=str.GetAt(++i);
  76. }
  77. direct=(int)(str.GetAt(++i)-'0');i++;
  78. toMove(str,i);
  79. break;
  80. case 'L':
  81. ch=str.GetAt(++i);code.Empty();
  82. while(ch!=' '&&ch!=CH)
  83. {
  84. code+=ch;
  85. ch=str.GetAt(++i);
  86. }
  87. if(ch=str.GetAt(++i)=='1')
  88. sex="男";
  89. else
  90. sex="女";
  91. break;
  92. case 'N':
  93. ch=str.GetAt(++i);name.Empty();
  94. while(ch!=' '&&ch!=CH)
  95. {
  96. name+=ch;
  97. ch=str.GetAt(++i);
  98. }
  99. ch=str.GetAt(++i);code.Empty();
  100. while(ch!=' '&&ch!=CH)
  101. {
  102. code+=ch;
  103. ch=str.GetAt(++i);
  104. }
  105. break;
  106. }
  107. return k;
  108. }
  109. void CServerProtocol::toBoard(CString str,int i)
  110. {
  111. int n,j,k;
  112. char ch;
  113. for(j=11;j<17;j++)
  114. for(k=6;k<11;k++)
  115. {
  116. ch=str.GetAt(++i);
  117. n=0;
  118. while(ch!=' '&&ch!=CH)
  119. {
  120. n=n*10+(int)(ch-'0');
  121. ch=str.GetAt(++i);
  122. }
  123. board[j][k]=n;
  124. }
  125. }
  126. void CServerProtocol::toMove(CString str, int i)
  127. {
  128. int n=0;char ch;
  129. ch=str.GetAt(++i);
  130. while(ch!=' '&&ch!=CH)
  131. {
  132. n=n*10+(int)(ch-'0');
  133. ch=str.GetAt(++i);
  134. }
  135. from.x=n;
  136. n=0;ch=str.GetAt(++i);
  137. while(ch!=' '&&ch!=CH)
  138. {
  139. n=n*10+(int)(ch-'0');
  140. ch=str.GetAt(++i);
  141. }
  142. from.y=n;
  143. n=0;ch=str.GetAt(++i);
  144. while(ch!=' '&&ch!=CH)
  145. {
  146. n=n*10+(int)(ch-'0');
  147. ch=str.GetAt(++i);
  148. }
  149. to.x=n;
  150. n=0;ch=str.GetAt(++i);
  151. while(ch!=' '&&ch!=CH)
  152. {
  153. n=n*10+(int)(ch-'0');
  154. ch=str.GetAt(++i);
  155. }
  156. to.y=n;
  157. }
  158. CString CServerProtocol::toString(char k, int DESK, int DIRECT, int fromX, int fromY, int toX, int toY)
  159. {
  160. CString str=CH;
  161. switch(k)
  162. {
  163. case 'F':
  164. case 'G':
  165. case 'H':
  166. str+=k;
  167. str.Format("%d %d %d %d %d",DESK,fromX,fromY,toX,toY);
  168. str+=CH;
  169. break;
  170. case 'I':
  171. case 'J':
  172. case 'K':
  173. str+=k;
  174. str.Format("%d %d",DESK,DIRECT);
  175. str+=CH;
  176. break;
  177. default:
  178. break;
  179. }
  180. if(str.GetLength()==1)
  181. str=' ';
  182. return str;
  183. }