【C语言 |五子棋】C语言实现五子棋

本文详细描述了如何用C语言实现一个简单的五子棋游戏,包括菜单设计、棋盘创建、落子操作、电脑随机落子、胜负判断等步骤,并提供了关键代码片段。

目录

一、问题描述

二、基本思路

三、步骤

1.菜单界面

​编辑2.创建一个棋盘

3.棋盘初始化

4.打印棋盘

5.玩家落子

6.电脑落子

7.判断胜负

8.主要逻辑实现

四、代码实现


一、问题描述

用C语言实现五子棋。

二、基本思路

实现代码的逻辑

1. 进入游戏就打印出一个首页菜单要求玩家选择

2.创建一个棋盘并且初始化

3.打印出来棋盘

4.玩家通过(x,y)坐标的方式输入进行落子,电脑通过生成(x,y)随机数方式落子

5.玩家落子用 o 表示,电脑落子用 * 表示

5.判断胜负关系

三、步骤

1.菜单界面

首先玩家进入程序,不管三七二十一先打印出来菜单(可以用do  while语句实现)

输入 1.play  开始游戏

输入 0.exit 退出游戏

void menu(void)
{
	printf("************************\n");
	printf("************************\n");
	printf("*********1.play ********\n");
	printf("*********0.exit ********\n");
	printf("************************\n");
	printf("************************\n\n");
}

2.创建一个棋盘

棋盘:用一个二维数组来创建,元素类型char

注意使用宏定义的好处:

有助于程序的扩展性(后期需要变动只需要变动只需要修改定义的部分)

增加程序可读性

#define ROW 10
#define COL 10
char board[ROW][COL] = { 0 };

3.棋盘初始化

可以使用memset()这个库函数实现--------包含头文件  #include<string,h>

复制字符 c(一个无符号字符)到参数 boarrd所指向的字符串的前 n 个字符

                                               //这个c作用是需要初始化什么就传什么字符
void InitBoard(char board[ROW][COL],int row,int col,char c)
{
             //(row*col*sizeof(board[0][0]))  行*列*单个元素大小 就是整个数组大小
	memset(&board[0][0],c,row*col*sizeof(board[0][0]));
}

当然不用库函数 也可以用无脑的办法 都是可以的

void InitBoard(char board[ROW][COL],int row,int col,char c)
{
	int i = 0,j = 0;
    for(i = 0;i < row;i++)
    {
        for(j = 0;j < col;j++)
        {
            board[i][j] = c; 
        }
    }
}

4.打印棋盘

因为刚开始的棋盘被初始化为空白,为了美观一点,可以修饰一下

void DisplayBoard(char board[ROW][COL],int row,int col)
{
	int i = 0, j = 0;

	for (i = 0; i < row;i++)
	{
		for (j = 0 ; j < col;j++)
		{
			printf(" %c ",board[i][j]);   /*我们将( %c |)看成一个整体*/
			if (j < col - 1)
			{
				printf("|");
			}
		}
		printf("\n");

		if (i < row - 1)
		{
			for (j = 0; j < col ;j++)
			{
				printf("---");            /*我们将(---|)看成一个整体*/
				if (j < col - 1)
				{
					printf("|");
				}
			}
	
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值