俄罗斯方块游戏的消行实现
首先我们先贴上代码
bool checkErasing(TetrisManager *manager, TetrisControl *control)
{char count = 0;char k = 0, y = manager->y + 3; // 从下往上检测do {if (y < ROW_END && manager->pool[y] == 0xFFFFU) // 有效区域内且一行已填满{++count;// 消除一行方块memmove(manager->pool + 1, manager->pool, sizeof(unsigned short) * y);}else{--y;++k;}} while (y >= manager->y && k < 4);manager->erasedTotal += count; // 消行总数manager->score += (1*count);if (count > 0){++manager->erasedCount[count - 1]; // 消行}giveTetris(manager); // 给下一个方块return (count > 0);
}
主要实现的难点在于我们如何判断游戏池中是否为满行,其实就是判断每个格子是否为F,然后对其清除,下面是清除函数
void removeTetris(TetrisManager *manager)
{// 当前方块unsigned short tetris = gs_uTetrisTable[manager->type[0]][manager->orientation[0]];// 当前方块每4位取出,按位取反后位与到游戏池相应位置,即完成移除方块manager->pool[manager->y + 0] &=~(((tetris >> 0x0) & 0x000F) << manager->x);manager->pool[manager->y + 1] &=~(((tetris >> 0x4) & 0x000F) << manager->x);manager->pool[manager->y + 2] &=~(((tetris >> 0x8) & 0x000F) << manager->x);manager->pool[manager->y + 3] &=~(((tetris >> 0xC) & 0x000F) << manager->x);
}
对每个位置进行&清除,由于我们俄罗斯方块是4x4,所以要继续4位往上移。
以下是俄罗斯方块游戏工程的连接:
https://download.csdn.net/download/gaodes/10961687
俄罗斯方块游戏的消行实现相关推荐
- 用andengine做一款俄罗斯方块游戏
andengine 入门 AndEngine初步 作者: Me 日期: 2010/12/16 发表评论 (1)查看评论 AndEngine 是一个Android平台下基于OpenGL ES的免费(LG ...
- 回归前端学习第24天-实现俄罗斯方块小游戏7(实现单机版3—实现消行、更新方块、结束)
更改game.js.local.js. game.js中加入代码 使用下一个方块 设置到底部后,方块定住并换色 实现消行. 游戏结束 最后导出 整体代码 local.js代码 move函数更改 随机生 ...
- 回归前端学习第25天-实现俄罗斯方块小游戏8(实现单机版4—设置计时、消行加分、游戏结束标志)
增改game.js与local.js代码,实现对游戏的设置计时.消行加分.游戏结束标志等环节的设计 计时 计分 游戏结束 完整代码 local.js game.js 注意 计时 1.定义显示时间的di ...
- 500行代码写一个俄罗斯方块游戏
导读:本文我们要制作一个俄罗斯方块游戏. 01 俄罗斯方块 Tetris 俄罗斯方块游戏是世界上最流行的游戏之一.是由一名叫Alexey Pajitnov的俄罗斯程序员在1985年制作的,从那时起,这 ...
- 500 行代码写一个俄罗斯方块游戏
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 导读:本文我们要制作一个俄罗斯方块游戏. 作者 | 派森 ...
- 一个简易的游戏代码_500 行代码写一个俄罗斯方块游戏
01 俄罗斯方块 Tetris 俄罗斯方块游戏是世界上最流行的游戏之一.是由一名叫Alexey Pajitnov的俄罗斯程序员在1985年制作的,从那时起,这个游戏就风靡了各个游戏平台. 俄罗斯方块归 ...
- java俄罗斯方块消除算法_Java 俄罗斯方块消行算法
Java 俄罗斯方块消行算法 2020-08-12 11:02 阅读数 9 /** * 消行得分 */ private int plusExp() { //获取地图信息 boolean[][] gam ...
- 500 行代码写一个俄罗斯方块游戏(附源码)
点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 导读:本文我们要制作一个俄罗斯方块游戏. 作者 | 派森学python 来源 | https://segmentfault.com/a/1 ...
- 俄罗斯方块java消行_Tetris ai 俄罗斯方块自动消行程序
[实例简介] java实现的简易消行程序,最高分数为1000万,平均能够消行400百万行,将Tetris里的enabledisplay改为true就有图形化界面 [实例截图] [核心代码] Tetri ...
最新文章
- 基于Attention机制的轻量级网络架构以及代码实现
- Py之utils:utils库的简介、安装、使用方法之详细攻略
- CMake 手册详解(五)
- onmouseover-onmouseout
- 2007浙大复试上机考试题目1--最小长方形
- PD的几种文档【转】
- Pytm:威胁建模框架
- 为什么要使用Iocomp控件?
- 【用matlab设计仿真数字锁相放大器】
- 陈强教授《机器学习及R应用》课程 第六章作业
- outlook html 图片,Outlook邮件内容中的图片无法显示 图片
- Android图片拼接
- 开关电源设计实例之Boost 篇
- 拍摄制作360度全景图有哪些技巧?
- js中 push pop shift unshift使用的小问题
- Unity 编辑器下运行没有声音
- java 设置pdf 编码格式_Java 在PDF中添加条形码
- WPS 广告关闭 如何取消WPS的广告? 关闭弹窗-热点-广告推送
- pip3在Ubuntu下的安装、升级、卸载
- 分布式消息队列RocketMQ(一)安装与启动
热门文章
- 八皇后时间复杂度_【精神分裂症】首次发病未治疗精神分裂症患者大脑皮质复杂度改变...
- 噩梦射手(SurvivalShooter)教程(一)
- 罗胖精选 | 做产品最重要的是格局
- Android大厂面试真题解析大全,安卓未来路在何方
- Android NavigationBar 显示 Menu 按键
- BottomNavigationView简单使用,增加小红点,增加中间操作按钮
- steam游戏一直连接服务器,steam无法连接到更新服务器快速有效解决办法
- 凡亿教育发布电子工程师利器:IC封装网 V.1.0
- android 黑白色主题、滤镜效果(公祭日、追悼日)
- 关于VScode中用感叹号不能生成html骨架的解决方法