三子棋
来源:互联网 发布:网络借贷陷阱 编辑:程序博客网 时间:2024/06/04 19:48
源文件展示:
#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<stdlib.h>#include<time.h>#define ROWS 3#define COLS 3void init_board(char arr[ROWS][COLS], int rows, int cols);void display_board(char arr[ROWS][COLS], int rows, int cols);void computer(char arr[ROWS][COLS], int rows, int cols);void player(char arr[ROWS][COLS], int rows, int cols);char win(char arr[ROWS][COLS], int rows, int cols);#endif//__GAME_H__
功能函数模块:
#define _CRT_SECURE_NO_DEPRECATE#include"game.h"void init_board(char arr[ROWS][COLS], int rows, int cols){ int i = 0; int j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { arr[i][j] = ' '; } }}void display_board(char arr[ROWS][COLS], int rows, int cols){ int i = 0; for (i = 0; i < ROWS ; i++) { printf("| %c| %c| %c|\n", arr[i][0], arr[i][1], arr[i][2]); if (i != 2) { printf("|---|---|---|\n"); } }}void computer(char arr[ROWS][COLS], int rows, int cols)//电脑下棋函数{ while (1) { int x = rand() % 3; int y = rand() % 3; if (arr[x][y] == ' ') { arr[x][y] = '0'; break; } }}void player(char arr[ROWS][COLS], int rows, int cols)//玩家下棋函数{ int x = 0; int y = 0; while (1) { printf("请输入坐标(1到3)下棋\n"); scanf("%d %d", &x, &y); if (((x > 0) && (x <=3)) && ((y > 0) && (y <= 3))) { if (arr[x-1][y-1] == ' ') { arr[x-1][y-1] = '*'; break; } else { printf("此格已有棋子\n"); } } else { printf("输入坐标错误,请重新输入\n"); } }}static int over(char arr[ROWS][COLS], int rows, int cols)//判断棋盘是否满函数{ int i = 0; int j = 0; for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { if (arr[i][j] == ' ') return 0; } } return 1;}char win(char arr[ROWS][COLS], int rows, int cols)//检查输赢函数{ int i = 0; for (i=0; i < ROWS; i++) { if ((arr[i][0] == arr[i][1])&& (arr[i][1] == arr[i][2]) && (arr[i][1] != ' ')) { return arr[i][1]; } } for (i=0; i < COLS; i++) { if ((arr[0][i] == arr[1][i]) && (arr[1][i] == arr[2][i]) && (arr[1][i] != ' ')) { return arr[1][i]; } } if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]) && (arr[1][1] != ' ')) { return arr[1][1]; } if ((arr[2][2] == arr[1][1]) && (arr[1][1] == arr[0][0]) && (arr[1][1] != ' ')) { return arr[1][1]; } if (over(arr, ROWS, COLS)) { return 'f'; } return ' ';}
游戏实现的主函数如下:
#define _CRT_SECURE_NO_DEPRECATE#include"game.h"void meau(){ printf("******************************\n"); printf("***** 欢迎来到三子棋 *****\n"); printf("******* 1.play ********\n"); printf("******* 0.exit ********\n"); printf("******************************\n");}void game(){ int input = 0; char ret = 0; char arr[ROWS][COLS]; init_board(arr, ROWS, COLS); display_board(arr, ROWS, COLS); while (1) { printf("玩家下\n"); player(arr, ROWS, COLS); if ((ret = win(arr, ROWS, COLS)) != ' ') { break; } display_board(arr, ROWS, COLS); printf("电脑下\n"); computer(arr, ROWS, COLS); if ((ret = win(arr, ROWS, COLS)) != ' ') { break; } display_board(arr, ROWS, COLS); //if ((ret = win(arr, ROWS, COLS)) != ' ') //{ // break; //} } display_board(arr, ROWS, COLS); if (ret == '*') { printf("恭喜你,你赢了!\n"); } else if (ret == '0') { printf("很遗憾,电脑赢了\n"); } else if (ret == 'f') { printf("平局,是否再来?\n"); }}int main(){ int input = 0; srand((unsigned)time(NULL)); do { meau(); printf("请选择:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: break; default: printf("输入错误,请重新选择\n"); break; } } while (input); return 0;}
下面是运行的结果:
!
阅读全文
0 0
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋,
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- cgi ,fastcgi,PHP-FPM和php-cgi
- Android 如何做到隐藏手机底部虚拟按键?
- 006_HTTP_GET_POST
- yilide huawei gongzuo
- 软件工程第五次实验
- 三子棋
- shell参数的输入与运用
- ligerUI中ligerGrid的简易用法
- 多线程题例
- cocos2dx控件-----ListView的使用(label自动换行)
- day02-Linux的文件系统(目录树)
- 二叉树的层次遍历及求节点个数的算法
- python itertools的函数(含有排列组合函数)
- 公安综合指挥可视化系统首次亮相深圳安博会