这才是我编的那个五子棋的代码。。。
时间:2011-07-14
来源:互联网
- #include <iostream>
- using namespace std;
- const char symbol[11][4]={"┌","┬","┐","├","┼","┤","└","┴","┘","○","●"}; //制表符及两枚棋子
- int x=0,y=0,a[15][15]={0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,
- 6,7,7,7,7,7,7,7,7,7,7,7,7,7,8}; //棋子的横纵坐标,以及15X15个可放棋子的位置
- int UsedBy[15][15]={0}; //用来标记棋位被占用的情况,0表示未使用,1、2分别表示被玩家1、玩家2占用
-
- void DrawChessboard() //用来绘制棋盘
- {
- cout<<" 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4"<<endl; //在第一行显示,用以标示棋位的列坐标
- for(int i=0;i<=14;i++) //使用循环语句
- {
- if (i!=0)
- cout<<endl;
- cout<<i%10; //输出棋位的行坐标
- for (int j=0;j<=14;j++)
- cout<<symbol[a[i][j]]; //输出八种不同位置的制表符
- }
- cout<<endl;
- }
-
- void Player1 () //玩家1下棋子
- {
- cout<<"请1号玩家输入要下的棋子的坐标(先行后列,用空格隔开):";
- while (cin>>x>>y)
- {
-
- if (UsedBy[x][y]==0 && x>=0 && x<=14 && y>=0 && y<=14)
- {
- UsedBy[x][y]=1; //将指定坐标的棋位标记为玩家1的棋子占用
- a[x][y]=9; //为放置玩家1的棋子做准备
- system ("cls"); //清屏
- DrawChessboard(); //重新绘制棋盘
- break;
- }
- else
- cout<<"输入错误,1号玩家请重新输入:";
- }
- }
- void Player2 () //玩家2下棋子,下列过程类似函数Player1
- {
- cout<<"请2号玩家输入要下的棋子的坐标(先行后列,用空格隔开):";
- while (cin>>x>>y)
- {
-
- if (UsedBy[x][y]==0 && x>=0 && x<=14 && y>=0 && y<=14)
- {
- UsedBy[x][y]=2;
- a[x][y]=10;
- system ("cls");
- DrawChessboard();
- break;
- }
- else
- cout<<"输入错误,2号玩家请重新输入:";
- }
- }
- int judge (int x,int y,int player) //用来判断胜负
- {
- int lianzi=1; //用来标记同一种棋子连着的最多个数
- for (int m=-1;m<=0;m++)
- for (int n=-1;n<=1;n++)
- {
- if (m!=0 || n!=0)
- {
- for (int i=1;i<=4;i++)
- {
- if (x+i*m>=0 && x+i*m<=14 && y+i*n>=0 && y+i*n<=14 && UsedBy[x+i*m][y+i*n]==player)
- lianzi++;
- else
- break;
- }
- for(i=-1;i>=-4;i--)
- {
- if (x+i*m>=0 && x+i*m<=14 && y+i*n>=0 && y+i*n<=14 && UsedBy[x+i*m][y+i*n]==player)
- lianzi++;
- else
- break;
- }
- if(lianzi>=5)
- return 1; //返回值为0表示当前判断的玩家已经胜出
- else
- lianzi=1;
- }
- }
- return 0; //返回值为0表示当前判断的玩家没有胜出
- }
- void main ()
- {
- system ("title 五子棋二人对战平台"); //程序运行窗口的标题
- system ("color 60"); //用来设置程序运行窗口的背景色与前景色
- system ("mode con cols=40 lines=25"); //用来设置程序运行窗口的宽高
- DrawChessboard();
- while (1)
- {
- Player1 (); //玩家1输入棋子的坐标
- if (judge(x,y,1)==1) //判断玩家1是否获胜
- {
- cout<<"1号玩家获胜!"<<endl;
- break;
- }
- Player2 (); //玩家2输入棋子的坐标
- if (judge(x,y,2)==1) //判断玩家2是否获胜
- {
- cout<<"2号玩家获胜!"<<endl;
- break;
- }
- }
- }
作者: 杜海洋 发布时间: 2011-07-14
发现一个好玩的现象:Discuz!代码中的斜体字代码与数组中的下标运算符经常冲突。。。
就是这个玩艺儿:
复制代码
就是这个玩艺儿:
- [i]
作者: 杜海洋 发布时间: 2011-07-14
所以最终我把程序全放到code标签里了。。。不然出来的帖子内容是斜体的。。
作者: 杜海洋 发布时间: 2011-07-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28