我的第一个作品(编程环境:Code::Blocks + wxWidgets)

 前一阵子上CSDN学生大本营时看到王富涛同学做了一个俄罗斯方块(请见http://student.csdn.net/space.php?uid=43658&do=blog&id=8263),
想着自己也学c++有一段时间了,什么东西都没写出来.于是有了想动工自己写一个的念头,而且上网搜索时发现,今年是俄罗斯方块游戏诞生25周年。自己做一个出来,多有意义!目前在看<<白话c++>>2008版网上教程的前几章,就用code::blocks + wxWidgets做吧.

想写,就动工.看了一下王富涛的思路,大概知道他参照了这里的画方块方法:[url]http://www.rupeng.com/forum/thread-2533-1-1-uid2704.html[/url]  OK,看了大概知道怎么画了.还有看了游戏区(我称它为地图),方块都在这个区域移动,用一个二围数组表示它.

 

最初,看明白的大概就这么多.剩下的由自己想着来怎么实现好了.于是开始构思,晚上做梦脑袋好像也在想怎么实现.我想到的有很多需要实现,例如:对于方块,我第一时间想到的是将方块写成一个类,这样控制起来比较方便,只是初想,不一定可以实现.地图如何表示,坐标如何控制?我想实现的有:可以预览下一个出现的方块,每种方块要有自己的颜色.方块落到下部不能动时那个方块颜色还会在那里显示.可以升级和显示分数.等等……一下子全涌到脑子里,我真的不知道如何将它们组织在一起。还是边学边卖吧,将最基本的功能实现再说。

因为都是想到那个功能就临时加上去的,各部分基本都是自己想,没去偷看别人是怎么实现,例如如何让已落下的方块显示出跟它落下之前一样的形状和颜色等等。就算下载一个工程也看不懂,代码一大堆。一些要用到的功能,不会,主要去翻看《wxWidgets跨平台GUI编程》和wxWidgets官方文档,虽然官方文档一大堆英文,但是基本上是看函数原型和参数名字,大概去猜实在不行就用灵格斯屏幕取词来帮助。反正就是进行多次尝试,还有那个方块如何画比较美观,现在大家看到的版本是我经过多次尝试,觉得效果算很不错的。是用设备描述表来画的不是贴图。

大概介绍一下:
游戏过程中画面不会出现闪烁,因为是用二次缓冲画的。wxWidgets的wxBufferPaintDC类就可提供此功能。

游戏背景是后来加上去的,南老师的教程中多次出现“志玲”,于是找了一张“志玲”的图片来作为游戏背景,截图见下。

按键说明:
方向键上,或K键:方块逆时针旋转
J键:方块顺时针旋转
方向键左,或A键:方块左移
方向键右,或D键:方向右移
方向键下,或S键:方块下移
字母N键:方块急速下落,一按这个键方块就到达底部
字母P键:暂停和恢复游戏
字母T键:当游戏GAME OVER后重新开始游戏,分数将清零

同时消去两行,三行,四行会有不同的额外分数奖励。

到达最高级数后,方块下落速度加快,如果玩家如果能坚持一定秒数(例如设定为15秒),则自动降一级.然后达到一定分数又自动升级,如此循环.界面上有剩余秒数的提示.


 

 相关文章:写个俄罗斯方块需要什么样的知识 之我认为
http://student.csdn.net/space.php?uid=116706&do=blog&id=13379

你可能感兴趣的:(我的第一个作品(编程环境:Code::Blocks + wxWidgets))