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

中国最大网站排名泰安如何开发商城app开发

中国最大网站排名,泰安如何开发商城app开发,排名网,广州微网站建设前言 大家已经和博主学习有一段时间了#xff0c;今天讲一个有趣的实战项目——三子棋 目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 时间戳#xff1a;推荐一篇 C语言生成随机数的方法_c语言随机数_杯浅…前言 大家已经和博主学习有一段时间了今天讲一个有趣的实战项目——三子棋 目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 时间戳推荐一篇 C语言生成随机数的方法_c语言随机数_杯浅的博客-CSDN博客 判断输赢 游戏逻辑实现 制作菜单 在玩游戏时我们在进入游戏都会有菜单选项选择开始游戏推出游戏等这些指令说到选择那么我们可以依据我们所学的循环和分支语句来先完成基本框架的设计。 首先我们进入游戏都是先显示选项做出选择并且在玩游戏时玩一局还想玩怎么办想一想我们前边的知识哪种结构符合先进入游戏出现菜单再循环这一需求那肯定是do…while的循环结构更符合那么我们就先使用函数来打印输出一个菜单选项 void menu() {printf(*****************************\n);printf(*****************************\n);printf(**********1.play^************\n);printf(**********0.exit^************\n);//菜单printf(*****************************\n);printf(*****************************\n); }int main {int a 0;do{menu();printf(请选择);scanf%d,a;}while(); return 0; } 构建游戏选择框架 游戏菜单已在屏幕上显示完成现在需要完成选择并且在玩游戏时玩一局还想玩怎么办。 这时候需要应用博主之前阐述的switch语句来实现 int main() {int input 0;do{menu();printf(PLEASE SELECT:);scanf(%d, input);switch(input){case 1:game(); //以上为界面的选择break;case 0:printf(Exit\n);break;default:printf(ERRO,PLEASE CHOOSE AGAIN\n);break;}} while (input);//while循环可以利用0为假其余为来实现用户可反复选择 //直到选到合适为止return 0; } 实现游戏功能 模块化编程 这里博主引入一个概念模块化编程。方便引用不会显得头重脚轻而且转为静态库不易被盗用。这里需要创建三个文件test.c   game.c   game.h    test.c:是用来实现游戏逻辑    game.c:用来实现游戏功能的函数   game.h:用来申明游戏功能函数可引用 传统方式编程所有的函数均放在main.c里若使用的模块比较多则一个文件内会有很多的代码不利于代码的组织和管理而且很影响编程者的思路。 模块化编程把各个模块的代码放在不同的.c文件里在.h文件里提供外部可调用函数的声明其它.c文件想使用其中的代码时只需要#include XXX.h文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等。 传统方式编程所有的函数均放在main.c里若使用的模块比较多则一个文件内会有很多的代码不利于代码的组织和管理而且很影响编程者的思路。 模块化编程把各个模块的代码放在不同的.c文件里在.h文件里提供外部可调用函数的声明其它.c文件想使用其中的代码时只需要#include XXX.h文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等! 总的来说就是当你代码比较多的时候就可以采用模块化编程来完成这个程序。  三子棋我们需要在棋盘中输入要下的位置相当于是一个三乘三的数组这里我们就用到了二维数组的知识那么游戏开始前需要我们先对棋盘初始化使数组中的元素都为空格那么就是数组初始化赋值只用循环遍历每一个元素并赋予空格就ok了。 注意这里设置函数的时候因为用到二维数组所以函数的形参为数组名行 列 void initboard(char board[row][col], int hang, int lie) {int i 0;int j 0;for (i 0; i hang; i){for (j 0; j lie; j){board[i][j] ;} printf(\n);} } 打印棋盘 将置空的二维数组用线隔开 void displayboard(char board[row][col], int hang, int lie) //可以随意控制棋盘大小 {int i 0;for (i 0; i hang; i){int j 0;for (j 0; j lie; j){printf( %c ,board[i][j]);if (j lie - 1)//为了不让最后一行打印‘|’printf(|);}printf(\n);if (i hang - 1){int j 0;for (j 0; j lie; j){printf(---);if (j lie - 1)printf(|);}printf(\n);}} }效果图 玩家下棋 玩家下棋的话使用*标志利用坐标来将“空格”替换 void player(board[row][col],int hang,int lie) {int x 0;int y 0; printf(玩家开始下棋); scanf(%d %d,a,b); if(x1x3y1y3) { if(board[x-1][y-1] ){board[x-1][y-1]*;}else {printf(坐标已经被占用请重新选择);}else {printf(坐标非法请重新输入);}} }玩家下完棋需要有对立面也就是我们的电脑 电脑下棋 时间戳推荐一篇 C语言生成随机数的方法_c语言随机数_杯浅的博客-CSDN博客 void computer(char board[row][col], int hang, int lie) {printf(电脑下棋\n);int x 0;int y 0;while(1){ x rand() % hang;//0-2//模取余数不会超过这个数y rand() % lie;if (board[x][y] ){board[x][y] #;break;}} } 判断输赢 输赢情况分析行三连列三连对角线俩条。 char panduan(char board[row][col], int hang, int lie) {int i 0;for (i 0; i hang; i)//行{if(board[i][0]board[i][1]board[i][1]board[i][2] board[i][1] ! ){return board[i][1];//电脑和玩家都可以用这一个判断}}int j 0;for (j 0; j lie; j)//列 {if (board[0][j] board[1][j] board[1][j] board[2][j] board[1][j] ! ){return board[1][j];}}if (board[0][0] board[1][1] board[1][1] board[2][2] board[1][1] ! ){return board[1][1];}if (board[0][2] board[1][1] board[1][1] board[2][0] board[1][1] ! ){return board[1][1];}//平局if (isfull(board, hang, lie)){return q;//平局 else} return c; } 游戏逻辑实现 创建菜单函数选择 进入游戏 以及 退出游戏。 首先初始化 棋盘。 然后再打印棋盘。注意一定是要先进行 初始化 然后再 打印棋盘。 玩家下棋并打印出棋盘玩家输入行、列坐标方式进行落子x 玩家落子 判断玩家是否 赢判断是否 继续游戏。(字符c代表 继续游戏、字符q代表 游戏平局) 电脑进行落子下棋(随机位置进行落子o 电脑落子) 判断③种胜负方式分别是玩家赢、电脑赢、以及 平局。 然后再回到步骤①是否选择 进入游戏 以及 退出游戏。   void game() {int key 0;char board[row][col] { 0 }; //不直接写成数字利于改变棋盘大小//初始化棋盘的函数initboard(board,row,col);displayboard(board,row,col);while(1){player(board, row, col);keypanduan(board, row, col);if(key!c){break;}displayboard(board, row, col); computer(board, row, col);key panduan(board, row, col);if (key ! c){break;}displayboard(board, row, col);} if (key *){printf(玩家胜利\n);}else if(key#){printf(电脑胜利\n);}else if(keyp){printf(平局\n);} } 另外我们还需要将game.c以声明的形式放入game.h中 #pragma once #define _CRT_SECURE_NO_WARNINGS #include stdio.h #includewindows.h #includestdlib.h #includetime.h//这个全可以调用 #define row 3 #define col 3 //初始化棋盘 void initboard(char board[row][col], int hang, int lie); //打印棋盘 难点 void displayboard(char board[row][col], int hang, int lie); //玩家下棋 void player(char board[row][col], int hang, int lie); //电脑下棋 void computer(char board[row][col], int hang, int lie); //判断输赢 玩家赢 电脑赢 平 继续/ char panduan(char board[row][col], int hang, int lie); int isfull(char board[row][col], int hang, int lie); 之后利用test.c来实现游戏逻辑(在编辑的开始需要加上#includegame.h) 好了今天的文章到这里希望对大家有帮助!
http://www.zqtcl.cn/news/745362/

相关文章:

  • 出口贸易网站网站建设及解决方案
  • 网站服务器要求做网站需要的服务器
  • 网站后台 编辑器 调用网站优化搜索排名
  • 汽车网站建设规划书网站首页版式
  • 国外网站推广方法wnmp 搭建WordPress
  • 网站建设流程 文档企业网上办事大厅
  • .net怎么做网站域名备案注销流程
  • 检测网站建设网站搭建注意事项
  • 河北建设工程信息网站网站的建设要多少钱
  • 玉林住房和城乡建设局网站官网google广告在wordpress
  • 海淀网站建设公司wordpress 招聘网站模板
  • 手机网站在哪里找到网上能免费做网站发布叼
  • 网站设置英文怎么说广州优质网站建设案例
  • 外贸怎样做网站临汾花果街网站建设
  • 专业集团门户网站建设方案南昌医院网站建设
  • 用php做美食网站有哪些新建网站如何做关键词
  • 企业网站建设招标微信公众平台官网登录入口网页版
  • 网站宣传图网站程序预装
  • 网站设计论文选题seo排名优化推广报价
  • wordpress图床网站百度链接收录
  • 八年级信息网站怎么做电商网站的支付接入该怎么做呢
  • wordpress 的应用大兴安岭地网站seo
  • 网站建站作业做直播网站赚钱
  • 网站建设虍金手指花总简单免费制作手机网站
  • 京东网站是刘强冬自己做的吗献县网站建设价格
  • 余姚什么网站做装修比较好邢台企业做网站哪儿好
  • 网站建设后端国外购物平台排行榜前十名
  • 西安做百度推广网站 怎样备案简述商务网站建设
  • 如何建设本地网站东莞常平限电通知2021
  • 成都网站建设cdajcx重庆推广网站排名价格