我最初版的俄罗斯方块,完全由C语言编写,旨在实现俄罗斯方块的方块随机产生,能旋转方块。在处理新方块和地图的关系,不越界,能移动到地图内的任何地方。能消掉已经搭建完的一行,能计算分数。(用了360行代码)
目前的版本是无法实现自由下落的,这个问题还是解决不掉的。因为在获取方向的时候,是需要读取缓存区的,如果缓存区里没有东西,它是会一直等待的。
解决这个问题的方法我已经想好了,两种办法:
1、利用lua语言的非抢占式多线程,对获取缓存区的时间设定一个定时器,超过了就跳出对缓存区读取的等待。
2、C的多线程编程
另外,需要给俄罗斯方块加一个排行榜,所以文件的读写学完之后,会再次改版。
还需要整理现有的代码,尽量把每个函数的关联度降低。
降低使用全局变量。
采用多文件编程的方式,将源代码拆开。
用Makefile去编译。
————————————————————-
2018.04.25
发现大部分函数的参数相似,而且很多,现在整合到一个结构体中,这样只要创建一个结构体实例,然后用结构体指针传递,不仅美观,还省事儿。
————————————————————-
2018.04.26
结构体的改造已经完成,现在打算将排行榜扩展到前10名,用二叉树的方式实现,这是一种跟麻烦的过程,好在可以展现一下刚学的二叉树。
————————————————————-
2018.05.02
给整个程序加注释。
————————————————————-
2018.05.02
把所有的头文件都整理成一个头文件,包含所有的声明。
————————————————————-
2018.05.12
通过子进程和父进程读写同一个文件的方式实现了自由下落。
由于父进程的快速刷新地图,导致整个地图看起来就是在闪屏,
现在需要采用移动光标的方式来显示地图。
自由下落版本中,如果按了向下键就会卡死,是一个BUG呢!
————————————————————-
2018.05.17
已经想到了解决的办法。
不能每次运行都打印一次地图,改变打印方式。
初始化打印一次地图之后,将光标向上移动到最初的位置,
将上一次运行结束的地图和这次比较,打印不一样的地方。
可以通过格式化printf的输出来实现,是肯定可以实现的。
这个俄罗斯方块的项目就到此为止了。附上所有的源码!