java 俄罗斯方块 教程_俄罗斯方块

1.游戏区:

◆游戏区可以划分成20行12列,共20*12个小方块区域。可以使用一个二维数组来表示。如int m_iMap[20][12], 其值为1表示有方块,为0表示

无方块。

◆每个图形由4个小方块构成,共有7种组合,其ID定义如下:

0         1        2        3        4            5        6

@@@@     @@      @        @@           @@        @            @

@@    @@@      @@     @@        @@@    @@@

◆当前图形:可以用一个4元素的数组来表示,如CPoint m_ptCurrent[4],其中保存方块的坐标值,如(3,5)表示该方块位于第3行第5列,不要

直接保存像素坐标值。小方块的长度和宽度的像素值(如20)可以保存在一个宏常量GRID_SIZE中。

◆下一图形的ID:可以用一个数表示,如m_iNextShapeID

◆每种图形可以进行90度翻转,7种图形衍生出19种变化。翻转状态可以用m_iRoateState记录,0表示初始状态,1、2、3分别表示旋转90度、

180度、270度后的状态。

◆左键:使当前方块向左移动一格。m_ptCurrent [i].x – 1

◆右键:使当前方块向右移动一格。m_ptCurrent [i].x + 1

◆下键:使当前方块向下移动一格。m_ptCurrent [i].y + n,        n表示难度级别

◆上键:使当前方块顺时针旋转90度。计算出4个小方块新的坐标位置m_ptCurrent[4]。

◆使当前图形自动下降:OnTimer事件中实现,使m_ptCurrent[i].y + n

◆随机产生7种图形中的一种,作为下一图形。srand(GetTickCount());        rand() % 7;

◆算法设想:开始使用上次产生的“下一图形”的形状ID生成“当前图形”m_ptCurrent 重新产生“下一图形”……

◆碰撞检测:检测当前图形m_ptCurrent的4个方块的下端和m_iMap的上端,如果有重合,说明不能再下移了。

翻转时的碰撞检测

◆计分算法:填满的行要消除掉,并增加分数。重置m_iMap[20][12]二维数组的值。

加分规则:如果一次消1行,得10分;一次消2行,得30分;一次得3行,得60分;一次得4行,得90分。一次最多只可能消4行。

◆左右移动的限制:不允许移出20*12的边界。

◆小方块的实现:使用图像(Bltbit)或者使用矩形画图(Rectangle, FillSolidRect)

◆方块颜色,背景色:m_colorBlock, m_colorGameArea, m_colorNextArea, m_colorHelpArea

◆游戏结束:m_iMap[0][i]中任何一个元素为1,表明游戏结束。

2.下一图形提示区

3.帮助说明区

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* *游戏说明:此为我边学边做的,但有很多的BUG,参照了我从网上下载的游戏方块设计 * 一、游戏的BUG * 1、提示分数那地方,玩过游戏后,长了分数后,再玩时,后面的数据没清掉 * 2、重级BUG:当在游戏过程中,切换了一个旁边的后,再切换回来后, * 刚才的方块不显了,而且游戏区的数据也不见了。 * 3、我在刚开始做时,没有要窗口上的关闭,现在想要,但不知道怎么加。 * 4、如果用鼠标点了菜单后,再回到游戏区,数据方块又不见了。 * * 二、此游戏没有版权,可以乱改,反正我也是在学习,谢谢那些无私的网友们,不过 * 请你们下次提交上来的源程序有个说明好不好,看得我头都大了,流程也没得, * 设计说明也没有,完全看源代码,很费力的!谢谢对新人的支持。 * * 三、如果那位高手愿意,请收我为徒弟吧,我学过c/c++、数据结构、编译原理、操作系统等( * 计算机专业的),但对于VC这个大东西来说,,好像一点用也没有,现在在边学边做,门不好入呀! * * 四、请高手们帮帮我,请给分析一下问题在哪,谢谢,我对VC还不是很清楚,在文件目录下 * 有设计时的流程。设计说明我没有写,我是针对每一个流程模块来设计和编码的。 * * 五、在游戏中,我加了很多注释,以方便理解,主要的代码都在CChileView.h、CChileView.CPP中 * 我想的是,如果新人也想看看的话,可能理解起来快点。不过有点乱,编码中有些冗余。没来 * 得及改。如果你改好了,请给我一份,我想学学。谢谢! * *================================================================================================ * *编译环境: * 1、操作系统 :WindowsXP SP2 * 2、编译器 :Visual C++ 8.0 * *包含文件:所有源文件都在此。 * * *编译参考:此目录下有一个文件名为:Russia.sln的文件,用Visual C++ 8.0 打开,直接就可编译 * 此游戏是我编译通过后,才压缩的。如果编译不了,请联系我,下面有我的QQ和email。 * * *其它事宜:如果还有什么问题我没有提到的,请联系我,愿向你学习。 * *================================================================================================ * *Version :BUG Edtion * *Aauthor :lin_liu60 * *E-mail :lin_liu60@163.com * *QQ :994165 (网名:刘羽峰) * *Date :2006/9/27 * */

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值