三子棋的简单实现
来源:互联网 发布:mac看不了b站 编辑:程序博客网 时间:2024/06/05 07:25
//game.h
#ifndef _GAME_H#define _GAME_H#define ROW 3#define COL 3#include <stdio.h>#include <time.h>void Display(char arr[ROW][COL], int row, int col);void InitBoard(char arr[ROW][COL], int row, int col);void computer_move(char arr[ROW][COL]);void player_move(char arr[ROW][COL], int row, int col);char check_win(char arr[ROW][COL], int row, int col);#endif //end _GAME_H_
//game.c
#define _CRT_SECURE_NO_WARNINGS#include "game.h"int check_full(char arr[ROW][COL], int row, int col){ int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { if (arr[i][j] == ' ') { return 0; } } } return 1;}char check_win(char arr[ROW][COL], int row, int col){ int i = 0; int j = 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 (j = 0; j < row; j++) { if (arr[0][j] == arr[1][j] && arr[1][j] == arr[2][j] && arr[0][j] != ' ') return arr[0][j]; } 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 (check_full(arr, row, col)) { return 'q'; } return ' ';}void computer_move(char arr[ROW][COL]){ int x = 0; int y = 0; while (1) { x = rand() % 3; y = rand() % 3; if (arr[x][y] == ' ') { printf("电脑走\n"); arr[x][y] = 'O'; Display(arr, ROW, COL); break; } }}void player_move(char arr[ROW][COL], int row, int col){ int x = 0; int y = 0; while (1) { printf("请输入坐标>:"); scanf("%d%d", &x, &y); printf("玩家走\n"); x--; y--; if ((x >= 0) && (x <= 2) && (y >= 0) && (y <= 2) && (arr[x][y] == ' ')) { arr[x][y] = 'X'; Display(arr, ROW, COL); break; } printf("坐标有误"); }}void Display(char arr[ROW][COL], int row, int col){ int i = 0; int j = 0; for (i = 0; i < row; i++) { printf(" %c | %c | %c \n", arr[i][0],arr[i][1],arr[i][2]); if (i != (row - 1)) printf("---|---|---\n"); } printf(" \n");}void InitBoard(char arr[ROW][COL], int row, int col){ int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { arr[i][j] = ' '; } }}
//test.c
#define _CRT_SECURE_NO_WARNINGS#include "game.h"void menu(){ printf("*******************************\n"); printf("**** 1.play 0.exit ********\n"); printf("*******************************\n");}void game(){ int ret = 0; char arr[ROW][COL]; InitBoard(arr, ROW, COL); Display(arr, ROW, COL); do { computer_move(arr); ret = check_win(arr, ROW, COL); if (ret != ' ') { break; } player_move(arr, ROW, COL); ret = check_win(arr, ROW, COL); } while (ret == ' '); if (ret == 'X') printf("玩家赢\n"); else if (ret == 'O') printf("电脑赢\n"); else if (ret == 'q') printf("平局\n");}void test(){ int input = 0; srand((unsigned)time(NULL)); do { menu(); printf("请选择>:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: break; default: printf("选择错误"); break; } } while (input);}int main(){ test(); return 0;}
阅读全文
0 0
- 三子棋的简单实现
- 三子棋的简单实现
- 三子棋的简单实现
- 简单的三子棋的实现
- 杀毒软件的简单实现的简单实现
- 简单的小游戏---代码实现三子棋
- c语言实现简单的三子棋
- C语言三子棋的简单实现
- C语言实现简单的三子棋小游戏
- 杀毒软件的简单实现
- 俄罗斯方块的简单实现
- 简单文件系统的实现
- 杀毒软件的简单实现
- 杀毒软件的简单实现
- strstr()的简单实现
- printf 的简单实现
- 简单文件系统的实现
- 简单的ajax实现
- 预测下即将出版的关于微信小程序的书籍
- 微信小程序开发资源汇总 awesome-wechat-weapp
- 为什么 Math.min() 比 Math.max() 大?(续)
- Math.min() 为什么比 Math.max() 大?
- JavaScript、jQuery、AJAX、JSON 这四个之间的关系?
- 三子棋的简单实现
- 为什么 ++[[]][+[]]+[+[]] = 10?
- Java编码方式
- GitHub for Windows 使用了哪些开源库(一)
- 两个月之前为 Phodal 新书《自己动手设计物联网》作序,今天终于正式开售了
- HTTP状态码451:基于法律上的原因,我不能向你展示网页内容
- 我是 justjavac,在「公众号」回答任何问题
- 知乎万粉俱乐部:每个群都会「水」,我总觉得我不会
- 微信公众号(justjavac)正式接受外部投稿,所有打赏金额归投稿者