当前位置: 首页 > news >正文

新手小白学习计算机的第十二天(老王专场)

#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>// 宏定义棋盘尺寸,统一管理,修改方便#defineROW15#defineCOL15// 函数声明voidinitBoard(charboard[ROW][COL]);// 初始化棋盘voiddrawBoard(charboard[ROW][COL]);// 绘制棋盘intputChess(charboard[ROW][COL],intx,inty,charch);// 落子intisWin(charboard[ROW][COL],intx,inty,charch);// 判断胜利intisDraw(charboard[ROW][COL]);// 判断平局// 棋盘初始化函数voidinitBoard(charboard[ROW][COL]){for(inti=0;i<ROW;i++){for(intj=0;j<COL;j++){board[i][j]=' ';// 全部置空}}}// 棋盘绘制函数voiddrawBoard(charboard[ROW][COL]){// 打印顶部坐标printf(" ");for(inti=0;i<COL;i++){printf("%2d",i);}printf("\n");// 打印棋盘主体for(inti=0;i<ROW;i++){printf("%2d ",i);// 打印左侧坐标for(intj=0;j<COL;j++){printf("%c",board[i][j]);if(j<COL-1){printf("|");}}printf("\n");// 打印分割线if(i<ROW-1){printf(" ");for(intk=0;k<COL;k++){printf("--");if(k<COL-1){printf("+");}}printf("\n");}}}// 落子函数:成功返回1,失败返回0intputChess(charboard[ROW][COL],intx,inty,charch){// 坐标越界判断if(x<0||x>=ROW||y<0||y>=COL){return0;// 落子失败}// 判断位置是否已有棋子if(board[x][y]!=' '){return0;// 落子失败}// 合法落子,更新棋盘board[x][y]=ch;return1;// 落子成功}// 判断胜负:四大方向检测五子连珠intisWin(charboard[ROW][COL],intx,inty,charch){intcount=1;// 当前棋子本身为1// 1. 水平方向 左右判断for(inti=y-1;i>=0;i--){if(board[x][i]==ch)count++;elsebreak;}for(inti=y+1;i<COL;i++){if(board[x][i]==ch)count++;elsebreak;}if(count>=5)return1;// 2. 垂直方向 上下判断count=1;for(inti=x-1;i>=0;i--){if(board[i][y]==ch)count++;elsebreak;}for(inti=x+1;i<ROW;i++){if(board[i][y]==ch)count++;elsebreak;}if(count>=5)return1;// 3. 左斜方向 左上-右下count=1;for(inti=x-1,j=y-1;i>=0&&j>=0;i--,j--){if(board[i][j]==ch)count++;elsebreak;}for(inti=x+1,j=y+1;i<ROW&&j<COL;i++,j++){if(board[i][j]==ch)count++;elsebreak;}if(count>=5)return1;// 4. 右斜方向 右上-左下count=1;for(inti=x-1,j=y+1;i>=0&&j<COL;i--,j++){if(board[i][j]==ch)count++;elsebreak;}for(inti=x+1,j=y-1;i<ROW&&j>=0;i++,j--){if(board[i][j]==ch)count++;elsebreak;}if(count>=5)return1;// 无五子连珠,继续游戏return0;}// 判断平局intisDraw(charboard[ROW][COL]){for(inti=0;i<ROW;i++){for(intj=0;j<COL;j++){if(board[i][j]==' '){return0;// 还有空位,不是平局}}}return1;// 棋盘已满,平局}// 主函数:游戏逻辑整体调度intmain(){charboard[ROW][COL];intx,y;intret;intturn=0;// 0:玩家1黑子 1:玩家2白子// 初始化棋盘initBoard(board);while(1){system("cls");// 清屏刷新界面drawBoard(board);// 切换玩家if(turn==0){printf("【玩家1 黑子】请输入落子坐标(行 列):");scanf("%d %d",&x,&y);ret=putChess(board,x,y,'@');// 落子失败重新输入while(ret==0){printf("坐标非法或已有棋子!请重新输入:");scanf("%d %d",&x,&y);ret=putChess(board,x,y,'@');}// 判断是否获胜if(isWin(board,x,y,'@')){system("cls");drawBoard(board);printf("🎉 玩家1(黑子)获胜!游戏结束!\n");break;}}else{printf("【玩家2 白子】请输入落子坐标(行 列):");scanf("%d %d",&x,&y);ret=putChess(board,x,y,'#');while(ret==0){printf("坐标非法或已有棋子!请重新输入:");scanf("%d %d",&x,&y);ret=putChess(board,x,y,'#');}if(isWin(board,x,y,'#')){system("cls");drawBoard(board);printf("🎉 玩家2(白子)获胜!游戏结束!\n");break;}}// 判断平局if(isDraw(board)){system("cls");drawBoard(board);printf("🤝 棋盘已满,平局!游戏结束!\n");break;}// 切换回合turn=!turn;}return0;}

http://www.cnnetsun.cn/news/4153711.html

相关文章:

  • AI又“幻觉“了?我在提示词发布流程加了一道“安检门“
  • GetQzonehistory:免费完整导出QQ空间全部历史说说,三步完成备份
  • 如何用 REFramework 做出你的第一个 RE 引擎游戏 mod?搞懂这 3 层架构就够
  • 太阳黑子预测:物理约束驱动的时序建模方法
  • 从克隆到即时生效:COM3D2 实时编辑器 Maid Fiddler 完整使用指南
  • 拉格朗日乘数法原理与Python实战:从KKT条件到资源优化调度
  • Java面试进阶:从JVM到微服务的核心技术解析
  • KKCE: 网站测速、TCPING、在线ping、DNS查询-快快测
  • Flowable工作流引擎适配达梦数据库:从原理到实战的完整指南
  • 大厂技术面试:核心准备与应对策略
  • Agent 双入口 AI 短剧平台解析:人机协同创作工具怎么选
  • 等变多智能体强化学习在车路协同交通优化中的应用与实践
  • AI智能体驱动仿星器多目标优化:自主搜索有限β平衡的工程实践
  • 最小二乘法原理与实战:从数学建模到美赛应用全解析
  • 树莓派 FFmpeg 实战笔记(二):命令行、源码编译与硬件编码的真相
  • Vue3 后台管理选型:vue3-antd-admin 这套模板能省多少事
  • 告别几KB龟速!2026百度网盘加速全教程:PanDownload直链解析突破限速
  • 案例驱动的多智能体框架:破解电商搜索相关性难题
  • 技术写作中AI的陷阱与人工主导的高质量内容生产流程
  • 区块链运维实战:从国赛题目解析到企业级部署与监控
  • 大模型应用新范式:训练接口层实现跨模型性能迁移
  • 慧知租车换电开源SaaS平台:一套可私有化部署的换电租车一体化解决方案
  • 微信聊天记录导出与个人数据管理:开源项目「留痕」实用指南
  • AI电商工作台:从商品建档到批量生成营销素材的技术实现
  • 智能体编程的上下文工程:从Mise en Place哲学到高效AI编码实践
  • 华为昇腾算力实战指南:从CUDA迁移到国产AI芯片的完整路径
  • 谷歌Turbovec向量搜索库实战:TurboQuant量化算法解析与Rust实现
  • 质数口袋问题:动态增量筛法实现零冗余质数生成
  • PP-Structure Docker化实战:从Python库到生产级OCR服务
  • 蓝牙折叠键盘如何通过多设备切换重塑移动办公生产力