- #include<stdio.h>
- #include<stdlib.h>
- #include<time.h>
- void chess_board(char arr[3][3]) //打印棋盘
- {
- int i = 0;
- int j = 0;
- for (i = 0; i < 3; i++)
- {
- printf( " %c | %c | %c \n", arr [i][0], arr[i][1], arr[i][2]);
- if (i<2)
- printf( "---|---|---\n");
- }
- }
- int success_or_failure(char arr[3][3]) //判断胜负
- {
- int i = 0;
- int j = 0;
- for (i = 0; i < 3; i++)
- {
- if ((arr [i][0] == arr[i][1]) && ( arr[i][j] == arr [i][2]))
- {
- if (arr [i][0] == '#')
- return 1; //用户赢了
- else if (arr[i][0] == '0')
- return -1; //电脑赢了
- }
- }
- for (j = 0; j < 3; j++)
- {
- if ((arr [0][j] == arr[1][j]) && ( arr[1][j] == arr [2][j]))
- {
- if (arr [0][j] == '#')
- return 1; //用户赢了
- else if (arr[0][j] == '0')
- return -1; //电脑赢了
- }
- }
- if ((arr [0][0] == arr[1][1]) && ( arr[0][0] == arr [2][2]))
- {
- if (arr [1][1] == '#')
- return 1; //用户赢了
- else if (arr[1][1] == '0')
- return -1; //电脑赢了
- }
- if ((arr [0][2] == arr[1][1]) && ( arr[0][2] == arr [2][0]))
- {
- if (arr [1][1] == '#')
- return 1; //用户赢了
- else if (arr[1][1] == '0')
- return -1; //电脑赢了
- }
- for (i = 0; i < 3; i++)
- {
- for (j = 0; j < 3; j++)
- {
- if (arr [i][j] == ' ')
- return 0; //都没赢
- }
- }
- return -2; //平局
- }
- int user_game(char arr[3][3]) //用户输入
- {
- int x = 0;
- int y = 0;
- while (1)
- {
- printf( "please user input:(x, y) ");
- scanf( "%d%d", &x, &y);
- printf( "\n");
- if ((x<1 && x>3) || (y<1 && y>3)) //判断用户输入的是否合法
- {
- printf( "地址无效,请重新输入\n" );
- break;
- }
- if (arr [x - 1][y - 1] == ' ') //判断这个位置有没有被占
- {
- arr[x - 1][y - 1] = '#' ;
- break;
- }
- printf( "地址无效,请重新输入\n" );
- }
- chess_board( arr);
- int ret=success_or_failure(arr );
- return ret;
- }
- int computer_game(char arr[3][3]) //电脑输入
- {
- printf( "computer input:\n\n");
- int x = 0;
- int y = 0;
- while (1)
- { //产生一个没有被棋子占用的位置
- srand(( unsigned)time(NULL ));
- x = rand() % 3;
- srand(( unsigned)time(NULL ));
- y = rand() % 3;
- if (arr [x][y] == ' ')
- break;
- }
- arr[x][y]= '0' ;
- chess_board(arr);
- int ret=success_or_failure(arr);
- return ret;
- }
- void init(char arr[][3]) //初始化棋盘
- {
- for (int i = 0; i < 3; i++)
- {
- for (int j = 0; j<3; j++)
- {
- arr[i][j] = ' ';
- }
- }
- }
- int main()
- {
- printf( "**********************\n"); //打印菜单
- printf( "******* *******\n");
- printf( "*******1.go 0.exit**\n");
- printf( "******* *******\n");
- printf( "**********************\n");
- printf( "**********************\n\n\n");
- char arr[3][3];
- while (1)
- {
- init(arr); //初始化棋盘
- int count = 0;
- printf( "\nplease choice:1 or 0 : " );
- scanf( "%d", &count); //选择功能
- if (count == 0)
- {
- exit( EXIT_FAILURE);
- }
- else if (count == 1)
- {
- printf( "\n****游戏开始****\n\n" );
- while (1)
- { int n1 = user_game(arr);
- {
- if (n1 == 1)
- {
- printf( "****恭喜玩家赢了****\n" );
- break;
- }
- }
- int n2 = computer_game(arr);
- {
- if (n2 == -1)
- {
- printf( "****电脑赢了****\n" );
- break;
- }
- }
- if ((n1 == -2) || (n2 == -2))
- {
- printf( "*****平局******\n" );
- break;
- }
- }
- printf( "\n再来一局\n\n" );
- }
- return 0;
- }
游戏项目一:c语言实现三子棋
打印棋盘;
判断胜负;
用户输入;
电脑输入;
初始化棋盘;
打印菜单;
暂无关于此日志的评论。