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

sns社区网站开发怎么做网站编辑

sns社区网站开发,怎么做网站编辑,怎么建设企业网站,合肥网站设计制作目录 一、环境配置 二、功能模块 1.打印菜单 2.初始化并打印棋盘 3、行棋 3.1玩家行棋 3.2电脑行棋 4、判断是否和棋 5.判赢 三、代码实现 1、test.c文件 2、game.c文件 3、game.h文件 一、环境配置 本游戏用到三个文件#xff0c;分别是两个源文件test.c game.c 和…目录 一、环境配置 二、功能模块 1.打印菜单 2.初始化并打印棋盘 3、行棋  3.1玩家行棋 3.2电脑行棋 4、判断是否和棋  5.判赢 三、代码实现 1、test.c文件 2、game.c文件 3、game.h文件 一、环境配置 本游戏用到三个文件分别是两个源文件test.c  game.c 和一个头文件game.h。         主函数main()在test.c文件中游戏实现所需要的函数在test.c中被引用而函数的实现主要是在game.c文件中完成。game.h文件中包含了程序所需的所有头文件并且包括对实现游戏功能的所有函数的声明。         之所以使用3个文件是因为三子棋的实现需要多个模块的相互串联多个文件各司其职这样可以更好的处理各个模块间的逻辑这样也增加了代码的可读性而且还利于调试。 二、功能模块 1.打印菜单 void menu() {printf(********************************\n);printf(***** 1.play *****\n);printf(***** 0.exit *****\n);printf(********************************\n); } 运行结果  玩家选择1/0决定是否进入游戏。 2.初始化并打印棋盘 InitBoard(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i row; i){for (int j 0; j col; j){board[i][j] ;}} } /* 通过创建一个char类型的二维数组对其进行初始化 */ char board[ ][ ] { 0 };        void DisplayBoard(char board[ROW][COL], int row, int col) {int i 0;int j;for (i 0; i row; i){j 0; for ( j; j col; j) //打印 | | {printf( %c , board[i][j]);if (j col - 1){printf(|);}}printf(\n);j 0;for ( j; j col; j)//打印---|---|---{if (i row - 1){printf(---);if (j col - 1){printf(|);}}}printf(\n);} } 运行结果 其中上述棋盘的大小可以根据用户需求自行调整。  棋盘大小调整方式在game.h文件中对宏的定义进行更改即可完成棋盘大小的修改。 #define ROW 3 #define COL 3 3、行棋  3.1玩家行棋 void PlayerMove(char board[ROW][COL], int row, int col) {int x 0;int y 0;printf(玩家走:\n);while (1){printf(请输入下棋的坐标:);scanf(%d %d, x, y);//判断坐标的合法性if (x 1 x row y 1 y col){//下棋//首先判断坐标是否被占用if (board[x - 1][y - 1] ){board[x - 1][y - 1] *;//玩家使用*下棋break;}else{printf(坐标被占用请重新输入\n);}}else{printf(坐标非法请重新输入);}} } 3.2电脑行棋 void ComputerMove(char board[ROW][COL], int row, int col) {printf(电脑走:);while (1){//生成随机坐标int x rand() % row;int y rand() % col;//下棋//判断坐标是否被占用if (board[x][y] ){printf(%d %d\n, x 1, y 1);//输出电脑下棋的坐标board[x][y] #;//电脑使用#下棋break;}} } 电脑和玩家每走一步棋都会打印出新的棋盘以便于玩家观察空子的位置。 4、判断是否和棋  int IfFull(char board[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 (board[i][j] ){return 0;//棋盘没满}}}return 1;//棋盘满了 }在game.c文件中通过IfFull函数实现对棋盘上空位的判断防止一个位置多次下棋。         如果棋盘所有格子都下完之前还没有分出胜负 则代表和棋以上代码为判断棋盘上面是否有空格子。 5.判赢 char IfWin(char board[ROW][COL], int row, int col) {//判断行for (int i 0; i row; i){for (int j 2; j col; j){if (board[i][j - 2] board[i][j - 1] board[i][j - 1] board[i][j] board[i][j] ! ){return board[i][j];}}}//判断列for (int j 0; j col; j){for (int i 2; i row; i){if (board[i - 2][j] board[i - 1][j] board[i - 1][j] board[i][j] board[i][j] ! ){return board[i][j];}}}//判断右交叉for (int i 2; i row; i){for (int j 2; j col; j){if (board[i - 2][j - 2] board[i - 1][j - 1] board[i - 1][j - 1] board[i][j] board[i][j] ! ){return board[i][j];}}}//判断左交叉for (int i 1; i row - 1; i){for (int j 1; j col - 1; j){if (board[i - 1][j 1] board[i][j] board[i][j] board[i 1][j - 1] board[i][j] ! ){return board[i][j];}}}//判断平局int full IfFull(board, row, col);if (full 1){return Q;}//游戏继续return C; } 每下一步棋都会对棋盘的每行、每列、左交叉、右交叉做出判断看是否有三个一样的旗子相连如果有代表下棋者获胜否则继续下棋直至下满棋盘。         return board[ i ][ j ] ;的奥妙之处就在于无论是玩家获胜还是电脑获胜都会返回与其相同的棋子不需要再重新进行判断取胜的棋子是哪一方如果返回*证明玩家获胜game()函数得到*判定玩家获胜输出“玩家获胜”如果返回#证明电脑获胜game()函数得到#判定电脑获胜输出“电脑获胜”         如果通过IfFull()函数判断棋盘已经下满就会给test.c文件中的game()函数中返回Q’game()函数得到Q便知道二者微分胜负输出和局。         否则return ’C,game()函数得到‘C’游戏继续。 三、代码实现 1、test.c文件 #includegame.h char ret 0;//ret用来存放比赛结果 void menu() {printf(********************************\n);printf(***** 1.play *****\n);printf(***** 0.exit *****\n);printf(********************************\n); }void game() {//存储数据 - 二维数组char board[ROW][COL];//初始化棋盘 - 初始化空格InitBoard(board,ROW,COL);//打印棋盘 - 本质是打印数组的内容DisplayBoard(board, ROW, COL);//玩家 电脑 走旗while (1){//玩家下棋PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL); //打印玩家的每一步走棋//判断玩家是否赢得游戏ret IfWin(board, ROW, COL);//玩家赢了* 电脑赢了# 平局Q 游戏继续Cif (ret ! C)break;//电脑下棋ComputerMove(board, ROW, COL);DisplayBoard(board, ROW, COL); //打印电脑的每一步走棋//判断电脑是否赢得游戏ret IfWin(board, ROW, COL);if (ret ! C)break;}if (ret *){printf(%c玩家获胜\n, ret);}else if (ret #){printf(%c电脑获胜\n, ret);}else {printf(%c 平局\n, ret);}DisplayBoard(board, ROW, COL); }int main() {int input 0;srand((unsigned int)time(NULL));//配合rand()函数生成随机值因为只需要调用一次所以放到main()函数中do{menu();printf(请选择:);scanf(%d, input);switch (input){case 1:printf(三子棋游戏\n);game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误请重新选择\n);break;}} while (input);return 0; } 2、game.c文件 #includegame.h//初始化棋盘的函数 InitBoard(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i row; i){for (int j 0; j col; j){board[i][j] ;}} }//打印棋盘的函数 void DisplayBoard(char board[ROW][COL], int row, int col) {int i 0;int j;for (i 0; i row; i){j 0; for ( j; j col; j) //打印 | | {printf( %c , board[i][j]);if (j col - 1){printf(|);}}printf(\n);j 0;for ( j; j col; j)//打印---|---|---{if (i row - 1){printf(---);if (j col - 1){printf(|);}}}printf(\n);} }//玩家下棋的函数 void PlayerMove(char board[ROW][COL], int row, int col) {int x 0;int y 0;printf(玩家走:\n);while (1){printf(请输入下棋的坐标:);scanf(%d %d, x, y);//判断坐标的合法性if (x 1 x row y 1 y col){//下棋//首先判断坐标是否被占用if (board[x - 1][y - 1] ){board[x - 1][y - 1] *;//玩家使用*下棋break;}else{printf(坐标被占用请重新输入\n);}}else{printf(坐标非法请重新输入);}} }//电脑下棋的函数 void ComputerMove(char board[ROW][COL], int row, int col) {printf(电脑走:);while (1){//生成随机坐标int x rand() % row;int y rand() % col;//下棋//判断坐标是否被占用if (board[x][y] ){printf(%d %d\n, x 1, y 1);//输出电脑下棋的坐标board[x][y] #;//电脑使用#下棋break;}} }//判断棋盘是否已经满了的函数 int IfFull(char board[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 (board[i][j] ){return 0;//棋盘没满}}}return 1;//棋盘满了 }//判断游戏结果的函数 char IfWin(char board[ROW][COL], int row, int col) {//判断行for (int i 0; i row; i){for (int j 2; j col; j){if (board[i][j - 2] board[i][j - 1] board[i][j - 1] board[i][j] board[i][j] ! ){return board[i][j];}}}//判断列for (int j 0; j col; j){for (int i 2; i row; i){if (board[i - 2][j] board[i - 1][j] board[i - 1][j] board[i][j] board[i][j] ! ){return board[i][j];}}}//判断右交叉for (int i 2; i row; i){for (int j 2; j col; j){if (board[i - 2][j - 2] board[i - 1][j - 1] board[i - 1][j - 1] board[i][j] board[i][j] ! ){return board[i][j];}}}//判断左交叉for (int i 1; i row - 1; i){for (int j 1; j col - 1; j){if (board[i - 1][j 1] board[i][j] board[i][j] board[i 1][j - 1] board[i][j] ! ){return board[i][j];}}}//判断平局int full IfFull(board, row, col);if (full 1){return Q;}//游戏继续return C; }3、game.h文件 //头文件的包含 #includestdio.h #includestdlib.h #includetime.h//符号的定义 #define ROW 3 #define COL 3//函数的声明//初始化棋盘函数 InitBoard(char board[ROW][COL], int row, int col); //打印棋盘的函数 void DisplayBoard(char board[ROW][COL], int row, int col); //玩家下棋 void PlayerMove(char board[ROW][COL], int row, int col); //电脑下棋 void ComputerMove(char board[ROW][COL], int row, int col); //判断游戏结果 玩家赢了* 电脑赢了# 平局Q 游戏继续C char IfWin(char board[ROW][COL], int row, int col); //判断棋盘是否已经下满 int IfFull(char board[ROW][COL], int row, int col); 感谢你的阅读希望对你有所帮助~ 欢迎批评指正共同进步
http://www.hkea.cn/news/14483364/

相关文章:

  • 咸宁网站制作培训百度信息流推广是什么意思
  • 新乡网站建设制作报价方案陕西煤业化工建设集团网站
  • 电商网站建设 教学总结各大搜索引擎收录入口
  • 百度如何推广网站wordpress视频自动播放
  • 多网站建设网页编辑和发布流程不包括以下哪个选项
  • 重庆网站平台网站备案 收费
  • Iis 建网站为什么说没有该用户唐山seo设计网站
  • 二级网站建设方案 试行上海工商网查询官网
  • 沭阳住房和城乡建设局网站做婚庆策划的网站
  • 工信部资质查询网站wordpress电影影视主题
  • 怎么申请免费企业网站软件推广简报
  • 品牌型网站建设哪家东莞高埗网站建设
  • 中山移动网站建设怎么做优化大师免费版
  • 如何做一张网站平面效果图网页 转发到wordpress
  • 镇江网站建设优化案例分析天元建设集团有限公司天眼查
  • 网站页面优化怎么做网站开发入门书籍
  • 网站建设工作流程wordpress 地图html代码
  • 个人性质网站名称知乎网站开发用的语言
  • 网站代理备案价格top域名的网站
  • 怎么做网站版面珠海互联网平台
  • wordpress建站解析用手机搭建wordpress
  • 网站建设教程学习wordpress 分类排序
  • 学校网站建设价格网站模版 下载工具
  • 有什么网站是做中式酒店大堂的cps推广是什么意思
  • 广州敏城建设工程有限公司网站网站开发设计公司块位
  • 滁州网站建设推广网站根目录有哪些
  • 十堰英文网站建设wordpress 栏目打不开
  • 千户微建站平台网站建设必备的功能模块
  • 旅游网站静态模版下载wordpress购物盒子
  • 东莞品牌营销型网站建设大专有什么专业可以选