主题:俄罗斯方块3D&浅谈游戏编程架构
呵呵,虽然一直想写大的游戏,可始终是力不从心。所以我还是从小游戏开始。花了两天时间写了一个最经典的,也是很多很多人都曾经做过的俄罗斯方块。虽然只是一个小游戏,但是我想到了很多。下面谈谈所感所悟,不足之处,请版主王子以及wwjjw大师指正。
这一会,我把整个程序分成了逻辑层,数据结构层,系统层,用互交互层和图形层几大块。我首先放开其它的不管,先做逻辑层,而且保证逻辑层的独立性,也就是说,逻辑层不管其它的东西,放到哪都可以用。
这样一来,整个程序就十分的清晰明了了。下载包里有我的源代码。在很多这类游戏里面,都用到了大量的分支判断语句,包括那些经典的俄罗斯方块算法。可是在我的程序里,你却看不到大串的分支判断语句(下载包里有源代码)。为什么呢?因为我把下落的方块定义为一个类,而静止的方块定义为另一个类。当方块掉落到方块堆里时,可能会发生“坍塌”,这也是这个游戏中最难的解决的一个问题,而我则把“坍塌”的方块加入到下落的方块中,这样就问题就自然解决了!这样很好的做到了代码重用,同时也避免了复杂的算法!我想,这就是面向对象编程的好处吧。
我这个小游戏叫“俄罗斯方块3D”,你一定奇怪,为什么不叫做“3D俄罗斯方块”呢?人的思维总是这样,总是首先想到事物的外表,当我们有写游戏的冲动时,我们脑子里总是充满了游戏的画面,玩游戏的感觉吧。可是编程却不应该从表面做起,编程就是把一个问题用程序语言描述给电脑。所以,编程应当从逻辑做起,程序的逻辑层就好像一栋大楼的地基,大楼的栋梁,只有坚固的逻辑层,才能建立起健壮的程序!
而图形层,是表现逻辑层的。图形层用什么来实现,逻辑层不管。我用D3D来实现的,用别的一样可以。
呵呵,点点感悟,望指正。
这一会,我把整个程序分成了逻辑层,数据结构层,系统层,用互交互层和图形层几大块。我首先放开其它的不管,先做逻辑层,而且保证逻辑层的独立性,也就是说,逻辑层不管其它的东西,放到哪都可以用。
这样一来,整个程序就十分的清晰明了了。下载包里有我的源代码。在很多这类游戏里面,都用到了大量的分支判断语句,包括那些经典的俄罗斯方块算法。可是在我的程序里,你却看不到大串的分支判断语句(下载包里有源代码)。为什么呢?因为我把下落的方块定义为一个类,而静止的方块定义为另一个类。当方块掉落到方块堆里时,可能会发生“坍塌”,这也是这个游戏中最难的解决的一个问题,而我则把“坍塌”的方块加入到下落的方块中,这样就问题就自然解决了!这样很好的做到了代码重用,同时也避免了复杂的算法!我想,这就是面向对象编程的好处吧。
我这个小游戏叫“俄罗斯方块3D”,你一定奇怪,为什么不叫做“3D俄罗斯方块”呢?人的思维总是这样,总是首先想到事物的外表,当我们有写游戏的冲动时,我们脑子里总是充满了游戏的画面,玩游戏的感觉吧。可是编程却不应该从表面做起,编程就是把一个问题用程序语言描述给电脑。所以,编程应当从逻辑做起,程序的逻辑层就好像一栋大楼的地基,大楼的栋梁,只有坚固的逻辑层,才能建立起健壮的程序!
而图形层,是表现逻辑层的。图形层用什么来实现,逻辑层不管。我用D3D来实现的,用别的一样可以。
呵呵,点点感悟,望指正。