三子棋

来源:互联网 发布:网络借贷陷阱 编辑:程序博客网 时间:2024/06/04 19:48

源文件展示:

#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<stdlib.h>#include<time.h>#define ROWS 3#define COLS 3void init_board(char arr[ROWS][COLS], int rows, int cols);void display_board(char arr[ROWS][COLS], int rows, int cols);void computer(char arr[ROWS][COLS], int rows, int cols);void player(char arr[ROWS][COLS], int rows, int cols);char win(char arr[ROWS][COLS], int rows, int cols);#endif//__GAME_H__

功能函数模块:

#define _CRT_SECURE_NO_DEPRECATE#include"game.h"void init_board(char arr[ROWS][COLS], 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 display_board(char arr[ROWS][COLS], int rows, int cols){    int i = 0;    for (i = 0; i < ROWS ; i++)    {        printf("|  %c|  %c|  %c|\n", arr[i][0], arr[i][1], arr[i][2]);        if (i != 2)        {            printf("|---|---|---|\n");        }    }}void computer(char arr[ROWS][COLS], int rows, int cols)//电脑下棋函数{    while (1)    {    int x = rand() % 3;    int y = rand() % 3;    if (arr[x][y] == ' ')    {        arr[x][y] = '0';        break;    }    }}void player(char arr[ROWS][COLS], int rows, int cols)//玩家下棋函数{    int x = 0;    int y = 0;    while (1)    {        printf("请输入坐标(1到3)下棋\n");        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] = '*';                break;            }            else            {                printf("此格已有棋子\n");            }        }        else        {            printf("输入坐标错误,请重新输入\n");        }    }}static int over(char arr[ROWS][COLS], 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;}char win(char arr[ROWS][COLS], int rows, int cols)//检查输赢函数{    int i = 0;    for (i=0; i < ROWS; i++)    {        if ((arr[i][0] == arr[i][1])&&            (arr[i][1] == arr[i][2]) &&            (arr[i][1] != ' '))        {            return arr[i][1];        }    }    for (i=0; i < COLS; i++)    {        if ((arr[0][i] == arr[1][i]) &&            (arr[1][i] == arr[2][i]) &&            (arr[1][i] != ' '))        {            return arr[1][i];        }    }    if ((arr[0][0] == arr[1][1]) &&        (arr[1][1] == arr[2][2]) &&        (arr[1][1] != ' '))    {        return arr[1][1];    }    if ((arr[2][2] == arr[1][1]) &&        (arr[1][1] == arr[0][0]) &&        (arr[1][1] != ' '))    {        return arr[1][1];    }    if (over(arr, ROWS, COLS))    {        return 'f';    }    return ' ';}

游戏实现的主函数如下:

#define _CRT_SECURE_NO_DEPRECATE#include"game.h"void meau(){    printf("******************************\n");    printf("*****   欢迎来到三子棋   *****\n");    printf("*******    1.play     ********\n");    printf("*******    0.exit     ********\n");    printf("******************************\n");}void game(){    int input = 0;    char ret = 0;    char arr[ROWS][COLS];    init_board(arr, ROWS, COLS);    display_board(arr, ROWS, COLS);    while (1)    {        printf("玩家下\n");        player(arr, ROWS, COLS);        if ((ret = win(arr, ROWS, COLS)) != ' ')        {            break;        }        display_board(arr, ROWS, COLS);        printf("电脑下\n");        computer(arr, ROWS, COLS);        if ((ret = win(arr, ROWS, COLS)) != ' ')        {            break;        }        display_board(arr, ROWS, COLS);        //if ((ret = win(arr, ROWS, COLS)) != ' ')        //{        //  break;        //}    }    display_board(arr, ROWS, COLS);    if (ret == '*')    {        printf("恭喜你,你赢了!\n");    }    else if (ret == '0')    {        printf("很遗憾,电脑赢了\n");    }    else if (ret == 'f')    {        printf("平局,是否再来?\n");    }}int main(){    int input = 0;    srand((unsigned)time(NULL));    do    {        meau();        printf("请选择:");        scanf("%d", &input);        switch (input)        {        case 1:            game();            break;        case 0:            break;        default:            printf("输入错误,请重新选择\n");            break;        }    } while (input);    return 0;}

下面是运行的结果:
这里写图片描述!

平局

电脑赢