三子棋
来源:互联网 发布:手机打开php文件 编辑:程序博客网 时间:2024/05/21 10:41
#include<stdio.h>#include<time.h>#pragma warning(disable:4996)#define ROW 3#define COL 3void menu(); void game();void init_board(char arr[ROW][COL]); //初始化棋盘void display_board(char arr[ROW][COL]); //打印棋盘 void play_move(char arr[ROW][COL]); //玩家下void compare_move(char arr[ROW][COL]); //电脑下char check_win(char arr[ROW][COL]); //检查是否赢了int is_full(char arr[ROW][COL]); //检查棋盘是否下满int main(){ int input = 1; while (input) { menu(); printf("请选择:"); scanf("%d", &input); switch (input) { case 0: printf("退出程序\n"); break; case 1: game(); break; default: printf("错误指令请重新输入\n"); break; } } system("pause"); return 0;}void game(){ char ret = 0; char arr[ROW][COL] = { 0 }; init_board(arr); display_board(arr); do { play_move(arr); printf("你落子后:\n"); display_board(arr); ret = check_win(arr); if (ret != ' ') break; compare_move(arr); printf("电脑落子后:\n"); display_board(arr); ret = check_win(arr); } while (ret = ' '); if (ret == 'x') printf("你赢了\n"); else if (ret == ' ') printf("电脑赢了\n"); else printf("平局\n");}void menu(){ printf("############################\n"); printf("#######1:start||0:exit######\n"); printf("############################\n");}void init_board(char arr[ROW][COL]){ int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { arr[i][j] = ' '; } }}void display_board(char arr[ROW][COL]){ int i = 0; printf("\n 1 2 3\n"); for (i = 0; i < ROW; i++) { printf("%d | %c | %c | %c |\n", i + 1, arr[i][0], arr[i][1], arr[i][2]); if (i != 2) printf(" |---|---|---|\n"); }}void play_move(char arr[ROW][COL]){ int x = 0, y = 0; while (1) { printf("请输入坐标ROW[1,3]COL[1,3]:"); scanf("%d%d", &x, &y); x--; y--; if ((x >= 0 && x<ROW) && (y >= 0 && y < COL)) { if (arr[x][y] ==' ') { arr[x][y] = 'x'; break; } else printf("该位置有子/n"); } else printf("非法坐标/n"); }}void compare_move(char arr[ROW][COL]){ int x = 0; int y = 0; srand((unsigned)time(NULL)); while (1) { if (is_full(arr) == 1) { printf("棋盘已满\n"); break; } else { x = rand() % 3; y = rand() % 3; if (arr[x][y] ==' ') { arr[x][y] = '0'; break; } } }}char check_win(char arr[ROW][COL]){ int i = 0; for (i = 0; i < ROW; i++) if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2] && arr[i][0] != ' ') return arr[i][0]; for (i = 0; i < COL; i++) if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i] && arr[0][i] != ' ') return arr[0][i]; if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] != ' ') return arr[0][0]; if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[0][2] != ' ') return arr[0][2]; if (is_full(arr) == 1) return 'e'; return ' ';}int is_full(char arr[ROW][COL]){ int i = 0, j = 0; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { if (arr[i][j] == ' ') return 0; } } return 1;}
1 0
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋,
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- Jstl的foreach循环中用el表达式输出集合
- 广州番禺2018年实现智能门禁全覆盖
- 关于博客的一些小说明
- java_virtualbox
- 重载函数及C++的运算符重载
- 三子棋
- Android6.0及以上版本一次请求多个权限的处理方式
- Windows下U盘安装centos7双系统
- 36-自动补全、邮箱自动补全
- Toolbox中ls不支持超过2G文件的问题
- 使用 Charles 获取 https 的数据
- BST二叉搜索树的查找,最大小值,删除,插入
- 设置ListView的item选中背景(选中之后不变色)
- 2016.11.16回顾