五子棋的c语言源码

本文介绍了一个使用C语言实现的五子棋游戏,包括初始化棋盘、输出棋盘、判断输赢等功能。游戏通过扫描各个方向判断是否有五联子来决定胜负,目前AI仅实现弱智的随机落子。
摘要由CSDN通过智能技术生成

这是实现五子棋落子和判断胜负的源代码,电脑落子涉及的人工智能算法(目前AI属于弱智的随机落子)暂时没有实现。本文重点讲一下胜负判断功能的实现,我们都知道五子棋中获胜的条件就是五联子,而五联子的方向有四种:水平、竖直和两个对角线方向。扫描的思想是在每个落子的位置判断各个方向能扫描的次数(最多为5)。以水平方向为例,数组下标为【5】【5】的从【5】【0】开始判断连往右的五个坐标(即数组元素)的值是否相等,如果是则表明获胜。

#include <stdio.h>

#include <stdlib.h>


#define NO_CHESS    ""

#define RED_CHESS   "❤️"

#define BLACK_CHESS "♠️"

#define BOARD_SIZE  15 //定义棋盘的大小

typedef int DataType;

struct Stack

{

    DataType arr[BOARD_SIZE][BOARD_SIZE];

    int top;

};



//定义一个二维数组来充当棋盘

const char *Chesses[BOARD_SIZE][BOARD_SIZE];


//----函数的声明-----


//初始化棋盘

void initChess(void);

//输出棋盘

void prChess(void);

//判断输赢

void winJudge(char* corlor,int x,int y);

//提示获得胜利

void printWin(char* color);

//横向扫描函数

void horizonScan(char* color,int x,int y);

//纵向扫描函数

void verticalScan(char* color,int x,int y);

//正对角线扫描函数

void diagonalScan(char* color,int x,int y);

//反对角线扫描函数

void opposeDiagonalScan(char* color,int x,int y);

//悔棋函数

void retract();



//-----函数的实现-----

//初始化棋盘

void initChess(void)

{

    //把每一个元素赋值为 "用于控制台画出棋盘

    for (int i =0; i<BOARD_SIZE; i++)

    {

        for (int k =0; k<BOARD_SIZE; k++)

        {

            Chesses[i][k] = NO_CHESS;

        }

    }


}


//输出棋盘

void prChess(void)

{


    printf("  00 01 02 03 04 05 06 07 08 09 10 11 12 13 14\n");

    //打印每个数组元素的值

    for (int i =0; i<BOARD_SIZE; i++)//

    {

        printf("%02d ",i);

        for (int k =0; k<BOARD_SIZE; k++)//

        {

            printf("%s ",Chesses[i][k]);

        }

        

        //换行

        printf("\n");

    }

}


//判断输赢

void winJudge(char* color,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值