第八节课

复习

  • 字符和字符串的区别
  • “1234” 这是什么类型的?
  • 不需要回车,不带回显的用于读取字符的函数是?

小人到哪了(利用xy确定小人的坐标)

我们学习也有一段时间了,大家应该有读代码的能力

今天,我们先来看一段代码

#include <stdio.h>
#include <stdlib.h>
#include "getch.h"
int main()
{
    char map[50][50] = {"                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              ",
                        "                              "};
    map[0][0] = 'O';
    int i;
    int x, y;
    x = y = 0;
    char ch = '\0';
    while (1)
    {
        system("clear");
        for (i = 0; i < 10; i++)
            puts(map[i]);

        ch = getch();
        if (ch == 'w')
        {
            map[x][y] = ' ';
            x--;
            map[x][y] = 'O';
        }
        if (ch == 's')
        {
            map[x][y] = ' ';
            x++;
            map[x][y] = 'O';
        }
        if (ch == 'a')
        {
            map[x][y] = ' ';
            y--;
            map[x][y] = 'O';
        }
        if (ch == 'd')
        {
            map[x][y] = ' ';
            y++;
            map[x][y] = 'O';
        }
        if (ch == 'q')
            break;
    }

    return 0;
}

在上面这段代码中,我们使用了 x y 两个变量来储存小人O 当前所在的位置

并且我们使用了ch = getch(); 这样的一条语句来读入我们的键盘敲击

得到键盘输入以后,就可以根据输入的数值来确定用户想要往上下左右哪个方位

  • x 用于表示行
  • y 用于表示列

那么各个方位就如下面的表格所示

x-1 y-1 x-1 y x-1 y+1
x y-1 x y x y+1
x+1 y-1 x+1 y x+1 y+1

当我们知道用户想要小人往上走的时候

我们就可以把当前空间变成”空“,接着把x-1 y所在的空间替换成小人O

这就代表着小人从当前位置”转移“到了正上方

其他方向同理

接下来我们想要加上墙壁做迷宫的话,我们就可以增加一个判断

如果想要走的那一步是墙壁的话就不能移动


发表评论

电子邮件地址不会被公开。 必填项已用*标注