必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-09-26 12:43:14来源:IT技术作者:seo实验室小编阅读:88次「手机版」
 

五子棋单机版

说是用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                                                       

相关阅读

webservice_java实现

1. webservice介绍 1.1  webservice是使用http协议发送soap协议数据的一种远程调用技术。 1.2 soap:简单对象访问协议 1.2.1 soa

Android近期任务列表Recent List(Recents Screen)的实现

一、明确android的近期任务是什么:我们的手机下方一般有三个键,一个是返回键,中间的是home键,另一个是RecentList键,也就是最近浏览记

Struts2实现简单的登陆 / 注册功能

我 是用idea写的。 需求分析: 用户进入首页,选择登陆,跳转到登陆 / 注册页面的登陆模块,如有账户,登陆成功跳转首页,并显示用户名;如没

“手机+AIoT”战略 能否带小米突出重围实现“稳三望一

作为曾经因手机而风光无限的小米,近期发展形势却不容乐观。小米手机国内销量下滑、股价一直徘徊在10港元以下,面对如今的局势小米正

笔记本怎么实现合上盖子也能使用外接显示器?

笔记本外接显示器合上盖子之后,外接显示器会跟随笔记本屏幕进入休眠状态,怎么实现合上盖子也能使用外接显示器呢?下面我们就来看看详

分享到:

栏目导航

推荐阅读

热门阅读