Qt版连连看之极速连连看:设计
【源码及安装包下载地址】http://code.google.com/p/speedlink/downloads/list
【项目展示及相关截图在最后】
术语约定:
面板:连连看中用于拜访小图案的区域,在内部逻辑时指其表现所依据的二维数组
图块:连连看游戏中单个的小图案
地图:将图块摆放成一定的形状,这时候的面板数据称为地图
死局:游戏中,图块未被全部清除,出现没有一对图案的情况
连击:一定时间内消除多对图块,这种情况成为“连击”
项目起因:
金山KK举行游戏开发比赛,我以个人名义参加比赛。考虑到一个人开发游戏开发、美工、音效等方面人力不足,决定做一个小游戏。访问了各大游戏网站之后,发现连连看虽然是一个小游戏,却在益智类小游戏中稳居前五,如果能对这么一款游戏进行改进,应该受众也不少,于是决定开发一个连连看(自己之前已经有一个demo版也是原因之一)。
PS.虽然最终以无缘任何奖项告终,不过发现自己的游戏居然被某些网站不经允许就收录感觉也不错哈,代码量和质都有了一定的提升,对自己锻炼还是有的。
极速连连看主要功能特色:
1.基本的连连看功能(选块连线,提示,混乱等)
2.设有5个关卡,每个关卡图块摆放成一定的图案,并有不同的背景音乐
3.共有普通模式、挑战模式、练习模式(单关模式)三个模式。
普通模式下给出一定时限,每消除一对图块都会增加时间;
挑战模式下给出一定时限,消除图块不增加时间
练习模式可以单独选择5个关卡中的一个练习,这时候可以选择以普通/挑战模式进行该关卡
4.具备英雄榜功能,可对普通模式及挑战模式的成绩进行记录(仅记录前十五)
5.具备换肤功能,可以更改界面色调搭配
6.连击奖励
7.上帝之手(进入死局时可以自动进入上帝模式,直接消除相同的图块)
开发概要:
鉴于我的Qt借助的GCC系编译器在Windows下编译比较缓慢,调试也比较麻烦,大部分工作尽量在Linux下进行。
为了防止工作散乱发生致命改动,使用CVS进行版本管理
由于这个项目自己开发,而且中间有些东西还需要先学现卖,自己的时间又比较分散,所以在对程序大致阶段性分工之后,每阶段采取了 demo验证-> 小程序 ->测试 ->集成 的流程进行开发,每过一小段时间都会有成品出现,比较容易有成就感。总体上个人的工作可以分成这么几个阶段:
(这些都是从记忆以及以前的便贴中找出来的)
1.连连看功能调研,这阶段包括自己玩了网上大部分能找到的连连看总结其优缺点,并从周围人那里吸取了一些建议
2.决定功能及框架设计,这阶段我根据上一阶段的成果以及自己的实际能力
3.设计核心连连看算法并进行测试,同时网上搜罗了大批连连看图案资源
4.完成一个图形类,集成进核心算法,能够接受鼠标点击、连线判断(其实是一个继承自QLabel的类)
5.进行主界面设计,将之前设计的图形类集成进主界面(利用Qt的特性,直接就可以把上面那个超级Label集成进去)
6.增加主界面类与图形类的通讯接口,在主界面中完善时间控制、与图形类的功能接合等工作
7.增加英雄榜功能
8.测试基本功能无碍,增加界面色调切换功能,并花了一段时间研究配色
9.使用简单的地图测试连连看性能
10.设计了一个地图编辑器进行地图的方便编辑(直接用鼠标拖点就可以编辑地图了)
11.设计了一个图块合成器用于批量处理图块资源
12.改变地图的难度系数,尝试将游戏难度设计成梯度式的
13.加入音效表现(包括网上搜音效,用CEP编辑音效啊,等等等等)
14.第一阶段成果发布,由于是Qt的,这里包括了静态编译Qt以及最终的压缩、制作安装包、编写说明书等内容……
15.收到第一阶段反馈,制定改进方案,并决定下一版本添加的功能
16.修正第一阶段bug
17.研究某些用户反馈,发现有一个需求需要做的改动比较大,于是对受影响的主程序以及地图编辑器进行了彻底的改造以杜绝遗患
18.更改了一个新的图块资源美化方法,修改了地图
19.增加背景音效,由于音效同步出现问题,最终采取了基本音效保持原样、背景音乐以及过关音效使用Windows MCI实现的方法
20.增加了练习模式(由于前期设计还凑合,虽然增加了很多东西也没有很大难度)
21.继续改进各种bug、调整游戏难度等
22.发布极速连连看2.0版本
更多内容待续……
项目展示截图