俄罗斯方块的简单实现
也是很早很早的东西了:P
这是我几年以前写的《Seven Puzzles》(该游戏为DOS版,可在鄙人主页http://ssscomic.yeah.net内找到)里的俄罗斯方块的实现方法,当时接触编程仅半年而已,希望可以给初学者一点帮助。 几乎没有写什么代码,而且后阶段方块旋转、消去方面更是只大致介绍了一点方法,不过应该还是可以让人明白的。 本人才疏学浅,如有不当之处,还望各位多多指教。 世界 世界即游戏进行的场所,在俄罗斯方块里就是MXN个小格子,我们可以使用一数组来表示 BYTE g_byScene[N][M] 其中,N为行数、M为每行格数,左上角为(0,0) 我们可以继续定义 #define SCENE_EMPTY 0 就是当g_byScene[y][x]==0时代表该格为空,可以放入方块,否则当方块落到(y+1,x)时就不可以继续下落 因为后面还有许些功能可能需要用到g_byScene,所以暂时只用定义0值,以后再说。 角色 角色就是玩家可控制的那个东东了,在这里就是由4块小正方体组合成的方块。 大家可以穷举出所有可能的组合 ————————————————— ————————————————— 大家还看得清楚吧,由于不能使用图片,所以只好用字符方式,一共7种方块,旋转变化后共有17种。 这些方块都可以置于4X4的空格之中,图简单,我们可以建一个4X4大小的数组,储存方块信息,由于一共有17种,所以应该 #define ELEMENT_NUM_T_MAX 17 BYTE g_byElement[ELEMENT_NUM_T_MAX][4][4] 其中每个数值应该在游戏初始化时定义,这样在游戏中我们就可以通过方块号(0-16)来索引方块了。 为了方便实现旋转,最好按照顺时针变化的顺序将只是方向不同的方块放到一起,我上面的顺序可能有点不对。 方块的下落 我们还需要定义 int g_iX,g_iY; //这是方块坐标,对g_byElement[][][]来说,这个坐标是左上角坐标 然后,写个移动判断函数,就可以简单的游戏了(方块不能转动) 向下移动的主要判断部分,没有进行边界判断,返回false为不可移动、true为可以移动 for(i=0;i<4;i++) return true; 应该没有写错吧!^^ 处理键盘的同时还应该不停的计时,保证方块每一段时间下落一格(g_iY++),直到不能下落为止。 方块的旋转 方块的旋转其实和位图旋转没有关系,只是方块号改变了而已,我刚才将方块按顺时针旋转放在一起,也就是这个原因,我们可以通过g_byElementCur++、g_byElementCur--来实现顺时针或逆时针旋转,当然要做边界的判断。 另外,由于方块旋转后,占用的位置就改变了,所以还需要判断目前位置是否可以旋转,和判断下落的方法差不多。 方块的消去 方块落定后,就应当马上刷新g_byScene[][],并做消去判断,如果某一行可以消去,还应该将该行上的所有g_byScnen[][]值向下移一行,并刷新屏幕。 |
俄罗斯方块的简单实现相关推荐
- CCF201604-2 俄罗斯方块
问题描述: 试题编号: 201604-2 试题名称: 俄罗斯方块 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏. ...
- CCF201604-2 俄罗斯方块(100分)
试题编号: 201604-2 试题名称: 俄罗斯方块 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏. 游戏在一个1 ...
- 基于java的俄罗斯方块游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
基于Java的俄罗斯方块游戏的设计与实现 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑.手机.掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛 ...
- 【java毕业设计】基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现(毕业论文+程序源码)——俄罗斯方块游戏
基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现,文章末尾 ...
- 使用JS实现俄罗斯方块游戏
使用JS实现俄罗斯方块游戏 简单的JS俄罗斯方块游戏源码 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html> <head> <m ...
- 猿创征文|JAVA 实现《俄罗斯方块升级版》游戏
前言 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑.手机.掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛,人所共知.俄罗斯方块游戏简单的基本 ...
- 学习C#从俄罗斯方块开始(一)概述
前几天和一个在读的本科生聊天,他一直在抱怨学校学习的理论知识太多,实践的机会太少.担心自己因此毕业后可能难以找到工作.我认为一个人要是想投入开发,他总是可以找到项目的.与其把自己的时间浪费在抱怨和指责 ...
- ios实例开发精品文章推荐(8.14)
1.iOS源码:俄罗斯方块 实现简单的俄罗斯方块游戏. <ignore_js_op> 下载地址:http://www.apkbus.com/android-124628-1-1.html ...
- shell 分割文本_shell教程(2):积木游戏之认识积木--重要的系统命令
前言 所有命令的用法规则 授人以渔 程序运行原理常用命令指南 显示标准输入 显示文件输入 目录/文件外部操作 文本处理套件 文本编辑器 系统 磁盘 网络 前言 第一课shell教程(1):有没有兴趣玩 ...
最新文章
- 2018.1.9 区块链论文翻译
- 再造一个爱因斯坦?GPT-3 让我看到了名人“重生”的希望
- 使用MySQL的geometry类型处理经纬度距离问题
- Linux下监控网卡流量的软件iftop
- 理解流 java 0325
- 技术实践丨列存表并发更新时的锁等待问题原理
- python简易发红包_学习python:练习5.简单红包程序
- 京东数科郑宇获评“数据挖掘领域”全球最具影响力科学家
- [转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法
- centos6.5 源码安装php7
- ImageAI (一) 使用Python快速简单实现图像内容预测 Image Prediction
- 【电脑突然识别不了外置光驱】
- html二级菜单点击淡入淡出,Web前端开发实战1:二级下拉式菜单之CSS实现
- java尾行注释有什么不好_注释不好吗?
- WRF学习笔记二:WRF-chem简单入门运行指南
- PyG搭建GCN前的准备:了解PyG中的数据格式
- python中lines是什么类型_python中write和writelines有什么区别
- 第十届蓝桥杯大赛软件类省赛 Java 大学 B组 试题H:人物相关性分析
- BP神经网络的Matlab实现——人工智能算法
- python网络渗透入门_利用Python进行Web渗透测试(四):HTTP协议基础