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

卖网站链接仪征市企业网站建设公司

卖网站链接,仪征市企业网站建设公司,聊城开发区网络公司排名,郑州网站建设快速排名熊掌在上篇降落函数中使用到了判断游戏是否结束的功能,因此这篇先从判断游戏是否结束开始 判断游戏是否结束 void failCheck(void){if(!moveable(START_X,START_Y,MOVE_DOWN,BLOCK_UP)){setcolor(WHITE);setfont(45,0,_T("隶体"));outtextxy(75,300,_T(&quo…

在上篇降落函数中使用到了判断游戏是否结束的功能,因此这篇先从判断游戏是否结束开始

判断游戏是否结束

void failCheck(void){if(!moveable(START_X,START_Y,MOVE_DOWN,BLOCK_UP)){setcolor(WHITE);setfont(45,0,_T("隶体"));outtextxy(75,300,_T("GAME OVER!"));Sleep(1000);system("pause");closegraph();exit(0);}
}

判断游戏是否结束,最主要的判断条件是方块是否可以移动,如果方块刚产生就无法移动,则可以作为游戏结束的判断条件。如果游戏结束,则显示游戏结束的字样。

由于游戏的运行应该不断判断方块能否移动以及游戏是否结束。这里的思路是这样的,在主函数中,不断循环新方块函数,在新方块函数中调用移动函数,在移动函数中判断游戏是否结束。相当于游戏不断调用移动函数并且不断判断游戏是否结束。

如果游戏没有结束,则方块持续降落

在降落过程中要判断用户是否有键盘的输入,由于降落是持续循环的,相当于判断键盘输入也是持续循环的。

判断方块是否可以移动

//如果在指定位置可以在指定方向移动,就返回1,否则就返回0
int moveable(int x0,int y0,move_dir_t moveDir,block_dir_t blockDir){//计算当前方块的左上角在30*15的游戏区中的位置(第多少行,第多少列)int x=(y0-minY)/UNIT_SIZE;int y=(x0-minX)/UNIT_SIZE;int id=BlockIndex*4+blockDir;int ret=1;if(moveDir==MOVE_DOWN){for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(block[id][i][j]==1 && (x+i+1>30 || (x+i>=0 && x+i<30 && y+j>=0 && y+j<15 && visit[x+i+1][y+j]==1))){ret=0;}}}}else if(moveDir==MOVE_LEFT){for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(block[id][i][j]==1 && (y+j==0 || (x+i>=0 && x+i<30 && y+j-1>=0 && y+j-1<15 && visit[x+i][y+j-1]==1))){ret=0;}}}}else if(moveDir==NOVE_RIGHT){for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(block[id][i][j]==1 && (y+j+1>=15 || (y+j+1>=15 || (x+i>=0 && x+i<30 && y+i+1>=0 && y+j+1<15 && visit[x+i][y+j+1]==1)))){ret=0;}}}}return ret;
}

首先找到需要判断的方块的位置,判断这个位置在指定方向上的下一个位置是否越界,如果没有越界,则判断该位置在指定方向的下一个位置是否被占用。

如果位置越界或被占用,则返回不能向指定方向移动的结果。

这里我当初有个疑问:就是如果一个方块的几个格子连在一起,岂不是会判断不能移动。后面发现,假如指定方向是向右,则这个形状方块的最右边的方块是可以移动的,最右边的方块移动之后,次右边的方块也可以移动了,这样依次移动即可。

但是又有一个问题,判断方块是否可以移动的时候是按照顺序判断的,最边上的方块不一定是最先判断的,除非,这个判断的动作不断的循环,否则只判断一轮的话是无法满足移动方块的需求的。那这个判断是否是循环进行的呢?

根据前面的描述,游戏是否结束会循环判断,而是否可以移动函数在判断游戏是否结束函数中被调用,因此判断是否可以移动函数也是会被循环调用的。

这样一来,方块下落的功能就基本上完成了。只需要在移动函数的判断语句之后加上对方块坐标的修改即可。具体代码如下

void move(void){int x = START_X;int y = START_Y;int k = 0;block_dir_t  blockDir = BLOCK_UP;int curSpeed = speed;// 检测游戏是否结束failCheck();// 持续向下降落while (1) {if (_kbhit()) {int key = _getch();if (key == KEY_SPACE) {_getch();}}// 清除当前方块clearBlock(x, k, blockDir);if (_kbhit()) {int key = _getch();if(key == KEY_UP) {} else if (key == KEY_DOWN) {} else if (key == KEY_LEFT) {} else if (key ==KEY_RIGHT) {}}k += 20;// 绘制当前方块drawBlock(x, y+k, BlockIndex, blockDir);wait(curSpeed);//k += 20;// 方块的“固化”处理}
}

http://www.yayakq.cn/news/572517/

相关文章:

  • 安徽通皖建设工程有限公司网站用云速成美站怎么做网站
  • 渭南网站建设wifi做挖机配件销售的网站
  • 网站架构思维导图网页设计欣赏英文
  • 提供网站建设课程代码中国建筑股票
  • 网站维护 设计游戏推广引流渠道
  • 爱站网是什么平台做做做网站
  • 如何制作外贸网站用nat123做自己的网站
  • 电商网站链接买卖网上开公司一般多少钱
  • 家居用品东莞网站建设哪种公司一般会做网站
  • 效果图网站无缝连接怎么导入文章到wordpress
  • 网站页面布局的目的微信小程序注册方法
  • 导航网站建设如何服务器ip地址做网站
  • 外贸模板网站深圳郑州网站建设公司谷雨
  • wordpress 文章图片链接安卓优化大师旧版本
  • 优质的天津网站建设免费网站怎么盈利模式
  • 山东专业网站建设公司哪家好ppt排版布局
  • 娄底网站建设公司有哪些网址导航网站建设
  • 福州高端网站定制wordpress创建滑块
  • 农村建设开发有限公司网站html5炫酷的网站
  • 江苏国龙翔建设网站抖音推广平台有哪些
  • 网站制作费用价格表wordpress login 出错
  • 怎样建网站买东西如何让订阅号菜单做微网站
  • html5网站链接标签古镇建设网站
  • 网站开发销售员电话销售做网站打官司
  • 旅游网站建设公司网站权重难做
  • asp.net网站开发实例教程网上购物流程
  • 普通营业执照有做网站条件吗网站维护属于什么部门
  • 做性的网站有哪些html编辑器dw
  • 个人网站建设安全怎么样建设自己网站
  • 苏州淘宝运营培训大连做优化网站哪家好