C语言实现下三子棋
来源:互联网 发布:相叶雅纪水川麻美 知乎 编辑:程序博客网 时间:2024/05/04 05:02
三子棋的代码我写了一个.h头文件,用于声明,两个.c文件,其中一个用于函数实现,一个用于测试。代码如下:
Checkerboard.h文件:
#define _CRT_SECURE_NO_WARNINGS 1#ifndef __CHESSBOARD_H__#define __CHESSBOARD_H__#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>void menu();void Game();void Init(arr,rows,cols);void Checkerboard(arr,rows,cols);void Player(arr,rows,cols);int Win_check(arr,rows,cols);void Computer(arr,rows,cols);#endif __CHESSBOARD_H__
checkerboard.c文件:
#include"checkerboard.h"void menu(){printf("*******************************\n");printf("******** 1.play *********\n");printf("******** 0.exit *********\n");printf("*******************************\n");}void Init(char arr[3][3],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 Checkerboard(char arr[3][3],int rows,int cols){int i = 0;int j = 0;for(i = 0;i < rows;i++){for(j = 0;j < cols;j++){printf(" %c ",arr[i][j]);if(j != 2)printf("|");}printf("\n");if(i != 2)printf("---|---|---\n");}}static int Full(char arr[3][3],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;}void Player(char arr[3][3],int rows,int cols){int x = 0;int y = 0;printf("Please input (x y):>");while(1){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] = 'X';break;}else{printf("Please input again(x y):>");}}else{printf("Please input again(x y):>");}}}void Computer(char arr[3][3],int rows,int cols){int x = 0;int y = 0;srand((unsigned int)time(NULL));while(1){x = rand()%3;y = rand()%3;if(arr[x][y] == ' '){arr[x][y] = 'O';break;}else{if(Full(arr,rows,cols) == 0)continue;elsebreak;}}}int Win_check(char arr[3][3],int rows,int cols){int i = 0;int ret = 0;for(i = 0;i < rows;i++){if((arr[i][0] == arr[i][1])&&(arr[i][2] == arr[i][1])&&(arr[i][1] != ' '))return arr[i][1];}for(i = 0;i < rows;i++){if((arr[0][i] == arr[1][i])&&(arr[2][i] == arr[1][i])&&(arr[1][i] != ' '))return arr[1][i];}if((arr[0][0] == arr[1][1])&&(arr[2][2] == arr[1][1])&&(arr[1][1] != ' '))return arr[1][1];if((arr[0][2] == arr[1][1])&&(arr[2][0] == arr[1][1])&&(arr[1][1] != ' '))return arr[1][1];if(ret = Full(arr,rows,cols))return 'q';return 0;}void Game(){char arr[3][3] = {0};int rows = 3;int cols = 3;int ret = 0;Init(arr,rows,cols);Checkerboard(arr,rows,cols);do{Player(arr,rows,cols);if((ret = Win_check(arr,rows,cols)) != 0){Checkerboard(arr,rows,cols);break;}Computer(arr,rows,cols);Checkerboard(arr,rows,cols);ret = Win_check(arr,rows,cols);}while(ret == 0);if(ret == 'X'){printf("congratulations,you are winner!\n");}else if(ret == 'q'){printf("It is a draw!\n");}else if(ret == 'O'){printf("What a pity ,computer is winner!\n");}}
main.c文件:
#define _CRT_SECURE_NO_WARNINGS 1int main(){int input = 0;do{menu();printf("Please choose:\n");scanf("%d",&input);switch(input){case 1:Game();break;case 0:break;default:printf("Error input.\n");break;}}while(input);return 0;}
0 0
- C语言实现下三子棋
- 链栈 C语言实现
- 地球 c语言实现
- C语言实现堆栈
- c语言实现计算器
- TrimLeft C语言实现
- C语言实现有限状态机
- 迪杰斯特拉 C语言实现
- C语言实现FIR
- C语言实现有限状态机
- C语言实现双链表
- C语言实现析构器
- C语言实现:万年历
- C语言实现有限状态机
- 二叉排序树 C语言实现
- C语言实现库函数
- c语言实现memcpy
- 基数排序C语言实现
- css3按钮波纹效果
- swust oj 1614 取模 (快速二分幂,降幂)
- CCF201604-3路径解析C++未完善源码
- java下载文件的时候中文名乱码
- Python mock
- C语言实现下三子棋
- UIPickView和UIDatePicker(了解)
- Intelij IDEA 2016.3安装mybatis插件并激活教程
- ActiveAndroid源码分析
- [SESSION]--深度解析 Session 机制
- Linux-vim编辑器的配置
- 追加数据到excel表格
- px rem em 单位的理解和单位换算
- 微信公众平台开发教程(一)