小工程——棋盘游戏:(人机交互)

来源:互联网 发布:finalcap唱词字幕软件 编辑:程序博客网 时间:2024/05/21 13:47
Game.h#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<time.h>#include<stdlib.h>#define ROW 3#define COL 3#pragma oncevoid init_board(char arr[ROW][COL]);void display_board(char arr[ROW][COL]);void player_move(char arr[ROW][COL]);void check_win(char arr[ROW][COL]);void computer(char arr[ROW][COL]);int full(char arr[ROW][COL]);
<pre class="html" name="code">Game.c#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#define"game.h"void init_board(char arr[ROW][COL]){int i= 0;int j= 0;for (i = 0; i < ROW; i++){for (j = 0; j < COL; j++){arr[i][j] == ' ';}}}void display_board(char arr[i][j]){int i = 0;for (i = 0; i <ROW; i++){printf("%c|%c|%c\n",arr[i][0],arr[i][1],arr[i][2]);if (i < 2)printf("--|--|--\n");}}void player_move(arr[ROW][COL]){int x = 0;int y = 0;char arr[3][3];while (1){printf("请输入坐标:");scanf("%d%d", &x, &y);x--;y--;if ((x >= 0) && (x <= 2) && (y >= 0) && (y<=2))if (arr[x][y] == ' '){arr[x][y] = 'x';break;}elseprintf("坐标被占用\n");}}void comptuer_move(char arr[ROW][COL]){int x = 0;int y = 0;srand((unsigned)time(NULL));while (1){x = rand() % 3;y = rand() % 3;if (full(arr) == 1)break;if (arr[x][y] == ' '){arr[x][y] = '0';break;}}}int full(char arr[ROW][COL]){int i = 0;int j = 0;for (i = 0; i < ROW; i++){for (j = 0; j < COL; j++){if (arr[i][j] == ' ')return 0;}return 1;}}char check_win(char arr[ROW][COL]){int i = 0;for (i = 0; i < 3; i++){if ((arr[i][0] == arr[i][1]) && (arr[i][1] == arr[i][2]) && (arr[i][0] != ' '))return arr[i][0];}for (i = 0; i < 3; i++){if ((arr[0][i] == arr[1][i]) && (arr[1][i] == arr[2][i]) && (arr[0][i] != ' '))return arr[0][i];}for (i = 0; i < 3; i++){if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]) && (arr[0][0] != ' '))return arr[0][0];}for (i = 0; i < 3; i++){if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]) && (arr[0][2] != ' '))return arr[0][2];}if (full(arr) == 1){return 'q';}return ' ';}

Test.c#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<windows.h>#include"game.h"//调用游戏头文件void main(){char ret = 0;char arr[ROW][COL];init_board(arr);do{display_board(arr);player_move(arr);ret = check_win(arr);if (ret != ' ')break;computer_move(arr);ret = check_win(arr);} while (ret == ' ');display_board(arr);if (ret == 'x')printf("玩家赢得游戏\n");else if (ret=='0')printf("电脑赢得游戏\n");else if (ret == 'q')printf("平局\n");system("pause");     return 0;}

可以多次重复的玩游戏void menu(){printf("1.start   0.exit\n ");}int main(){int input  = 1;while (input){menu();printf("请选择:");    scanf("%d", &input);switch (input){case 1:game();break;case 0:break;}}system("pause");}


0 0
原创粉丝点击