3D小游戏——3D版俄罗斯方块

【编者前言】我没有亲手编过2D的俄罗斯方块,但这次学了点DirectX9的基础,就决定尝试一下3D的俄罗斯方块。这个玩起来难度还是挺大的,既可以锻炼空间想象能力,还可以锻炼操作能力。

【软件界面】

【编程工具】VS2008, DX9(2009March sdk)

【开发日志】

1.完成主体框架的设计 15:04 2012-07-22
  内容包括:程序整个的运行流程及简单的源文件目录结构。

2.实现开始界面的设计 15:42 2012-07-22
  内容包括:绘制程序开始界面,提供相应的按钮选择以进入下一步。

21:29 2012-07-23 直接绘制并测试鼠标位置是否在范围内,有问题,改学gui按钮。

22:49 2012-07-23 最终还是用简单的鼠标位置判断来实现“按钮”,只追求简易把。

3.游戏运行框架的设计 10:37 2012-07-26
  内容包括:编写游戏函数的框架,并设计方块的数据结构和显示一个方块。

11:41 2012-07-26 先只记录方块组的三维坐标组,再用D3DXCreateBox绘制方块。

4.完善方块组类,并完成摄像头视角的调整。实现方块的定时降落和全局方块的地图数据存储。

19:55 2012-07-27 设计一个方块组。
2:44 2012-07-29  设计用鼠标左右键控制摄像头切换视角。
22:12 2012-07-30 实现方块的定时降落和全局方块的地图数据存储接口。

5.完成方块的旋转控制,绘制方块纹理和地板,并完善方块类对地面及其它方块的判断。 19:47 2012-08-01

0:16 2012-08-02 完成方块的旋转控制。
2:26 2012-08-02 绘制方块纹理。
2:46 2012-08-02 绘制地板面。
4:20 2012-08-02 完善方块类对地面及其它方块的判断。

*5.5 修改方块中心为int型(即相对坐标)。********最终决定还是用float,但修改了CheckSquareGroup函数的问题,
添加了计算时的浮点误差限制。

6.完善方块的变换的出界判断,并完成方块地图数据的存储和绘制。修改地面的显示方式(要加方格,以方便玩家对齐)。
18:46 2012-08-02

19:44 2012-08-02 完善方块的变换的出界判断,并完成方块地图数据的存储。
21:36 2012-08-02 完成方块地图数据的绘制。
21:45 2012-08-03 地面的显示方式要到用户体验之后再做修改,目前技术尚未能做方格线的绘制,到时在想办法。

7.完成一层方块填满的判断算法,构思消除一层方块的效果的编程实现。 23:21 2012-08-03
1:45 2012-08-04 修复GetIndex的一个范围限制的bug。
4:57 2012-08-04 完成一层方块填满的判断算法。
5:28 2012-08-04 消层的时候,可让边界的方块进行向四周的自由落体或者粒子扩散。(这个在之后的界面优化时做)

8.完成地图数据消层的算法,实现简单的消层。 5:45 2012-08-04
21:15 2012-08-04 完成消层算法。

9.完善鼠标控制视角的切换(感觉现在视角不好控制),开始创建游戏积分制度和完成游戏结束的判断。 21:34 2012-08-040:30 2012-08-15
1:15 2012-08-06 完善视角切换。
3:34 2012-08-06 完成游戏积分制度和完成游戏结束的判断。

10.完成游戏的音效及方块在地面的阴影绘制。 22:13 2012-08-06
23:14 2012-08-07 完成游戏音效:旋转方块音效 和 游戏背景音乐。
0:23 2012-08-08 完成阴影绘制。

11.完成消层的效果及英雄榜的功能。 1:03 2012-08-08
7:05 2012-08-08 完成消层的特效及音频类的简单封装。
5:45 2012-08-12 完成编写英雄榜类,但绘制英雄榜只实现简单显示。

12.完善英雄榜及修改小地方(阴影绘制到方块上、暂停、下落)。 21:46 2012-08-13
1:33 2012-08-14 完善英雄榜(不能输入玩家名称,因为dx的编辑框难实现,先以时间作为名称)。
4:41 2012-08-14 修改小地方(阴影绘制到方块上、暂停、下落)。

13.修改小问题及可玩性,添加方块生成机制。  0:51 2012-08-15
2:01 2012-08-15 修改小问题,修改方块绘制时方块的纹理坐标。
11:07 2012-08-17 修改CScore扩充为CGame类,完成方块类型生成的封装。
21:43 2012-08-17 去掉注释不用的代码。修改wsprintf溢出的问题(引起了Run-Time Check Failure #2错误,果然问题一百度就找到原因了,将字符数组变大些)。修改CSquareGroup::InShadow的一个bug(实质是x写成z了)。
22:14 2012-08-17 Release的时候发现开始游戏时光线太暗了,原因是Material的Ambient太低了。

14.继续试玩,修改bug,准备发布。 10:03 2012-08-29
10:12 2012-08-29 修改清层函数ClearFloors中清零的问题。

[MAX_INT]想法积累
1.将地面变成立体的,并显示方块在竖直方向上的阴影。×√
2.消层后的特效:方块粉碎或者爆炸,或者四散(自由落体)。√
3.添加音频效果、动画效果。√×
4.修改:阴影绘制时要绘制方块影子在方块上的时候;添加暂停功能和方块下落到底的按键。√

【源代码下载】

http://download.csdn.net/detail/adfansong/4533780

【软件下载】

Tetris3D运行程序

如果运行不了,说缺少DX的dll的话,点击这里(把这里面的dll拷到程序目录 或者 系统system32目录)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值