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

可以完成交易的网站 做千锋教育介绍

可以完成交易的网站 做,千锋教育介绍,揭阳网站设计制作,北京医疗网站建设一直说写个几百行的小项目#xff0c;于是我写了一个控制台的扫雷#xff0c;没有想到精简完了代码才200行左右#xff0c;不过考虑到这是我精简过后的#xff0c;浓缩才是精华嘛#xff0c;我就发出来大家一起学习啦#xff0c;看到程序跑起来能玩#xff0c;感觉还是蛮…         一直说写个几百行的小项目于是我写了一个控制台的扫雷没有想到精简完了代码才200行左右不过考虑到这是我精简过后的浓缩才是精华嘛我就发出来大家一起学习啦看到程序跑起来能玩感觉还是蛮有成就感的~~~        扫雷应该属于一款大众游戏从我初中使用计算机开始它就被集成到了windows系统中虽然他是这么经典我还是要介绍一下他的玩法然后再考虑在控制台中怎么实现它。编辑请点击输入图片描述1、游戏的主界面是一个一个小方格在小方格上单击左键可以翻开小方格看看后面有什么。2、在这些小方格的背后隐藏着雷如果不幸点中了雷那么就GameOver了。3、如果点中的不是一个雷那么就是一块空地这个时候会出现两种情况1用鼠标点中的空地周围八个点内有雷那么就显示雷的个数2用鼠标点中的空地周围没有雷这个时候就将周围的空地全部显示出来遇到该显示数字的空地就将数字显示出来。仔细观察你会发现数字会将空地围起来这是一句废话但是也值得想一想这是为什么4、在小方格上点击鼠标的右键可以将一个空地标记为雷当然这个功能只是为了方便你记忆你之前确定是雷的地方。还有左右键都点和点击右键出现标记这里就不谈啦5、当空地上剩余的格子数和雷的个数一样多那么这个时候就应该算是胜利啦。        OK~游戏流程说完了这个时候该谈谈如何实现了。1、首先需要一张地图一般情况下我们都可以用一个二维数组表示一个地图每一个元素代表着扫雷中的一个小方格。相应元素存储0那么地图上的这个位置就是空地相应元素存储1那么就代表这个位置就一颗雷。2、在控制台上依照二维数组长度和宽度打印相应的小方块。3、然后就用鼠标点击那些小方块对于控制台来讲在黑框框的区域中是有坐标的可以使用一些函数捕获到你点击了屏幕的哪一个坐标。4、对于控制台来说打印一个字符有的字符横向占一个位置比如普通的字母数字有的字符横向占两个位置比如一些图形字符: ①②③■◆等等,这点在控制台编程的时候要注意。5、当点击屏幕的时候,获取到点击的坐标后,去二维数组中查看相应的位置是雷还是空地,从而做相应的处理。1假如点击到了雷那么就控制游戏结束2假如点击到了空地有两种情况1点击的空地周围有雷那么就将雷的个数显示出来2假如点击的空地周围没有雷那么就使用递归的方法去探测周围的点探测出与其相连的所有周围有雷的点。下面就是代码啦// saolei.cpp : 定义控制台应用程序的入口点。#include stdafx.h#include windows.h#include stdlib.h#include time.h#define Boom 10int a[10][10] {0};COORD TempPos[100] {0};int nSign 0;/************************************函数名 : WriteWchar函数作用: 在控制台相应的坐标上显示一串字符返回值 : void参数 : int x 横坐标参数 : int y 纵坐标参数 : char szString[] 要显示的字符串说明 ************************************/void WriteWchar(int x,int y,char szString[]){HANDLE hOut GetStdHandle(STD_OUTPUT_HANDLE);COORD pos {x*2,y};SetConsoleCursorPosition(hOut,pos);printf(%s,szString);}/************************************函数名 : DrawNumber函数作用: 在相应的坐标上根据传入的数字打印相应的数字字符返回值 : void参数 : COORD pos 要打印的位置参数 : int nNumber 要打印的数字说明 ************************************/void DrawNumber(COORD pos,int nNumber){switch (nNumber){case 1:WriteWchar(pos.X,pos.Y,①);break;case 2:WriteWchar(pos.X,pos.Y,②);break;case 3:WriteWchar(pos.X,pos.Y,③);break;case 4:WriteWchar(pos.X,pos.Y,④);break;case 5:WriteWchar(pos.X,pos.Y,⑤);break;case 6:WriteWchar(pos.X,pos.Y,⑥);break;case 7:WriteWchar(pos.X,pos.Y,⑦);break;case 8:WriteWchar(pos.X,pos.Y,⑧);break;default:break;}}/************************************函数名 : GetNumber函数作用: 获取一个点的四周有几颗雷返回值 : int参数 : COORD pos 要探测的点的坐标说明 ************************************/int GetNumber(COORD pos){int nCount 0;for(int i pos.X-1;ipos.X1;i)for (int j pos.Y-1;jpos.Y1;j){if (a[j][i] Boom){nCount;}}return nCount;}/************************************函数名 : Drawmap函数作用: 打印一下地图返回值 : void说明 ************************************/void Drawmap(){for (int i 0;i10;i){for (int j 0;j10;j){WriteWchar(j,i,■);}}}/************************************函数名 : Init函数作用: 随机生成10个地雷然后存到数组中返回值 : void说明 ************************************/void Init(){srand(time(NULL));for (int i 0;i10;i){int Temp_x rand()%10;int Temp_y rand()%10;//判断这个地方是不是已经生成一个雷了如果没有赋值为雷if (a[Temp_x][Temp_y]!Boom){a[Temp_x][Temp_y] Boom;}//如果是雷就相当于本次生成没有发生过。。。。。else{i--;}}Drawmap();}/************************************函数名 : IsClose函数作用: 判断是不是已经探测过的点由于使用的8方向递归的探测这样避免重复返回值 : bool参数 : COORD posTemp说明 ************************************/bool IsClose(COORD posTemp){for (int i 0;inSign;i){if(TempPos[i].X posTemp.XTempPos[i].Y posTemp.Y)return true;}return false;}/************************************函数名 : IsKongdi函数作用: 判断一个点是空地还是雷如果是空地需要做其他处理返回值 : void参数 : COORD pos说明 ************************************/bool IsKongdi(COORD pos){int nNumber 0;//1 如果是雷就直接返回一个false说明要挂了if (a[pos.Y][pos.X] Boom){return false;}//2 如果不是雷那么就做后续处理else{//2.1先判断一下周围有几颗雷nNumber GetNumber(pos);if (nNumber!0){//有几颗雷就打印这个数字DrawNumber(pos,nNumber);return true;}else{//如果没有雷那就先画空地出来然后向周围扩散去探测其他点WriteWchar(pos.X,pos.Y, );}}//2.2点到了空地但是周围没有雷的情况的处理继续去探测周围8个点for(int i -1;i1;i)for (int j -1;j1;j){COORD posTemp {pos.Xi,pos.Yj};//是不是越界了if (i0j0||posTemp.X-1||posTemp.Y-1||posTemp.X10||posTemp.Y10)continue;//这个点是不是已经探测过了if (IsClose(posTemp))continue;//这个点没有探测过就将其加入到数组中然后使其在以后的探测中存入TempPos[nSign] posTemp;IsKongdi(posTemp);}return true;}/************************************函数名 : GetMousePosition函数作用: 获取鼠标点击的位置假如没有获取到就返回(-1,-1)返回值 : COORD 鼠标点击的坐标说明 ************************************/COORD GetMousePosition(){HANDLE hIn GetStdHandle(STD_INPUT_HANDLE);INPUT_RECORD stcInput {0};DWORD buffer;COORD pos {-1,-1};ReadConsoleInput(hIn,stcInput,1,buffer);if (stcInput.EventType MOUSE_EVENT){MOUSE_EVENT_RECORD stcMouseEnent stcInput.Event.MouseEvent;if (stcMouseEnent.dwButtonState FROM_LEFT_1ST_BUTTON_PRESSED ){pos stcMouseEnent.dwMousePosition;pos.X/2;}}return pos;}int _tmain(int argc, _TCHAR* argv[]){Init();COORD pos;//开始游戏while(1){//获取鼠标点击位置pos GetMousePosition();if (pos.X!-1){//如果鼠标点击的位置被探测过了就开始下一次循环if (IsClose(pos)){continue;}TempPos[nSign] pos;bool bIskongdi IsKongdi(pos);//点到雷了就直接退出游戏了。if (false bIskongdi){system(cls);WriteWchar(20,10,you lose);getchar();break;}//检测是不是赢了赢的条件就是没有被探测的点的个数和雷的个数相等if (nSign 90){system(cls);WriteWchar(20,10,you win);}}}return 0;}项目不是很长但是注释我写的还算明白估计大家都可以看得懂希望对于新手们有一定的帮助最后谢谢大家的支持关注点赞
http://www.huolong8.cn/news/309770/

相关文章:

  • 国内专门做旅游攻略的网站wordpress学院主题
  • 家具网站建设食品购物网站建设
  • 怎建立自己网站做淘宝客餐饮管理培训课程
  • 自己做网站卖什么好郴州建设网站的公司
  • 企业网站建设市场前景公司取名字
  • 网站做优化按点击收费wordpress热门文章查询
  • 流量打不开网站怎么办优化什么意思
  • 网站开发岗位职责做网站备案实名需要钱吗
  • 网站建设进度及实过程网站备案单位查询系统
  • 中小型企业网站建设东营网站建设制作
  • 网站建设报价模块船舶cms是什么意思
  • 新网站多久被收录wordpress调用文章排序
  • 成都园林设计公司宁波正规优化seo公司
  • 网站建设专员工作总结电商平台要投资多少钱
  • 威海城乡建设局网站筹建网站信息技术
  • 营销型网站建设的特点深圳做网站 汉狮网络
  • 郑州东区做网站电话两岸统一最新消息
  • h5免费模板网站win7iis部署asp.net网站
  • 网站前台图片设置遵义市住房和城乡建设局官方网站6
  • 廊坊网站建设选择青橙网络温州营销网站公司
  • 网站建设推广软件新闻稿代写
  • 社交网站 ui工商局网站年检怎么做
  • so域名的网站有哪些中国建设银行网站忘记密码怎么办
  • 西安网站推广慧创科技业务型网站首页
  • 武昌做网站哪家好网站设计模板图片
  • 域名购买网站高端手机网站定制
  • 怎么用vscode做网站赣州唯宅汇科技有限公司
  • 贵州城乡建设部网站wordpress 当前位置
  • dw网站建设教程视频广州网络营销品牌
  • 专业制作网站 地摊网站平台建设规划