C语言实现简易三子棋小游戏

来源:互联网 发布:剑灵灵女捏脸数据图表 编辑:程序博客网 时间:2024/05/21 21:49
实现三子棋游戏主要分为打印选择项、打印棋盘、玩家走、电脑走、以及判断输赢几部分。    

以下为具体代码:
头文件game.h

#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define ROWS 3#define COLS 3void Init_Board(char arr[ROWS][COLS], int row, int col);char Print_Board(char arr[ROWS][COLS], int row, int col);void Player_Move(char arr[ROWS][COLS], int  row, int col);void Computer_Move(char arr[ROWS][COLS], int row, int col);char Check_Win(char arr[ROWS][COLS], int row, int col);int IsFull(char arr[ROWS][COLS], int row, int col);#endif

游戏功能部分:
game.c

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"//初始化棋盘void Init_Board(char arr[ROWS][COLS], int row, int col){    int m = 0;    int n = 0;    for (m = 0;m<row;m++)    {        for (n = 0; n < col; n++)            arr[m][n] = ' ';    }}//打印棋盘void Print_Board(char arr[ROWS][COLS], 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 != row -1)            printf("---|---|---\n");    }    printf("\n");}//实现玩家走void Player_Move(char arr[ROWS][COLS], int  row, int col){    int x = 0;    int y = 0;    printf("玩家走:>\n");    while (1)    {        printf("请输入坐标:>\n");        scanf("%d %d", &x, &y);        if (x >= 1 && x <= ROWS && y >= 1 && y <= COLS)        {            if (arr[x - 1][y - 1] == ' ')            {                arr[x - 1][y - 1] = '*';                break;            }            else            {                printf("该位置已被占用\n");            }        }        else        {            printf("坐标输入有误,请重新输入!\n");        }    }}//实现电脑走void Computer_Move(char arr[ROWS][COLS], 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;        }    }}//判断棋盘是否已满static int IsFull(char arr[ROWS][COLS], int  row, int 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[ROWS][COLS], int row, int col){    int i = 0;    for (i = 0; i < row; 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 < col; i++)    {        if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i] && arr[0][i] != ' ')            return arr[0][i];    }    if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] != ' ')    {        return arr[0][0];    }    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'E';    }    return ' ';}

游戏实现
game.c

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"//打印选项void menu(){    printf("*****************************\n");    printf("****   1.play   0.exit   ****\n");    printf("*****************************\n");}void game(){    char ret = 0;    srand((unsigned )time(NULL));    char arr[ROWS][COLS] = { 0 };    Init_Board(arr, ROWS, COLS);    Print_Board(arr, ROWS, COLS);    while (1)    {        Player_Move(arr, ROWS, COLS);        Print_Board(arr, ROWS, COLS);        ret = Check_Win(arr, ROWS, COLS);        if (ret != ' ')        {            break;        }        Computer_Move(arr, ROWS, COLS);        Print_Board(arr, ROWS, COLS);        if (ret != ' ')        {            break;        }    }    if (ret == 'x')     {        printf("电脑赢\n");    }    else    {        if (ret == '*')        {            printf("玩家赢\n");        }        else if (ret == 'E')        {            printf("平局\n");        }    }}void test(){    int input = 0;    do    {        menu();        printf("请选择:>");        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;}

打印选项
这里写图片描述

棋盘
这里写图片描述

实现玩家和电脑玩游戏
这里写图片描述

判断输赢
这里写图片描述