96SEO 2026-02-19 19:03 17
六、如果选择退出程序直接exit就行七、主函数调用逻辑八、源代码

逻辑是使用一个死循环来打印根据玩家输入的数来判断进入什么模式输入错误数字就不出循环正确就出循环。
(1){printf(----------------欢迎使用五子棋------------------------\n);printf(-
-\n);printf(------------------------------------------------------\n);printf(------------------------------------------------------\n);scanf(%d,
0)printf(错误输入);elsebreak;}return
在这个函数中将表示棋盘的二维数组初始化为空状态并通过棋盘数组的只来打印棋盘。
打印棋盘时用到的符号┏
里面每一次打印都调用draw_chessman这个函数在这个函数中将根据数组值来判断如何打印。
}打印棋盘的逻辑就是因为没能设置光标坐标那就只有一行一行打印然后根据边界行列值来判断。
map[0][j]);}printf(\n);}//打印第一行棋盘else
━┓);elsedraw_chessman(map[i][j],
━┛);elsedraw_chessman(map[i][j],
━┫);elsedraw_chessman(map[i][j],
人人对战逻辑中就是先让黑方下棋输入坐标输入错误就再次输入死循环实现将该坐标的二维数组值变为黑然后让其选择悔不悔棋我实现的是只要1是悔棋其他数字就是不悔棋。
执行完不悔棋后就判断是否胜利如果胜就跳出选择是否重来一局如果没胜就白棋下执行相同逻辑。
在这个函数中判断坐标代表的二维数组值是不是空不是就重新输入坐标。
NO){printf(已有棋子重新输入\n);scanf(%d%d,
该函数里面就是根据用户选择如果悔棋然后将刚才的地方的数组值变回空。
这个函数就是将下的这个棋子的横竖斜方向判胜负。
没有判断和棋情况如果要判断就是二维数组全不为空状态使用遍历判断就行。
{printf(--------人-人对战---------------\n);initMap(map);while
(1){printf(黑方落子\n);printf(请输入要落下的坐标现在棋盘为%d*%d\n,
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
BLACK){printf(黑方获胜\n);return;}else
WHITE){printf(白方获胜\n);return;}white:while
(1){printf(白方落子\n);printf(请输入要落下的坐标现在棋盘为%d*%d\n,
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
BLACK){printf(黑方获胜\n);return;}else
WHITE){printf(白方获胜\n);return;}}
{printf(--------人-机对战---------------\n);srand(time(NULL));int
-1;printf(请输入你执黑棋还是白棋黑1白2\n);scanf(%d,
(1){printf(黑方落子\n);printf(请输入要落下的坐标现在棋盘为%d*%d\n,
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
BLACK){printf(黑方获胜\n);return;}else
WHITE){printf(白方获胜\n);return;}if
BLACK){printf(黑方获胜\n);return;}else
WHITE){printf(白方获胜\n);return;}}}else
BLACK){printf(黑方获胜\n);return;}else
WHITE){printf(白方获胜\n);return;}white:while
(1){printf(白方落子\n);printf(请输入要落下的坐标现在棋盘为%d*%d\n,
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
BLACK){printf(黑方获胜\n);return;}else
WHITE){printf(白方获胜\n);return;}if
这样实现就会让机器落子一直是去围堵你的棋子虽然还是很垃圾但是比方法一好多了。
0)//活一:表示在该处落子就只有这一个棋子两边都没有阻挡边界或对方的棋子优势较大return
1)//冲一表示在该处落子就只有这一个棋子两边有一种阻挡边界或对方的棋子优势较小return
{printf(--------人-机对战---------------\n);int
{printf(请输入你执黑棋还是白棋黑1白2\n);scanf(%d,
(1){printf(黑方落子\n);printf(现在棋盘为%d*%d请输入要落下的坐标x
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
position[1];//保存该位置的坐标注意行列和xy轴的对应关系position[0]
position[1];//保存该位置的坐标注意行列和xy轴的对应关系position[0]
(1){printf(白方落子\n);printf(现在棋盘为%d*%d请输入要落下的坐标x
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
//判断胜利break;}}}六、如果选择退出程序直接exit就行
用死循环调用然后根据menu返回值通过switch-case来调用相应模式函数最后在让用户选择是否再来一局如果再来一局就不出循环不再来就出循环。
1://调用人人对打peopleFight(map);break;case
2://调用人机对打machine(map);break;case
0:printf(退出成功\n);exit(0);break;}int
0;printf(是否再来一盘是1不是0\n);scanf(%d,
1://调用人人对打peopleFight(map);break;case
2://调用人机对打machine(map);break;case
0:printf(退出成功\n);exit(0);break;}int
0;printf(是否再来一盘是1不是0\n);scanf(%d,
(1){printf(----------------欢迎使用五子棋------------------------\n);printf(-
-\n);printf(------------------------------------------------------\n);printf(------------------------------------------------------\n);scanf(%d,
0)printf(错误输入);elsebreak;}return
NO){printf(已有棋子重新输入\n);scanf(%d%d,
map[0][j]);}printf(\n);}//打印第一行棋盘else
━┓);elsedraw_chessman(map[i][j],
━┛);elsedraw_chessman(map[i][j],
━┫);elsedraw_chessman(map[i][j],
printf(--------人-机对战---------------\n);
{printf(--------人-人对战---------------\n);initMap(map);while
(1){printf(黑方落子\n);printf(请输入要落下的坐标现在棋盘为%d*%d\n,
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
BLACK){printf(黑方获胜\n);return;}else
WHITE){printf(白方获胜\n);return;}white:while
(1){printf(白方落子\n);printf(请输入要落下的坐标现在棋盘为%d*%d\n,
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
BLACK){printf(黑方获胜\n);return;}else
WHITE){printf(白方获胜\n);return;}}
0)//活一:表示在该处落子就只有这一个棋子两边都没有阻挡边界或对方的棋子优势较大return
1)//冲一表示在该处落子就只有这一个棋子两边有一种阻挡边界或对方的棋子优势较小return
{printf(--------人-机对战---------------\n);int
{printf(请输入你执黑棋还是白棋黑1白2\n);scanf(%d,
(1){printf(黑方落子\n);printf(现在棋盘为%d*%d请输入要落下的坐标x
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
position[1];//保存该位置的坐标注意行列和xy轴的对应关系position[0]
position[1];//保存该位置的坐标注意行列和xy轴的对应关系position[0]
(1){printf(白方落子\n);printf(现在棋盘为%d*%d请输入要落下的坐标x
N)printf(错误输入\n);elsebreak;}judgeEmpty(map,
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback