您的位置:首页 > 编程语言 > C语言/C++

Dos界面 五步棋

2016-05-23 20:37 302 查看

Dos界面 五步棋

室友上课的时候说要玩五步棋,我说电脑没有。
他开玩笑说:那你写一个啊(他以为很难),其实思路很简单,所以20分钟搞定。
想着以前代码都没存过,就保存一下吧:


#include<stdio.h>
#include<stdlib.h>
char map[11][11];
bool vis[11][11];
bool reStart = false;
int round = 0;
void init(){
round = 0;
reStart = false;
for (int i = 0; i < 10; i++){
map[0][i] = i + '0';
map[i][0] = i + '0';
}
map[0][10] = 'A';
map[10][0] = 'A';
for (int i = 1; i < 11; i++){
for (int j = 1; j < 11; j++){
map[i][j] = '+';
vis[i][j] = false;
}
}
}
void printMap(){
system("cls");
printf("当前棋盘:\n");
for (int i = 0; i < 11; i++)
for (int j = 0; j < 11; j++)
printf("%c%s", map[i][j], j == 10 ? "\n" : " ");
}
void isWin(int y,int x,char ch){
int xx, yy, len;
//横向 x 轴
yy = y, xx = x, len = 0;
for (; xx > 0; xx--){
if (map[yy][xx] == ch)
len++;
else
break;
}
yy = y, xx = x;
for (xx++; xx <= 10; xx++){
if (map[yy][xx] == ch)
len++;
else
break;
}
if (len >= 5){
printf("%c 方胜利!\n",ch);
reStart = true;
return;
}

//纵向 y 轴
yy = y, xx = x, len = 0;
for (; yy > 0; yy--){
if (map[yy][xx] == ch)
len++;
else
break;
}
yy = y, xx = x;
for (yy++; yy <= 10; yy++){
if (map[yy][xx] == ch)
len++;
else
break;
}
if (len >= 5){
printf("%c 方胜利!\n", ch);
reStart = true;
return;
}

//左上 到 右下
yy = y, xx = x, len = 0;
for (; yy > 0 && xx > 0; yy--,xx--){
if (map[yy][xx] == ch)
len++;
else
break;
}
yy = y, xx = x;
for (yy++,xx++; yy <= 10 && xx <= 10; yy++, xx++){
if (map[yy][xx] == ch)
len++;
else
break;
}
if (len >= 5){
printf("%c 方胜利!\n", ch);
reStart = true;
return;
}

//左下 到 右上
yy = y, xx = x, len = 0;
for (; yy > 0 && xx <= 10; yy--, xx++){
if (map[yy][xx] == ch)
len++;
else
break;
}
yy = y, xx = x;
for (yy++, xx--; yy <= 10 && xx > 0; yy++, xx--){
if (map[yy][xx] == ch)
len++;
else
break;
}
if (len >= 5){
printf("%c 方胜利!\n", ch);
reStart = true;
return;
}
}
int main(){
int x, y;
init();
printMap();
while (~scanf("%d%d", &y, &x)){
if(y > 10)
continue;
if(x > 10)
continue;
if (!vis[y][x]){
round++;
vis[y][x] = true;
map[y][x] = round % 2 ? 'O' : 'X';
printMap();
isWin(y,x,map[y][x]);
}
else
printf("位置上有棋子\n");
if (reStart){
printf("重新开始输入Y,否输入N\n");
char tmp;
scanf("%c", &tmp);
if (tmp == 'y' || tmp == 'Y'){
init();
printMap();
}
else{
printf("bye 大傻逼!\n");
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  五步棋 C语言 dos