当前位置:   article > 正文

C++五子棋(未做完,但能玩,而且还不错)

C++五子棋(未做完,但能玩,而且还不错)

代码放下面了,关于步骤介绍的我以后再完善一下。

  1. #include<bits/stdc++.h>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<ctime>
  5. #include<windows.h>
  6. #include<stdlib.h>
  7. #include<time.h>
  8. #define random(x) (rand()%x)
  9. using namespace std;
  10. //--------------------------------五子棋------------------------------------//
  11. //player_1:o
  12. //player_2:x
  13. int Game_mode;
  14. char qizi[25][25];
  15. HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
  16. //主要模块
  17. void print_checkerboard(){
  18. SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  19. cout<<" ";
  20. for(int i=1;i<=20;i++){
  21. cout<<i<<" ";
  22. if(i<10) cout<<" ";
  23. }
  24. cout<<endl;
  25. for(int i=1;i<=20;i++){
  26. if(i<10) cout<<" ";
  27. cout<<i<<" ";
  28. for(int j=1;j<=20;j++){
  29. if(qizi[i][j]=='o'){
  30. SetConsoleTextAttribute(handle, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
  31. cout<<qizi[i][j]<<" ";
  32. SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  33. }else if(qizi[i][j]=='x'){
  34. SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY);
  35. cout<<qizi[i][j]<<" ";
  36. SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  37. }else{
  38. SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  39. cout<<qizi[i][j]<<" ";
  40. }
  41. }
  42. cout<<endl;
  43. }
  44. }
  45. bool inspect_1(){
  46. for(int i=1;i<=20;i++){
  47. for(int j=1;j<=20;j++){
  48. if(qizi[i][j]=='o'){
  49. if((qizi[i+1][j]=='o'&&qizi[i+2][j]=='o'&&qizi[i+3][j]=='o'&&qizi[i+4][j]=='o') or
  50. (qizi[i-1][j]=='o'&&qizi[i-2][j]=='o'&&qizi[i-3][j]=='o'&&qizi[i-4][j]=='o') or
  51. (qizi[i][j+1]=='o'&&qizi[i][j+2]=='o'&&qizi[i][j+3]=='o'&&qizi[i][j+4]=='o') or
  52. (qizi[i][j-1]=='o'&&qizi[i][j-2]=='o'&&qizi[i][j-3]=='o'&&qizi[i][j-4]=='o') or
  53. (qizi[i+1][j+1]=='o'&&qizi[i+2][j+2]=='o'&&qizi[i+3][j+3]=='o'&&qizi[i+4][j+4]=='o') or
  54. (qizi[i+1][j-1]=='o'&&qizi[i+2][j-2]=='o'&&qizi[i+3][j-3]=='o'&&qizi[i+4][j-4]=='o') or
  55. (qizi[i-1][j+1]=='o'&&qizi[i-2][j+2]=='o'&&qizi[i-3][j+3]=='o'&&qizi[i-4][j+4]=='o') or
  56. (qizi[i-1][j-1]=='o'&&qizi[i-2][j-2]=='o'&&qizi[i-3][j-3]=='o'&&qizi[i-4][j-4]=='o') )
  57. {
  58. return true;
  59. }
  60. }
  61. }
  62. }
  63. return false;
  64. }
  65. bool inspect_2(){
  66. for(int i=1;i<=20;i++){
  67. for(int j=1;j<=20;j++){
  68. if(qizi[i][j]=='x'){
  69. if((qizi[i+1][j]=='x'&&qizi[i+2][j]=='x'&&qizi[i+3][j]=='x'&&qizi[i+4][j]=='x') or
  70. (qizi[i-1][j]=='x'&&qizi[i-2][j]=='x'&&qizi[i-3][j]=='x'&&qizi[i-4][j]=='x') or
  71. (qizi[i][j+1]=='x'&&qizi[i][j+2]=='x'&&qizi[i][j+3]=='x'&&qizi[i][j+4]=='x') or
  72. (qizi[i][j-1]=='x'&&qizi[i][j-2]=='x'&&qizi[i][j-3]=='x'&&qizi[i][j-4]=='x') or
  73. (qizi[i+1][j+1]=='x'&&qizi[i+2][j+2]=='x'&&qizi[i+3][j+3]=='x'&&qizi[i+4][j+4]=='x') or
  74. (qizi[i+1][j-1]=='x'&&qizi[i+2][j-2]=='x'&&qizi[i+3][j-3]=='x'&&qizi[i+4][j-4]=='x') or
  75. (qizi[i-1][j+1]=='x'&&qizi[i-2][j+2]=='x'&&qizi[i-3][j+3]=='x'&&qizi[i-4][j+4]=='x') or
  76. (qizi[i-1][j-1]=='x'&&qizi[i-2][j-2]=='x'&&qizi[i-3][j-3]=='x'&&qizi[i-4][j-4]=='x') )
  77. {
  78. return true;
  79. }
  80. }
  81. }
  82. }
  83. return false;
  84. }
  85. //电脑模块
  86. void reflection(){
  87. system("cls");
  88. for(int i=1;i<=2;i++){
  89. print_checkerboard();
  90. cout<<"电脑正在思考中";
  91. for(int i=1;i<=3;i++){
  92. cout<<".";
  93. Sleep(500);
  94. }
  95. system("cls");
  96. }
  97. }
  98. void lianzi_3_o(){
  99. for(int i=1;i<=20;i++){
  100. for(int j=1;j<=20;j++){
  101. if(qizi[i][j]=='o'){
  102. if(qizi[i+1][j]=='o' and qizi[i+2][j]=='o'){
  103. }
  104. }
  105. }
  106. }
  107. }
  108. int main(){
  109. memset(qizi, 42 , sizeof(qizi));
  110. HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
  111. SetConsoleTextAttribute(handle, BACKGROUND_BLUE | BACKGROUND_GREEN);
  112. SetConsoleTextAttribute(handle, FOREGROUND_BLUE );
  113. cout<<"请先确定游戏模式:"<<endl;
  114. cout<<"1.(玩家VS电脑)"<<endl;
  115. cout<<"2.(玩家VS玩家)"<<endl;
  116. SetConsoleTextAttribute(handle, FOREGROUND_RED );
  117. cin>>Game_mode;
  118. system("cls");
  119. if(Game_mode==1){
  120. // print_checkerboard();
  121. // int cmp=0,player=0;
  122. // int player_x=0,player_y=0;
  123. // int cmp_x=0,cmp_y=0;
  124. // int F_PER=0,F_CMP=0;
  125. // srand(( int )time(0));
  126. // int order=random(2);
  127. // if(order==1){
  128. // player=1,cmp=0;
  129. // F_PER=1;
  130. // cout<<"你先下。。。"<<endl;
  131. // Sleep(3000);
  132. // system("cls");
  133. // }else{
  134. // player=0,cmp=1;
  135. // F_CMP=1;
  136. // cout<<"电脑先下。。。"<<endl;
  137. // Sleep(3000);
  138. // system("cls");
  139. // }
  140. // while(inspect_1()==false and inspect_2()==false){
  141. // if(player==1){
  142. // int a=0,b=0;
  143. // while(a>20 or b>20 or qizi[a][b]=='o'||qizi[a][b]=='x'){
  144. // a=0,b=0;
  145. // cin>>a>>b;
  146. // if(a>20 or b>20){
  147. // system("cls");
  148. // print_checkerboard();
  149. // SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY);
  150. // cout<<"超出棋盘范围,请重新输入!"<<endl;
  151. // SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  152. // }
  153. // if(a<=20 and b<=20) {
  154. // if(qizi[a][b]=='o'||qizi[a][b]=='x'){
  155. // system("cls");
  156. // print_checkerboard();
  157. // SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY);
  158. // cout<<"此坐标已有棋子,请重新输入!"<<endl;
  159. // SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  160. // }else{
  161. // player_x=a,player_y=b;
  162. // break;
  163. // }
  164. //
  165. // }
  166. // }
  167. // if(F_PER==1){
  168. // qizi[player_x][player_y]='o';
  169. // system("cls");
  170. // print_checkerboard();
  171. // if(inspect_1()){
  172. // cout<<"哈哈,你赢了!"<<endl;
  173. // system("pause");
  174. // }
  175. // system("cls");
  176. // }else{
  177. // qizi[player_x][player_y]='x';
  178. // system("cls");
  179. // print_checkerboard();
  180. // if(inspect_2()){
  181. // cout<<"哈哈,你赢了!"<<endl;
  182. // system("pause");
  183. // }
  184. // }
  185. // }else{
  186. // int a=0,b=0;
  187. // print_checkerboard();
  188. // reflection();
  189. //
  190. // }
  191. // }
  192. }else if(Game_mode==2){
  193. bool player1=0,player2=0;
  194. int player1_x,player1_y;
  195. int player2_x,player2_y;
  196. print_checkerboard();
  197. while(inspect_1()==false and inspect_2()==false){
  198. if(player1==0) {
  199. int a=0,b=0;
  200. while(a>20 or b>20 or qizi[a][b]=='o'||qizi[a][b]=='x'){
  201. a=0,b=0;
  202. cin>>a>>b;
  203. if(a>20 or b>20){
  204. system("cls");
  205. print_checkerboard();
  206. SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY);
  207. cout<<"超出棋盘范围,请重新输入!"<<endl;
  208. SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  209. }
  210. if(a<=20 and b<=20) {
  211. if(qizi[a][b]=='o'||qizi[a][b]=='x'){
  212. system("cls");
  213. print_checkerboard();
  214. SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY);
  215. cout<<"此坐标已有棋子,请重新输入!"<<endl;
  216. SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  217. }else{
  218. player1_x=a,player1_y=b;
  219. break;
  220. }
  221. }
  222. }
  223. qizi[player1_x][player1_y]='o';
  224. system("cls");
  225. print_checkerboard();
  226. if(inspect_1()==true){
  227. cout<<"哈哈,玩家1,赢了!"<<endl;
  228. system("pause");
  229. return 0;
  230. }
  231. player1=1;
  232. player2=0;
  233. }
  234. if(player2==0) {
  235. int a=0,b=0;
  236. while(a>20 or b>20 or qizi[a][b]=='o'or qizi[a][b]=='x'){
  237. a=0,b=0;
  238. cin>>a>>b;
  239. if(a>20 or b>20){
  240. system("cls");
  241. print_checkerboard();
  242. SetConsoleTextAttribute(handle, FOREGROUND_RED);
  243. cout<<"超出棋盘范围,请重新输入!"<<endl;
  244. SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  245. }
  246. if(a<=20 and b<=20) {
  247. if(qizi[a][b]=='o'||qizi[a][b]=='x'){
  248. system("cls");
  249. print_checkerboard();
  250. SetConsoleTextAttribute(handle, FOREGROUND_RED);
  251. cout<<"此坐标已有棋子,请重新输入!"<<endl;
  252. SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  253. }else{
  254. player2_x=a,player2_y=b;
  255. break;
  256. }
  257. }
  258. }
  259. qizi[player2_x][player2_y]='x';
  260. system("cls");
  261. print_checkerboard();
  262. if(inspect_2()==true){
  263. cout<<"哈哈,玩家2,赢了!"<<endl;
  264. system("pause");
  265. return 0;
  266. }
  267. player1=0;
  268. player2=1;
  269. }
  270. }
  271. }
  272. else{
  273. cout<<"输入错误,结束。"<<endl;
  274. }
  275. return 0;
  276. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/910461
推荐阅读
相关标签
  

闽ICP备14008679号