欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言如何重写俄罗斯方块

程序员文章站 2022-07-01 22:57:27
以前用C语言写过一个俄罗斯方块,但是那个程序我写完之后就再也没有看过,源码实在太糟糕,个人都看不下去了。我还把这份源码发在了网上,真不知道自己是怎么想的。可能是第一次写出一个一直想...
以前用C语言写过一个俄罗斯方块,但是那个程序我写完之后就再也没有看过,源码实在太糟糕,个人都看不下去了。我还把这份源码发在了网上,真不知道自己是怎么想的。可能是第一次写出一个一直想写的程序,很兴奋吧。相信很多学习C语言的人都有写过俄罗斯方块的经历。

这次我重新打算将俄罗斯重新写一遍,一来是觉得自己编程功力相对上提升了一点,于是想重新一份更好的源码;二来是学了direct X游戏编程的一些内容,想写一份DX下的俄罗斯方块,而不是GDI下的。你知道GDI的性能对于游戏来说还是不够用的。

1>. 数据与动画分离

这次主要的设计思想是将程序数据与动画分离。上一版的程序我是将数据处理和动画杂合在一起的。

比如Move_left函数,实现向左移动。不止会更新数据,向左移动的动画代码也在这个函数中。这样做当时觉得挺方便的,但是要修改起来挺麻烦。而这次主要是为了移植到DX中去,使用DX的双缓冲,将数据代码与动画代码分离显得尤为重要。

这样的话,数据处理是数据处理,动画处理是动画处理,互不干扰。DX代码只要拿处理后的数据去绘制动画就OK了。

2>.模块功能

上一个版本中有比较多的重复代码,所以在这个版本中我将一些处理数据的逻辑代码中相同的部分作成了一个公用的模块,只要传递参数进去,再检测返回值,就能使用。这样做比较方便,而且主要的是如果这个模块有什么bug,不会到好几个函数中去寻找了。

这是不是降低代码的耦合?

3>.边开发,边修复bug

从一开始写程序的时候我们就应该将算法设计好。不然边写边想边写很容易出bug。

我就是这样一个典型的例子,喜欢边写边想边改。于是bug一个接着一个来,好在代码勉勉强强能够运行了。

不过估计其中还有不少的bug,好吧,遇到再改。不过怎样测试代码也是一个需要掌握的内容。

现在比以前强点了,以前只会使用printf,现在还会有个编译器。

4>.关于头文件

关于C语言中头文件的包含,在写这个数独软件之前我一直是懵的。现在知道了头文件中怎么声明函数,然后再去C文件中实现具体的函数。还知道了extern关键字的用法。

总结出一点:编程是个实践活,实践出真知。

写在最后:

这篇文章主要是记录自己这次使用C语言写俄罗斯方块程序的经历和一些想法。这几天事比较多了,原本计划2天写完的,花了3天时间。接下来的几天更加忙碌了,要准备期末考试,还要写一个php爬虫的练习,也要将这个俄罗斯方块程序转到DX下去,还有写博客。挺多事的,不过还好。

期待DX下的俄罗斯方块吧,我会加入更多有趣的东西的。到时候会开放源代码,对我自己也是一个考验。