三字棋的实现以及模块化的思想
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");
}
}
利用这些代码组合而成可以构成完整的三字棋代码!
这个也是模块化的思想的作用
最后,希望这个内容对你有帮助,
如果有帮助请点个赞!这个是小编的努力成果!
以上是关于三字棋的实现以及模块化的思想的主要内容,如果未能解决你的问题,请参考以下文章