失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > c++实现五子棋单机版(自娱自乐)

c++实现五子棋单机版(自娱自乐)

时间:2019-12-12 21:24:46

相关推荐

c++实现五子棋单机版(自娱自乐)

说是用c++写的,其实和C语言没差,也没用到C++与语言不同的地方,其实也是因为东西比较简单??

其实想做一个可以和其他人对战的五子棋,但是得先把单机实现了再说,鉴于linux系统对于很多字符都是默认输出不了的

所以用了其他符号表示棋盘以及棋子

1 /*-10-292简易五子棋3 */4 #include <iostream>5 #include <stdlib.h>6 //定义棋盘7 using namespace std;8 int ar[15][15];9 //根据此时落子情况打印棋盘10 void Print()11 {12cout << " ";13for(int i = 0;i < 15;++i) {14 if(i < 9)15 cout << i+1 << " ";16 else17 cout << i+1 << " ";18} 19cout << endl;20for(int i = 0;i < 15;++i) {21 if(i < 9)22 cout << i+1 << " ";23 else24 cout << i+1 << " ";25 for(int j = 0;j < 15;++j) {26 if(ar[i][j] == 0)27 cout << "* ";28 else if(ar[i][j] == 1)29 cout << "# ";30 else31 cout << "@ ";32 }33 cout << endl;34}35 }36 //根据坐标以及双方落子37 int Down(int m,int n,int object)38 {39if(m >14 || n > 14)40 return 0;41if(!ar[m-1][n-1]) {42 ar[m-1][n-1] = object;43 return 1;44 45}46return 0;47 }4849 //判断是否有一方胜利以便结束棋局50 int IsWin(void)51 {52int m;53int n;54for(int i = 0;i < 15;++i)55 for(int j = 0;j < 15;++j) {56 //判断此时落点的一横行57 for(m = 1;m < 5 && ar[i][j] && ar[i][j] == ar[i][j+m] && j+m < 15;++m);58 if(m == 5)59 return ar[i][j];60 //判断此时落点的一竖行61 for(m = 1;m < 5 && ar[i][j] && ar[i][j] == ar[i+m][j] && i+m < 15;++m)62 if(m == 5)63 return ar[i][j];64 //判断此时落点的斜行65 //分别判断四个方向的斜行66 for(m = 0;m < 4;++m) {67 switch(m) {68 //左下方向69 case 0:70for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i+n][j-n] && i+n < 15 && j+n < 15;++n);71if(n == 5)72 return ar[i][j];73 //左上方向74 case 1:75for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i-n][j-n] && i+n < 15 && j+n < 15;++n);76if(n == 5)77 return ar[i][j];78 //右上方向79 case 2:80for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i-n][j+n] && i+n < 15 && j+n < 15;++n);81if(n == 5)82 return ar[i][j];83 //右下方向84 case 3:85for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i+n][j+n] && i+n < 15 && j+n < 15;++n);86if(n == 5)87 return ar[i][j];88 89 }90 }91 }92return 0;93 }94 95 int main()96 {97Print();98int m,n;99int cnt = 3;100int win;101while(!(win = IsWin())) {102 if(cnt%2)103 cout << "请@方输入位置:";104 else105 cout << "请#方输入位置: ";106 cin >> m >> n;107 if(Down(m,n,cnt%2+1)) {108 system("clear");109 Print();110 }111 else {112 system("clear");113 cout << "错误,请选择正确的位置填入!" << endl;114 Print();115 --cnt;116 }117 ++cnt;118}119if(win == 1)120 cout << "#方胜利" << endl;121else122 cout << "@方胜利" << endl;123return 0;124 }125

如果觉得《c++实现五子棋单机版(自娱自乐)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。