五子棋单机版
说是用c++写的,其实和C语言没差,也没用到C++与语言不同的地方,其实也是因为东西比较简单??
其实想做一个可以和其他人对战的五子棋,但是得先把单机实现了再说,鉴于linux系统对于很多字符都是默认输出不了的
所以用了其他符号表示棋盘以及棋子
1 /*2018-10-29
2 简易五子棋
3 */
4 #include <iOStream>
5 #include <stdlib.h>
6 //定义棋盘
7 using namespace std;
8 int ar[15][15];
9 //根据此时落子情况打印棋盘
10 void print()
11 {
12 cout << " ";
13 for(int i = 0;i < 15;++i) {
14 if(i < 9)
15 cout << i+1 << " ";
16 else
17 cout << i+1 << " ";
18 }
19 cout << endl;
20 for(int i = 0;i < 15;++i) {
21 if(i < 9)
22 cout << i+1 << " ";
23 else
24 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 else
31 cout << "@ ";
32 }
33 cout << endl;
34 }
35 }
36 //根据坐标以及双方落子
37 int Down(int m,int n,int object)
38 {
39 if(m >14 || n > 14)
40 return 0;
41 if(!ar[m-1][n-1]) {
42 ar[m-1][n-1] = object;
43 return 1;
44
45 }
46 return 0;
47 }
48
49 //判断是否有一方胜利以便结束棋局
50 int IsWin(void)
51 {
52 int m;
53 int n;
54 for(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:
70 for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i+n][j-n] && i+n < 15 && j+n < 15;++n);
71 if(n == 5)
72 return ar[i][j];
73 //左上方向
74 case 1:
75 for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i-n][j-n] && i+n < 15 && j+n < 15;++n);
76 if(n == 5)
77 return ar[i][j];
78 //右上方向
79 case 2:
80 for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i-n][j+n] && i+n < 15 && j+n < 15;++n);
81 if(n == 5)
82 return ar[i][j];
83 //右下方向
84 case 3:
85 for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i+n][j+n] && i+n < 15 && j+n < 15;++n);
86 if(n == 5)
87 return ar[i][j];
88
89 }
90 }
91 }
92 return 0;
93 }
94
95 int main()
96 {
97 Print();
98 int m,n;
99 int cnt = 3;
100 int win;
101 while(!(win = IsWin())) {
102 if(cnt%2)
103 cout << "请@方输入位置:";
104 else
105 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 }
119 if(win == 1)
120 cout << "#方胜利" << endl;
121 else
122 cout << "@方胜利" << endl;
123 return 0;
124 }
125
相关阅读
1. webservice介绍 1.1 webservice是使用http协议发送soap协议数据的一种远程调用技术。 1.2 soap:简单对象访问协议 1.2.1 soa
Android近期任务列表Recent List(Recents Screen)的实现
一、明确android的近期任务是什么:我们的手机下方一般有三个键,一个是返回键,中间的是home键,另一个是RecentList键,也就是最近浏览记
我 是用idea写的。 需求分析: 用户进入首页,选择登陆,跳转到登陆 / 注册页面的登陆模块,如有账户,登陆成功跳转首页,并显示用户名;如没
作为曾经因手机而风光无限的小米,近期发展形势却不容乐观。小米手机国内销量下滑、股价一直徘徊在10港元以下,面对如今的局势小米正
笔记本外接显示器合上盖子之后,外接显示器会跟随笔记本屏幕进入休眠状态,怎么实现合上盖子也能使用外接显示器呢?下面我们就来看看详