三子棋的C实现

来源:互联网 发布:数据库分页查询sql 编辑:程序博客网 时间:2024/06/05 14:54

三子棋的C实现


#ifndef __GAME_H__#define __GAME_H__#include#include#include#define COLS 3#define ROWS 3void chessboard(char arr[ROWS][COLS], int row, int col);//打印棋盘void init_board(char arr[ROWS][COLS], int row, int col);//初始化棋盘,待输入处为‘ ’void P_play(char arr[ROWS][COLS], int row, int col);//玩家执子void C_play(char arr[ROWS][COLS], int row, int col);//电脑执子char check_win(char arr[ROWS][COLS], int row, int col);//判断胜负#endif//__GAMW_H__

#include#include"game.h"void chessboard(char arr[ROWS][COLS],int row,int col){int i=0;for(i=0;i=0)&&(i<=3))&&((j>=0)&&(j<=3))){if(arr[i][j] ==' '){arr[i][j] ='0';break;}elseprintf("输入有误,请重新输入:\n");}elseprintf("输入有误,请重新输入:\n");}}void C_play(char arr[ROWS][COLS], int row, int col){while(1){int x = rand()%3;//产生小于3的随机值int y = rand()%3;if(arr[x][y]==' '){printf("电脑执子:\n");arr[x][y]='X';break;}}}int draw(char arr[ROWS][COLS], int row, int col)//平局分析{int i=0;int j=0;for(i=0; i

#include#include"game.h"#includevoid menu(){printf("********************************\n");printf("**** 1.Play  0.Exit  2.Help ****\n");printf("********************************\n");}void game(){char arr[ROWS][COLS];int ret=0;init_board(arr,ROWS,COLS);//初始化棋盘chessboard(arr,ROWS,COLS);//打印棋盘srand((unsigned int)time(NULL));//产生随机值while(1){P_play(arr,ROWS,COLS);//玩家执子if((ret=check_win(arr,ROWS,COLS))!=' ')//判断输赢{break;}chessboard(arr,ROWS,COLS);C_play(arr,ROWS,COLS);//电脑执子if((ret=check_win(arr,ROWS,COLS))!=' '){break;}chessboard(arr,ROWS,COLS);}if(ret=='0')printf("玩家赢\n");else if(ret=='X')printf("电脑赢\n");else if(ret=='q')printf("平局\n");chessboard(arr,ROWS,COLS);}void help(){printf("玩家执子请输入坐标\n");printf("坐标是从左上第一格开始,从上到下,从左到右顺序的行列坐标\n");printf("我也不知道还能帮到你什么...\n");printf("游戏愉快\n");}void test(){int input=0;do{menu(); //打印菜单printf("请选择:");scanf("%d",&input);switch(input){case 1:game();break;case 0:break;case 2:help();break;default:printf("输入有误,请重新输入:\n");break;}}while(input);}int main(){test();return 0;}
游戏截图

0 0