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 语句的各个分支加上了判断语句,