Archive for April 5th, 2005

5th April
2005
written by 张乐剑

那个变态的Turbo C++的程序终于编完了,呵呵,查了一堆资料,发现已经把编程忘得差不多了。这中间的过程还真是曲折。

周六吃完晚饭,准备开始做程序。

呵呵,工欲善其事,必先利其器,要做程序当然要有一个好的编辑和编译环境,Turbo C那么老土的编辑环境怎么能用?幸好我已经装了Visual Studio .Net 2003中文版,呵呵,界面是很爽,就是不知道对这种基于DOS的图形编程的支持程度如何。打开VS,点击新建项目,才想起来为了节省我那可怜的硬盘空间,当时安装VS的时候只装了VC#,没装VC++,那怎么行,要装上。开始腾硬盘空间,好不容易让我的C盘多了300多M,这才发现我的存有VS安装程序的移动硬盘被同事借走了,呜呜,屋漏偏逢连夜雨。幸好家里装了宽带,开始从网上down软件,这段时间就只能闲着了,看看电视,看点别的书吧。一看表,该睡觉了,还没down完呢(3.1G),得,第二天再说吧,什么事情也没干。

第二天起床,呵呵,全down完了,顺利安装。打开VS,新建了一个控制台程序。哎?怎么没有普通的控制台程序?只有一个Win32控制台程序和一个.Net控制台程序?思量半天,只能选择了Win32控制台程序,这一堆乱七八糟的VC自动加上的东西,我就编个基于DOS的小程序,至于那么复杂吗!抱着负责任的态度把主文件在TC中编译,未通过,呵呵,意料之中,把文件清空,从头开始从最简单的写起,#include <graphics.h>,在TC中画图当然要用图形库。把程序框架搭好,内容暂空,编译,咦,找不到graphics.h?怎么,不是VS说向下兼容标准C吗?求助于google,通过一番详细和彻底的搜索和阅读,最终得到一个结论:VC对标准C也有改动,并不标准,而且graphics.h是Borland公司的私有函数库,不属于ANSI C,因此在VC中肯定无法编译。

折腾了半天,白折腾了,再也没有再装个BC或者BCB的兴趣,没办法,只能单独使用编辑器进行程序的编辑,然后再用TC编译并调试运行了,真是不爽。

开始编程,程序最关键的就在于三点,第一是画图,第二是操作鼠标,第三是游戏算法。其中游戏算法不难,主要是试验一下前两点。画图很简单,一试就过,而鼠标总是有问题,根据INT33中断描述编程,能够监测到鼠标的移动和按键,但就是看不到。再次求助于google,通过一番更为详细和彻底的搜索和阅读,得到另一个结论:该方法只能用于win95、98系统,对于NT、2000、XP等基于NT内核的操作系统,无法使用,必须手工在屏幕上把鼠标的图形给画出来,然后再手工不停的监测鼠标移动,将鼠标在新的位置上画出来,并取消原先位置的鼠标图形。

又试验了半天,终于搞定。还剩下最后一个问题,游戏算法–这才想起来我还没问清楚这个游戏的规则是什么,那怎么编算法?打电话,竟然没人接,幸好记得对方曾经说过这个游戏叫“五道棋”,于是google又出来了,找到了游戏规则,也不复杂,花了一段时间,总算是编完了。

刚准备庆祝成功,对方忽然打电话过来,说刚才出去了,然后把游戏规则说了一遍,赫然发现他所说的这个“五道棋”怎么和网上查到的正规的“五道棋”的下法完全不一样,可以说是除了“棋”字相同外,没有任何一点相同,郁闷致死。。。

又按照新的游戏规则编完了程序,这下再也没有庆祝的心情了。好在发现自己编程虽然是忘得差不多了,但是拾起来也不慢,暗自窃喜。

最后,通过这次编程实践,发现三个道理:

1、以后再也不要编dos下的程序了,尤其是这种dos下还需要图形界面的程序,整个一找罪受。

2、各个C的编译器还是有很多区别的,包括对于操作系统的要求也不一样,凡是不能想当然,还需要进一步深究。

3、google是个好东西,什么都能查出来。