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

网站运营主体wordpress网站放icp

网站运营主体,wordpress网站放icp,网站建设与维护百度百科,双桥网站建设目录 构思 1、主程序 2、初始化 3、游戏菜单 4、打印棋盘 6、玩家下棋 7、判断输赢 8、功能整合 人机下棋 完整版#xff1a; game.h game.c text.c 测试功能代码 构思 五子棋不必多介绍了#xff0c;大家小时候都玩过哈。 我们要通过程序实现这个小游戏…目录 构思 1、主程序 2、初始化 3、游戏菜单 4、打印棋盘 6、玩家下棋 7、判断输赢 8、功能整合 人机下棋 完整版  game.h game.c text.c 测试功能代码 构思 五子棋不必多介绍了大家小时候都玩过哈。 我们要通过程序实现这个小游戏大体上的构思得有 游戏流程运行游戏打印棋盘下棋判断输赢 由此我们声明如下函数、棋盘数组和回合数 (用于双人下棋时下不同棋子的判断)。 将这些都放在我创建的头文件game.h中方便其他文件使用  #include stdio.h #include Windows.hint map[19][19];//棋盘 int flag;//回合数//初始化棋盘 void init();//游戏菜单 void menuView();//打印棋盘 void gameView_ShowMap();//玩家下棋 int playerMove(int x, int y);//判断输赢 int isWin(int x, int y);//判断输赢 void winView(); 1、主程序 先进行游戏下棋后进行判断输赢比较符合do—while的特点。  int main() {int input 0;do{menuView();printf(请选择);scanf(%d, input);switch (input) {case 1:gameView();break;case 0:printf(退出游戏\n);break;default:printf(输入错误请重新选择.\n);break;}} while (input);return 0; }首先打印菜单提示玩家进行选择开始游戏。通过输入变量input的值判断是否进行游戏值为1则调用gameView函数进行游戏0则结束游戏。gameView函数对各种功能函数进行整合。 在此之前先将各种功能函数进行实现最后将它们放入gameView整合。  2、初始化 void init() {for (int i 0; i 19; i) {for (int j 0; j 19; j) {map[i][j] 0;}}flag 0; } 将棋盘每个格子初始化为0。回合数初始化为0。 3、游戏菜单 void menuView() {printf(*************************\n);printf(***** 1. play ******\n);printf(***** 0. exit ******\n);printf(*************************\n); }4、打印棋盘 这里我选择设计了棋盘格和横纵坐标我们可以根据需要自行设计。  void gameView_ShowMap() {int i, j;printf( );for (i 0; i 19; i) {//打印横坐标printf(%3d ,i);}printf(\n );for (i 0; i 19; i) {printf(---);}printf(\n);for (i 0; i 19; i) {printf(%2d |, i);//每行输出前都先打印纵坐标for (j 0; j 19; j) {printf( %d , map[i][j]);//打印棋子if (j 18)printf(|);}printf(|\n);if(i18)printf( |);if(i18)printf( );for (j 0; j 19; j) {printf(---);if (j 18)printf();}printf(\n);} }效果如下  6、玩家下棋 int playerMove(int x, int y) {if (x 0 x 19 y 0 y 19) {if (map[x][y] 0) {if (flag % 2 0)map[x][y] 1;//下黑子elsemap[x][y] 2;//下白子//落子成功return 1;}else {//该位置已有棋子return 0;}}else {//坐标不合法return -1;} } 首先判断下棋位置是否在棋盘0到18的横纵坐标内如果不在函数返回值-1如果在棋盘内则进行下棋。棋盘每个格子初始值为0判断当前格子的值为0才可以下棋否则返回值为0。回合数flag初始值为0当flag为偶数下黑子1奇数下白子2成功下棋返回值为1。 7、判断输赢 int isWin(int x, int y) {int i, j;for (i 0; i 19; i) {for (j 0; j 19; j) {if (map[i][j] 0) {continue;}//横着连成五子if (j 15)if (map[i][j] map[i][j 1] map[i][j] map[i][j 2] map[i][j] map[i][j 3] map[i][j] map[i][j 4])return map[i][j];//竖着连成五子if (i 15)if (map[i][j] map[i 1][j] map[i][j] map[i 2][j] map[i][j] map[i 3][j] map[i][j] map[i 4][j])return map[i][j];//左斜着连成五子- \ if (i 15 j 15)if (map[i][j] map[i 1][j 1] map[i][j] map[i 2][j 2] map[i][j] map[i 3][j 3] map[i][j] map[i 4][j 4])return map[i][j];//右斜着连成五子- / if (i 15 j 4)if (map[i][j] map[i 1][j - 1] map[i][j] map[i 2][j - 2] map[i][j] map[i 3][j - 3] map[i][j] map[i 4][j - 4])return map[i][j];}}return 0; } i 15 用于确保在检查垂直和左斜方向的连续五子时起始位置 (i, j) 之后至少还有4个位置。因为五子连成一线需要五个连续的位置所以确保从当前位置开始往下检查的时候不会超出数组的边界。 j 15 用于确保在检查水平和左斜方向的连续五子时起始位置 (i, j) 之后至少还有4个位置。同样这是为了确保从当前位置开始往右检查的时候不会超出数组的边界。 j 4 用于确保在检查右斜方向的连续五子时起始位置 (i, j) 之前至少还有4个位置。这是为了确保从当前位置开始往左检查的时候不会超出数组的边界。 8、功能整合 void gameView() {init();int x 0, y 0;int ret 0;//辅助判断坐标是否合法while (1) {gameView_ShowMap();printf(请输入要下棋的坐标);scanf(%d %d, x, y);if (playerMove(x, y) 0) {printf(\n!!!该坐标已被占用!!!\n);Sleep(2000);continue;}else if (playerMove(x, y) -1) {printf(\n!!!请输入合法坐标!!!\n);Sleep(2000);continue;}else {flag;//切换回合}if (isWin(x, y) 0) {continue;}else if (isWin(x, y) 1) {printf(黑子获胜\n);break;}else if (isWin(x, y) 2) {printf(白子获胜\n);break;}}} 这里的Sleep函数需要头文件#include Windows.h使用该函数暂停两秒防止continue后下次循环打印的棋盘将提示信息挡住。下棋坐标不合法打印提示信息后进入下次循环重新输入。成功下棋则flag自增切换回合。每次下棋后都要判断输赢有人赢了则停止循环否则继续下棋。其实应该从下棋次数第五次开始判断输赢更合理读者可以自行添加判断 人机下棋 想要实现人机下棋可以看看我这篇文章《三子棋》 里面实现了人机下棋读者可以自行模仿改进实现其功能的重要函数可以在这篇文章中学习 randsrand函数 。  完整版  game.h #include stdio.h #include Windows.h int map[19][19];//棋盘 int flag;//回合数//初始化 void init();//游戏菜单 void menuView();//打印棋盘 void gameView_ShowMap();//玩家下棋 int playerMove(int x, int y);//判断输赢 int isWin(int x, int y); game.c #define _CRT_SECURE_NO_WARNINGS 1 #include game.hvoid init() {for (int i 0; i 19; i) {for (int j 0; j 19; j) {map[i][j] 0;}}flag 1; }int isWin(int x, int y) {int i, j;for (i 0; i 19; i) {for (j 0; j 19; j) {if (map[i][j] 0) {continue;}//横着连成五子if (j 15)if (map[i][j] map[i][j 1] map[i][j] map[i][j 2] map[i][j] map[i][j 3] map[i][j] map[i][j 4])return map[i][j];//竖着连成五子if (i 15)if (map[i][j] map[i 1][j] map[i][j] map[i 2][j] map[i][j] map[i 3][j] map[i][j] map[i 4][j])return map[i][j];//左斜着连成五子- \ if (i 15 j 15)if (map[i][j] map[i 1][j 1] map[i][j] map[i 2][j 2] map[i][j] map[i 3][j 3] map[i][j] map[i 4][j 4])return map[i][j];//右斜着连成五子- / if (i 15 j 4)if (map[i][j] map[i 1][j - 1] map[i][j] map[i 2][j - 2] map[i][j] map[i 3][j - 3] map[i][j] map[i 4][j - 4])return map[i][j];}}return 0; }int playerMove(int x, int y) {if (x 0 x 19 y 0 y 19) {if (map[x][y] 0) {if (flag % 2 0)map[x][y] 1;//下黑子elsemap[x][y] 2;//下白子//落子成功return 1;}else {//该位置已有棋子return 0;}}else {//坐标不合法return -1;} }void menuView() {printf(*************************\n);printf(***** 1. play ******\n);printf(***** 0. exit ******\n);printf(*************************\n); }void gameView_ShowMap() {int i, j;printf( );for (i 0; i 19; i) {//打印横坐标printf(%3d ,i);}printf(\n );for (i 0; i 19; i) {printf(---);}printf(\n);for (i 0; i 19; i) {printf(%2d |, i);//每行输出前先都打印纵坐标for (j 0; j 19; j) {printf( %d , map[i][j]);if (j 18)printf(|);}printf(|\n);if(i18)printf( |);if(i18)printf( );for (j 0; j 19; j) {printf(---);if (j 18)printf();}printf(\n);} } text.c #define _CRT_SECURE_NO_WARNINGS 1 #include game.hvoid gameView() {init();int x 0, y 0;int ret 0;//辅助判断坐标是否合法while (1) {gameView_ShowMap();printf(请输入要下棋的坐标);scanf(%d %d, x, y);if (playerMove(x, y) 0) {printf(\n!!!该坐标已被占用!!!\n);Sleep(2000);continue;}else if (playerMove(x, y) -1) {printf(\n!!!请输入合法坐标!!!\n);Sleep(2000);continue;}else {flag;//切换回合}if (isWin(x, y) 0) {continue;}else if (isWin(x, y) 1) {printf(黑子获胜\n);break;}else if (isWin(x, y) 2) {printf(白子获胜\n);break;}}}int main() {int input 0;do{menuView();printf(请选择);scanf(%d, input);switch (input) {case 1:gameView();break;case 0:printf(退出游戏\n);break;default:printf(输入错误请重新选择.\n);break;}} while (input);return 0; } 测试功能代码 此代码可以替换int main主函数用于测试函数功能是否正确可以减少自行下棋测试时间  成功运行输出如下 int main() {int testflag 0;//init测试代码init();if (flag ! 0) {printf(init()错误);exit(0);}for (int i 0; i 19; i) {for (int j 0; j 19; j) {if (map[i][j]) {printf(init()错误);exit(0);}}}printf(init()测试成功\n);testflag;//playerMove测试代码int result 1;result playerMove(2, 2);result playerMove(2, 3);result playerMove(2, 4);result playerMove(2, 5);if (result ! 1 || (map[2][2] map[2][3] map[2][4] map[2][5]) ! 1) {printf(playerMove()错误);exit(0);}flag 1;result playerMove(2, 5);if (result ! 0 || map[2][5] ! 1) {printf(playerMove()错误);exit(0);}printf(playerMove()测试成功\n);testflag;//isWin测试代码playerMove(2, 1);if (isWin(2, 1)) {printf(isWin()错误);exit(0);}playerMove(1, 0);playerMove(3, 2);playerMove(4, 3);playerMove(5, 4);if (isWin(1, 0) ! 2) {printf(isWin()错误);exit(0);}printf(isWin()测试成功\n);testflag;if (testflag 3) {printf(service代码测试成功\n);}return 0; }
http://www.tj-hxxt.cn/news/226444.html

相关文章:

  • 国内网站赏析建筑工程防护网
  • 申请域名后如何发布网站山东广饶建设银行网站
  • 辽宁建设官方网站汕头人才网
  • 四川建设网网站软件开发培训学校驾校宝典
  • php在线做网站永久免费网站系统
  • 苏网站建设网站显示速度的代码是什么意思
  • 创建吃的网站怎么做佛山seo扣费
  • 网站标志的原则领英如何创建公司主页
  • 苏州网站关键字优化wordpress用户访问频率
  • 比格设计官网西安百度seo排名软件
  • 网站建设谈单技巧WordPress推送百家号
  • 商务定制网站自己电脑如何做网站服务器
  • 做餐饮店铺哪个网站深圳做生鲜食材的网站叫什么
  • 淄博三合一网站开发友情链接代码美化
  • 吉林天宇建设集团网站手机软件开发公司
  • 域名出售网站宁波网站建设公司哪有
  • 北京cms建站系统十大网红电商
  • 无锡免费建设网站美妆网页设计代码大全
  • 访问数据库的网站开发语言网站接电话
  • 哪个网站银锭专业做银锭的公众号链接电影网站怎么做
  • 保定网站优化公司站长工具seo优化建议
  • 黑龙江网站建设巨耀网络企业如何制作网站管理系统
  • 自己做的网站怎样让百度搜到广州专业拓客团队联系方式
  • 做网站需要什么许可证大连网站开发培训班
  • 上海智能网站建设wordpress并发
  • 网站建设汇编材料建设什么网站可以赚钱
  • 网站设计有限公司怎么样东莞市莞城建筑工程有限公司
  • 学校校园网站使用湛江做网站的网站
  • 门户网站建设工作制度建立情况免费定制开发软件
  • 广州市住房和城乡建设局官方网站wordpress 主题 汉化