background image

man.x += man.xv;

/*水平方向按 x 轴的速度运动*/

man.y += man.yv;

/*垂直方向按 y 轴的速度运动*/

运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让它下一刻的速度等于

现在的速度的相反数.最后打印出这个笑脸:

gotoxy(man.x, man.y);
printf("%c\b", 2);

 /*输出 ASCII 码值为 2 的"笑脸"字符*/

怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能让我们来控制它运动

呢?答案是肯定的,让我们继续往下学吧!

3.

 交互的实现——让我们来控制笑脸运动
这个程序的主要功能是接受按键,如果接收的是方向键,就让笑脸顺着方向移动,如果接收

的是 ESC 键就退出程序,其他按键则忽略处理.接受按键我们用以下两条语句:

while (bioskey(1) == 0);

/*等待按键*/

key = bioskey(0);

/*把接收的按键的键盘码赋给变量 key*/

然后用 switch 语句来判断按键以及执行相关操作,如下:
switch (key) /*对变量 key 的值进行判断*/
{

case UP:    

/*如果按的是向上键*/

       … break;  /*让物体向上运动,并退出 switch*/

case DOWN: 

/*如果按的是向下键*/

    … break;  /*让物体向下运动,并退出 switch*/
case LEFT:  

/*向左键*/

 … break;

/*向左运动*/

case RIGHT: 

/*向右键*/

… break;

/*向右运动*/

default: 

 … break;

/*其他按键则忽略处理*/

}
怎么样,是不是有了玩游戏的感觉了?不过这个程序没有什么目的,也没有什么判断胜负的

条件.下面我们就利用这个能控制它移动的笑脸来做一个更有趣的游戏吧! 

4. 在迷宫中探索

小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜欢玩,还常到一些书上

找迷宫玩呢。好的,现在我们用 C 语言来编个迷宫的游戏,重温一下童年的乐趣。

首先,我们定义一个二维数组 map,用它来保存迷宫的地图,其中 map[x][y] == 

'#'表示在(x,y)坐标上的点是墙壁。DrawMap 函数在屏幕上输出迷宫的地图和一些欢迎信
息。

在 main 函数里,我们定义了"小人"man 的坐标和"目的地"des 的坐标。在游戏循环中,

我们增加了一些用来判断胜负的语句: 

if (man.x == des.x && man.y == des.y) /*如果人的坐标等于目的地的坐标*

gotoxy(35, 3); 

    printf("Ok! You win!"); 

/*输出胜利信息*/ 


在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不是有"墙壁",如果有

的话,就不能往前移动了。好的,我们在判断按键的 switch 语句的各个分支加上了判断语句,