C语言的小项目----三子棋

来源:互联网 发布:网络贷款不还的后果 编辑:程序博客网 时间:2024/05/16 07:33

低端三子棋哈~~

直接上代码
头文件:game.h

#ifndef __game_H__#define __game_H__#define ROW 3#define COL 3void b(char arr[ROW][COL], int row, int col);               //数组的定义void c(char arr[ROW][COL], int row, int col);               //打印棋盘void ConputerMove(char arr[ROW][COL], int row, int col);    //电脑走void PlayerMove(char arr[ROW][COL], int row, int col);      //玩家走int IsWin(char arr[ROW][COL], int row, int col);            //判断输赢#endif //__game_H__

game.c

#include <stdio.h>#include <stdlib.h>#include "game.h"static int IsFull(char board[ROW][COL], int row, int col){    int i = 0;    int j = 0;    for (i = 0; i < row; i++)    {        for (j = 0; j < col; j++)        {            if (board[i][j] == ' ')                return 0;        }    }    return 1;}void b(char arr[ROW][COL], int row, int col){    int i = 0;    int j = 0;    for (i = 0; i < row; i++)    {        for (j = 0; j < col; j++)        {            arr[i][j] = ' ';        }    }}void c(char arr[ROW][COL], int row, int col){    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 ConputerMove(char arr[ROW][COL], int row, int col){    int x = 0;    int y = 0;    printf("电脑走:>\n");    while (1)    {        x = rand() % row;        y = rand() % col;        if (arr[x][y] == ' ')        {            arr[x][y] = 'X';            break;        }    }}void PlayerMove(char arr[ROW][COL], int row, int col){    int x = 0;    int y = 0;    while (1)    {        printf("玩家走(x,y) :>");        scanf("%d%d", &x, &y);        if (x >= 1 && x <= 3 && y >= 1 && y <= 3)        {            if (arr[x-1][y-1] == ' ')            {                arr[x-1][y-1] = 'O';                break;            }            else            {                printf("坐标被占用!\n");            }        }        else        {            printf("输入不合法!\n");        }    }}int IsWin(char arr[ROW][COL], int row, int col){    int i = 0;    int j = 0;        for (i = 0; i < row; 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 < row; 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[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[1][1] != ' ')        {            return arr[1][1];        }        if (IsFull(arr, row, col))        {            return 'p';        }        return ' ';}

test.c

#include <stdio.h>#include <windows.h>#include <stdlib.h>#include "game.h"void game(){    char board[ROW][COL] = { 0 };    char ret = 0;    b(board,ROW,COL);                   //数组的定义    c(board, ROW, COL);                 //打印棋盘    while (1)    {        ConputerMove(board, ROW, COL);    //电脑先走        c(board, ROW, COL);               //打印棋盘        ret = IsWin(board, ROW, COL);   //判断输赢        {            if (ret != ' ')                break;        }        PlayerMove(board, ROW, COL);    //玩家走        c(board, ROW, COL);             //打印棋盘        ret = IsWin(board, ROW, COL);   //判断输赢        {            if (ret != ' ')                break;        }    }    if (ret == 'X')    {        printf("GG! 电脑赢!\n");    }    else if (ret == 'O')    {        printf("Good Game! 玩家赢!\n");    }    else if (ret == 'p')    {        printf("平局!\n");    }}void a(){    printf("***********************************\n");    printf("*****  1.Go          2.exit   *****\n");    printf("***********************************\n");}void test(){    int input = 0;    srand((unsigned int)time(NULL));  //产生随机数    do    {           a();        //输出文件头        printf("请选择(1,0):>");        scanf("%d", &input);        switch (input)        {        case 1:            game();            break;        case 0:            break;        default:            printf("选择错误,请重新选择!\n");            break;        }    } while (input);}int main(){    test();    system("pause");    return 0;}
原创粉丝点击