三子棋实现思路

三子棋实现思路,第1张

三子棋实现思路

—自己做完后测试了一遍,基本玩法没有大问题(在菜单栏选择的时候如果输入超出预期会有bug 和上一个项目一样doge),源码在最后的链接。


提示:源码放在最后,因为写这项代码的时候我的电脑编码格式进行了设置,所有直接复制代码的话程序运行结果可能会乱码。


因为我把电脑编码格式改回默认之后运行也乱码了

文章目录
  • 三子棋实现思路
  • 实现思路
  • 部分代码
    • 1、判断落子区域
    • 2.判断游戏是否结束


实现思路

1、玩家可以选择先手还是后手,玩家的棋子是‘@’,机器的棋子是’*’,目前没有棋子用‘_’表示。



2、游戏开始后初始化并展示棋盘。



3、注意每一步落子之后都要判断游戏是否结束并展示最新的棋盘。



4、注意落子时要判断位置是否在棋盘外以及是否该区域已有棋子。


部分代码 1、判断落子区域

判断落子区域是否正确,if(who !=1)这个是判断是否为机器落子,如果是机器落子则不需要把提示输出到终端。


代码如下(示例):

int drop(char arr[][3], int row, int col, int who)
{
	char q = '@';  
	if (who == 1)//机器下棋时,who为1,用*表示棋子。


q = '*'; if (arr[row][col] == '_') { arr[row][col] = q; }else if (row >= 3 || col >= 3) { printf("落子区域超出棋盘范围,请重新输入\n"); return 0; } else{ if(who !=1) printf("%d行%d列已经有棋子,请换个位置落子\n", row, col); return 0; } return 1; }

2.判断游戏是否结束

每次落子之后都先判断对角线、行或列是否有3个同样的棋子,若有则胜利。


若没有再判断棋盘上有没有空位置,若没有则和棋,有则继续下棋。


int if_win_game(char arr[][3],int row,int col)//根据最后一步落子的位置判断
											//	,机器获胜返回1,人获胜返回0 ,和棋子返回2,游戏继续返回3
{
	if ((arr[row][0] == '*' && arr[row][1] == '*' && arr[row][2] == '*') || \
		(arr[0][col] == '*' && arr[1][col] == '*' && arr[2][col] == '*'))
		return 1;

	if ((arr[row][0] == '@' && arr[row][1] == '@' && arr[row][2] == '@') || \
		(arr[0][col] == '@' && arr[1][col] == '@' && arr[2][col] == '@'))
		return 0;
	if (row == col || (row == 0 && col == 2) || (row == 2 && col == 0))
	{
		if ((arr[0][0] == '*' && arr[1][1] == '*' && arr[2][2] == '*')||\
			(arr[0][2] == '*' && arr[1][1] == '*' && arr[2][0] == '*'))
			return 1;
		if ((arr[0][0] == '@' && arr[1][1] == '@' && arr[2][2] == '@') || \
			(arr[0][2] == '@' && arr[1][1] == '@' && arr[2][0] == '@'))
			return 0;
	}

	int i, j, flag = 2;
	for (i = 0; i < 3; ++i)
	{
		for (j = 0; j < 3; ++j)
		{
			if (arr[i][j] == '_')
				flag = 3;
		}
	}
	return flag;
}

源码放在我的码云:https://gitee.com/wszlight/code/tree/master/%E6%89%AB%E9%9B%B7

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/562292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)

保存