回 帖 发 新 帖 刷新版面

主题:俄罗斯方块3D(程序+源码)&浅谈游戏编程架构

[b]我只不过把我作的东西发出来给大家看,猪头王子却说“你作东西就是为了炫耀”我永远不会忘记这句话的,永远!!!既然说我是炫耀,“给人以挫败感”那我以后再也不会来这PFAN了!!!这个贴子希望飞燕删除了吧!!![/b]

回复列表 (共29个回复)

沙发

试玩了一下。
可能因为是板载显卡,提示说“不支持3D加速功能”。
处理方块变换时有些小问题:1、当下落的方块在边沿时有可能无法变换。2、对于正方形方块,执行变换时其位置会发生变化。

代码还没来得及看,下班再说吧~

板凳

不错

3 楼

我急急忙忙写了,自己都没怎么玩,哎,想不到问题还真多啊。

4 楼

修改了一点东西
http://upload.programfan.com/upfile/200709291644499.rar

5 楼

非常感谢kaikai大哥,不愧是老手,把程序中的毛病一下子改正了!

6 楼

我没改毛病啊...- -

7 楼

up

8 楼

以前朋友找工作的时候托我做过一个,很简陋的俄罗斯方块。
我的思路是:
只有下落的方块才算“方块”,方块落到底则与原来已经存在的若干不动的格子构成新的格子,然后产生新的方块。这样整个游戏中就只有一个方块。
定义一个类表示下落的方块;定义一个类表示容器,它容纳所有方块下落后变成的“格子”,并处理加分和GameOver两种事件。
我的模块划分很简单:游戏逻辑(平台无关代码)、窗口和用户输入(Windows系统相关)、图形界面。

可能最近看Java多一点吧,逐渐喜欢写一些“接口”了。
尽量将每一个模块写成平台无关的。即使某个模块必须与平台相关,则按以下步骤解决:
1、定义一个抽象类A来表示模块的功能,且A类与平台无关。
2、从抽象类A继承出新的类B,在B类里面写平台相关的代码。
3、定义一个工厂类C,该类有一个成员函数,名字可以是createXXX,用于在堆中创建一个B类的对象,但返回A类的指针。如果把C类的声明和实现代码分别放在头文件和代码文件中的话,可以使声明部分是平台无关的,仅在实现代码处与平台相关。
这样一来,在模块外部,只需要包含A类和C类的声明,就可以使用这个模块的全部功能,而A类和C类的声明都是平台无关的,这样就可以把平台相关的代码完全限制在一个单独的模块内。
如果模块提供的接口较多,只用一个类表示有困难,则可以建立多个平台无关的抽象类和对应的平台相关实现类,而工厂类只要有一个就可以了。

9 楼

开始写程序时要多看看其它人的程序.

首次设计时不要搞得太复杂,能用就好.把整个程序要实现的功能搞清楚后再做
设计,按最小集->全功能->精化结构->添加功能,这样的模型来开发.

10 楼

directx3d。。。。我一看数学就头大。。。。-_-
记得当时拿as写俄罗斯方块写了三遍。。。还是很乱。。。-_-
俺对游戏开发也很感兴趣,支持下楼主

我来回复

您尚未登录,请登录后再回复。点此登录或注册