c语言—三子棋

来源:互联网 发布:mysql greatest 编辑:程序博客网 时间:2024/06/05 18:57
test.c:
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h"void menu(){printf("*************************************\n");printf("****** 1.play game. 0.exit.  ********\n");}int main(){   int num=2;char chess_road[3][3]={0};menu();while(num!=1||num!=0){printf("请选择:");    scanf("%d",&num);if(num==1){game_road(chess_road);  while(is_full(chess_road))  {computer_game(chess_road);is_win(chess_road);player_game(chess_road);is_win(chess_road);}}else if(num==0)return;elseprintf("请重新输入:");}     }

   game.h:

#ifndef _GAME_H_#define _GAME_H_#include<stdio.h>  #include<malloc.h>  #include<time.h>  #include<stdlib.h> void game_road(char chess_road[3][3]);void printf_road(char chess_road[3][3]);int is_full(char chess_road[3][3]);void computer_game(char chess_road[3][3]);void player_game(char chess_road[3][3]);int is_win(char chess_road[3][3]);#endif
game.c:

#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h"void game_road(char chess_road[3][3])//设置游戏棋盘 {int i=0;int j=0;for(i=0;i<3;i++){for(j=0;j<3;j++){chess_road[i][j]=' ';}}for(i=0;i<3;i++){printf("%c|%c|%c\n",chess_road[i][0],chess_road[i][1],chess_road[i][2]);if(i!=2)printf("-|-|-\n");}}void printf_road(char chess_road[3][3])//打印游戏中的棋盘{int i=0;    printf("\n");for(i=0;i<3;i++){printf("%c|%c|%c\n",chess_road[i][0],chess_road[i][1],chess_road[i][2]);if(i!=2)printf("-|-|-\n");}}int is_full(char chess_road[3][3])//判断棋盘中的棋子是否满{int i=0,j=0;for(i=0;i<3;i++){for(j=0;j<3;j++){if (chess_road[i][j]==' ')return 1;}}return 0;}void computer_game(char chess_road[3][3])//电脑开始落子{int line=0;int column=0;int count=0;printf("电脑开始游戏...\n");if(is_full(chess_road)==0){exit(0);}while(line=rand()%3,column=rand()%3,chess_road[line][column]==' '){count++;chess_road[line][column]='*';if(count==1)break;}printf_road(chess_road);}void player_game(char chess_road[3][3])//玩家开始落子{int line=-1;int column=-1;if(is_full(chess_road)==0){exit(0);}do{   printf("玩家开始游戏...\n");printf("请输入坐标:");scanf("%d%d",&line,&column);}while(line>3||line<1||column<1||column>3||chess_road[line-1][column-1]!=' ');       chess_road[line-1][column-1]='+';   printf_road(chess_road);}int is_win(char chess_road[3][3])//判断胜负{int i=0;if(chess_road[0][0]==chess_road[1][1]&&chess_road[1][1]==chess_road[2][2]){if(chess_road[0][0]=='*'){         printf("电脑赢\n");  exit(0);}if(chess_road[0][0]=='+'){printf("玩家赢\n");exit(0);}}for( i=0;i<3;i++){if(chess_road[i][0]==chess_road[i][1]&&chess_road[i][1]==chess_road[i][2]){if(chess_road[i][0]=='*'){printf("电脑赢\n");exit(0);} if(chess_road[i][0]=='+') {printf("玩家赢\n");exit(0);}}}             if(is_full(chess_road)==0) {           printf("平局\n");      exit(0); } return 0;}