学了C以后

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:23:43
我学过C了,听说好多程序\游戏都是C编的,可是我就像是学会了一块砖头,想造房子是不是还很远.我现在只会用C编点数学运算.想做游戏,根本就不知道从哪下手.第一块砖放哪?我还少什么知道.讲大家指点!

你好,希望看了我接下来的话,你能有个着手点;

现在的大游戏大软件不适合用DOS下的C编,很多人因此认为DOS编程过时了,其实,DOS编程是了解硬件和系统底层的很好途径,而且DOS是WINDOWS的过去,用发展的眼光看问题,要了解一个事物就要了解这个事物的过去;

游戏分很多种,方块类,射击类,角色扮演类,格斗类,这里举个最简单的例子说明DOS游戏编程的基本要素;

记得坦克大战吗,就是红白游戏机中的操作一辆坦克保护城堡消灭敌人的那个经典游戏。这个游戏(以及世界上大多数游戏)的实现分为3部分:在屏幕上显示图形(显示你的坦克,敌人的坦克,墙壁等),接受玩家键盘指令(对游戏机来说是手柄),根据游戏规则进行逻辑判定(你击中敌人敌人就完蛋,反之你就完蛋)。我当然不打算让你一个初学者编出完整的坦克大战,但是接下来我们要了解如何做到这三条,之后相信你能很轻松地做出个游戏的雏形了;

不过要强调下你需要熟练运用指针(这个学C语言的时候应该知道很重要吧)理解如何调用中断(这个也许学的时候你没重视,补补吧),否则你很难编出游戏;

1.如何在屏幕上显示图形。在DOS下屏幕这样的硬件是可以直接由应用程序操作的,而且出于速度考虑很多游戏都是采取直接操作硬件的方式;

DOS的10H号中断是用于和显示器对话的,至于为什么是10H而不是9H或者11H,是DOS的规定,没有为什么。关于10H中断的全部用法,参见参考资料1。知道了怎么和显示器对话,下面我们来把屏幕模式设置为320*200分辨率,256色的图形模式,使用如下语句:

_AH=0;
_AL=0x13;
geninterrupt(0x10);

这些语句的意思是通过10H号中断告诉硬件,接下来需要以320*200*256的方式显示图形,让硬件做好准备;

屏幕的每一行像素的颜色逐个存储在从a0000000H开始的内存中,只要修改这里的内容就能修改屏幕内容了。那么接下来让我们在屏幕中心(160,100)显示一个白色的点:

unsigned char far*pen=(unsigned char far*)0xa