伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

第一个百行代码,实现自己的一个小突破

来源:本站原创 浏览:151次 时间:2021-10-06

   忙碌了两个小时,写出第一个自己的百行代码,此过程有艰辛、心酸,也有探索困难����,����解决后的欣喜和程序如期跑出来的小小成就感。这次写的代码是关于玩家和电脑进行三子棋游戏的具体细则。

首先创建一个简易菜单表用于用户是否决定要进行游戏。然后根据需要创建一个能够存放数据的棋盘,这就需要使用二维数组来创建棋盘的行和列。通过对棋盘行和列的控制实现对棋盘进行初始化,用于后续存储输入的字符数据,根据自己棋盘的需要输出显示出一个自定义大小的空棋盘。到这就是相当于做好了一个模子,接下来需要向模子中输入字符数据,接下来的操作都将使用函数来完成。对于玩家写出一个PlayerMove()函数来让玩家进行对应棋盘坐标的下棋操作,并在下棋之前判断此坐标是否被占用,若被占用就提示玩家输入位置被占用请重新输入,若输入坐标超出棋盘范围就提示输入位置不合理。之后用一个ComputerMove()函数来实现电脑对棋盘中空格出的随机输入,判断输入条件同上。用两个函数就实现了玩家和电脑的相互对弈。当开始下棋的时候我们就应该考虑判断棋盘状况,使用Win()函数来判断输赢情况,通过对连续同行三个相邻位置输入字符相同或者连续同列相邻三个字符相同或者连续对角线三个字符相同就判断获胜,函数用四种不同的返回字符来代表不同的游戏状态,函数返回’#’代表玩家获胜,返回’$’代表电脑获胜,返回’Q代表为平局,返回’C’代表游戏继续,需要在每次下棋后就进行判断对弈局势,才能及时的向玩家反馈情况。还应该使用 Full()函数来对输入后棋盘是否处于全满状态进行审核判断,如果返回1就代表棋盘满了,若返回0就表示没满,能继续输入数据。这样一系列函数功能调用,实现这三子棋游戏的正常编译和运行。

  对于第一次尝试写较长的代码还是能发现自己还有很多知识不足、掌握不牢靠的一连串问题。希望通过不断地练习和打磨会对知识的掌握和运用更加熟练。

  以下有实现三子棋游戏的核心代码(仅提供参考):

void InitBoard(char arr[Row][Col], int row, int col)//初始化

{

int i = 0;

int j = 0;

for (i = 0; i < row; i++)

{

for (j = 0; j < col; j++)

{

arr[i][j] = ' ';

}

}

}

void Display(char arr[Row][Col], int row, int col)

{

int i = 0;

int j = 0;

for (i = 0; i < row; i++)

{

for (j = 0; j < col; j++)

{

printf(" %c ", arr[i][j]);//打印一行的数据

if (j < row - 1)

{

printf("|");

}

}

printf("\n");

if (i < row - 1)

{

for (j = 0; j < col; j++)//打印分割行

{

printf("---");

if(j<col-1)

printf("|");

}

printf("\n");

}

}

}

void PlayerMove(char arr[Row][Col], int row, int col)

{

int x;

int y;

printf("玩家下棋\n");

while (1)

{

printf("请输入要落子的坐标\n");

scanf("%d%d", &x, &y);

if (x >= 1 && x <= row && y >= 1 && y <= col)

{

if (arr[x - 1][y - 1] = ' ')

{

arr[x - 1][y - 1] = '#';

break;

}

else

{

printf("输入的位置已被占用\n");

}

}

else

{

printf("坐标非法,输入的坐标不存在\n");

}

}

}

void ComputerMove(char arr[Row][Col], int row, int col)

{

int x = 0;

int y = 0;

printf("电脑下棋\n");

x = rand() % row;//使用rand函数之前需要调用srand

y = rand() % col;

while (1)

{

if (arr[x][y] = ' ')

{

arr[x][y] = '$';

}

break;

}

}

int Full(char arr[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 (arr[i][j] == ' ');

{

return 0;

}

}

}

return 1;

}

char Win(char arr[Row][Col], int row, int col)

{

int i = 0;

for (i = 0; i < row; i++)//判断横四行是否相等

{

if (((arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2]) || (arr[i][1] == arr[i][2] && arr[i][2] == arr[i][3])) && arr[i][1] != ' ')

{

return arr[i][1];

}

}

for (i = 0; i < col; i++)//判断竖四列是否相等

{

if (((arr[0][i] == arr[1][i]&& arr[1][i] == arr[2][i])||(arr[1][i]==arr[2][i] && arr[2][i] == arr[3][i]))&& arr[1][i] != ' ')

{

return arr[1][i];

}

}

if (((arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]) || (arr[1][1] == arr[2][2] && arr[2][2] == arr[3][3])) && arr[1][i] != ' ')

return arr[1][1];

if (Full(arr, Row, Col) == 1)//返回1代表棋盘满了,返回0代表棋盘没满

{

return 'Q';

}

if (Full(arr, Row, Col) == 0)

{

return 'C';

}


}




 


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net