三子棋获胜条件优化(可扩展大棋盘,自定义获胜条件)

本文讲述了作者在学习C语言过程中遇到的问题,如何设计一个可以适应不同棋盘大小和胜利条件的三子棋游戏,重点介绍了如何通过Tiaojian定义来改变获胜条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题提出

        学C语言不久,尝试做三子棋,苦恼于获胜条件,胜利条件该怎么写才能在改变棋盘大小的情况下不影响胜利条件,例如在5*5的棋盘上仍是3子获胜。

        一开始写三子棋的我就是是简单的罗列出在3*3棋盘三子棋获胜的所有条件进行判断,但是一旦改变了棋盘的大小或者胜利的条件,代码就完全废除了。

        查阅了别人的文章也没有好的解决方法,大部分都是局限于3*3的棋盘,或者就是获胜条件不能更改。

        最终潜力爆发,想出来解决方法,但是仍有改进空间!

问题概述

程序主体

        关于三子棋的整体逻辑我就不赘述了,稍微简单介绍一下。

        主函数用来调出菜单,并判断是否进入游戏:

#define _CRT_SECURE_NO_WARNINGS 1
#include"Sanziqi.h"
int main()
{
	int input = 0;
	do 
	{
		menu();	
		printf("请选择(0或1):");
		scanf("%d", &input);
		srand((unsigned int)time(NULL));
		switch(input)
		{
			case 1:
				system("cls");//清屏
				Rule();//跳出规则,如果改变棋盘大小和胜利条件,此处也应该修改
				Game();//游戏的主体函数
				break;
			case 0:
				printf("退出游戏\n");
				break;
			default:
				printf("输入错误,请重新输入\n");
				break;
		}
	} while (input);
	return 0;
}

        将所有的函数声明都放入在"Sanziqi.h"中 。

        想要实现改变获胜条件,最最最重要的则是Tiaojian的定义,通过改变Tiaojian则可以改变获胜条件,如改成4则会变为四子棋,实现的步骤请看下文。

#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 3
#define COLUMN 3
//改变ROW COLUMN就可以改变棋盘大小
#define Tiaojian 3
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void menu();
void Rule();
void Game();
void Initialize_Board(char board[ROW][COLUMN]);
void Display_Board(char board[ROW][COLUMN]);
void Player_change_Board(char board[ROW][COLUMN]);
char Judge(char board[ROW][COLUMN]);
void Computer_change_Board(char board[ROW][COLUMN]);
int Isfull(char board[ROW][COLUMN]);

        以下是此次游戏的逻辑,初始化棋盘,展示棋盘

        {玩家输入棋子坐标,展示棋盘,判断是否获胜,电脑输入棋子坐标,展示棋盘,判断是否获胜}

        直到{}内的步骤确定玩家获胜还是电脑获胜,结束此次游戏,回到菜单。

        补充一点,由于棋盘是固定的,所以传参只要根据头文件中定义的ROW和COLUMN,也就是棋盘的行和列为已知的,所以只需要输入数组名就可以改变棋盘内容,判断胜负。

void Game()
{
	char board[
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值