三字棋的实现以及模块化的思想

Posted asibble

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三字棋的实现以及模块化的思想相关的知识,希望对你有一定的参考价值。

模块化思维:

随着移动端的逐渐发展,对于软件量要求增加许多,因此造成了软件数量的增加!然而造成的是不规范程度的增加,让程序的后期维护成本增加!因此许多的软件开发企业提出了模块化的思想,用来减少维护成本低增加,增加程序的可读性,和可维护性

本小编用模块化思维量实现三字棋的实现

首先进行主函数的书写

void test(void);
int main(){
test()
return 0;}

进行页面内部的书写

void test(){do{
menu();
int input;
scanf("%d",&input);
switch (input)
case   1:
      
while(input)}

对于这个游戏首先是进行主页面的书写即主页面的打印!(用模块化书写)

void menu(void){
    printf("************************\\n");
    printf("******1 , 进入游戏********\\n");
    printf("******0 , 退出游戏********\\n");
    printf("************************\\n");
}

最难的部分来了!(game()的书写!)

首先进行,数组的初始化用一个函数!

void Init(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++) { board[i][j] =' '; } } }

然后进行创建打印函数

void Dis(char board[ROW][COL], int row, int col)
{
    int j = 0;
        for (j = 0; j < row; j++)
        {
            printf(" %c | %c | %c\\n", board[j][0], board[j][1], board[j][2]);
            if(j<row-1)
        printf("---|---|---\\n");

        }
}

进行输入#和*,开始玩游戏!

首先是人输入,打印输入后面的棋盘。进行判断是否赢了,判断是否充满整个棋盘。没有赢而且没有充满个棋盘,进行电脑输入,然后重复上述动做!(因此可以用模块化的形式解决这个问题!)

人输入棋盘的代码
void player_move(char board[ROW][COL], int row, int col)
{
	printf("Õʺ“œ¬∆Â:>");
	int x = 0;
	int y = 0;

	while (1)
	{
		scanf("%d %d", &x, &y);
		if (x >= 1 && x <= row && y >= 1 && y <= col)
		{
			if (board[x-1][y-1] == ' ')
			{
				board[x - 1][y - 1] = '*';
				break;
			}
			else
			{
				printf("∏√◊¯±Í±ª’º”√£¨«Î÷ÿ–¬ ‰»Î£°\\n");
			}
		}
		else
		{
			printf("◊¯±Í∑«∑®£¨«Î÷ÿ ‰»Î!\\n");
		}
	}
}

进行输赢判断的代码
har is_win(char board[ROW][COL], int row, int col)
{
	int i = 0;
	//»˝––
	for (i = 0; i < row; i++)
	{
		if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')
		{
			return board[i][1];
		}
	}
	//»˝¡–
	for (i = 0; i < col; i++)
	{
		if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')
		{
			return board[1][i];
		}
	}
	//∂‘Ω«œflµƒ≈–∂œ
	if(board[0][0]==board[1][1] && board[1][1]==board[2][2] &&board[1][1] != ' ')
	{
		return board[1][1];
	}

	if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
	{
		return board[1][1];
	}

	//≈–∂œ∆Ωæ÷
	if (1==is_full(board, row, col))
	{
		return 'Q';
	}
	//ºÃ–¯
	return 'C';
}

判断是否充满棋盘的代码
int is_full(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 computer_move(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	printf("µÁƒ‘œ¬∆Â>\\n");
	while (1)
	{
		x = rand() % ROW;//0~2
		y = rand() % COL;//0~2
		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			break;
		}
	}
}
对界面进行打印的代码(同什么,最开始时候的代码)
void Dis(char board[ROW][COL], int row, int col)
{
    int j = 0;
        for (j = 0; j < row; j++)
        {
            printf(" %c | %c | %c\\n", board[j][0], board[j][1], board[j][2]);
            if(j<row-1)
        printf("---|---|---\\n");

        }
}

利用这些代码组合而成可以构成完整的三字棋代码!

这个也是模块化的思想的作用

最后,希望这个内容对你有帮助,
如果有帮助请点个赞!这个是小编的努力成果!

以上是关于三字棋的实现以及模块化的思想的主要内容,如果未能解决你的问题,请参考以下文章

数组游戏——三子棋

三字经以及译文

幼学启蒙 1.1三字经

c语言 我使用c语言基础做了一个老少皆宜的”国民小游戏(三字棋)“

vb四环棋的实现,平面四子棋,四连环游戏

vb四环棋的实现,平面四子棋,四连环游戏