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 语言程序(二)
- 如何写好 C main 函数
- dos下进行多种系统配置文件
- DOS中的pause命令简介
- DOS命令批量删除文件及制作该命令的批处理命令详解
- 分享dos批处理命令的一些使用技巧(截取字符串)
- dos、bat批处理延时执行命令的两种方法
- dos命令for用法详解
- dos 创建文件夹 md
- dos 内容重定向符 >和>>
- DOS中判断进程是否存在的方法
- dos下用recover修复损坏的TXT文件
- dos 文件删除 del命令
- dos 删除文件夹 rd
- dos 文件复制 copy命令
- DOS命令 Interlnk、Intersvr命令使用说明
- Lua和C语言的交互详解
- 非常好的for 教程, 当时我就是看这个学习for 的第1/2页
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数