使用可移动角色在C中制作带边框的框

时间:2015-04-10 05:52:46

标签: c

我有几个问题,我正在通过Zed Shaw Book学习C,我想我会稍微休息一下,试着把迄今为止学到的东西都考虑进去。但后来我卡住了。

第一个问题是创建一个空框。我似乎无法做到这一点。我可以创建一个框,缺少底部部分,但是它被'*'填充,如果我只是'',那么c编译器声明:create_border.c:12:14: error: expected expression

第二个问题,我不知道如何连接到键盘,这样当我向上,向下,向左,向右按下一个字符@时,在它的边缘移动并停止

到目前为止,我所拥有的只是:

#include <stdio.h>

#define MAX_Y 6
#define MAX_X 6

void print_board(char board[MAX_Y][MAX_X]);

int main(int argc, char *argv[]) {

    char exampleBoard[MAX_Y][MAX_X] = {
        {'x','-','-','-','-','x'},
        {'|','*','*','*','*','|'},
        {'|','*','*','*','*','|'},
        {'|','*','*','*','*','|'},
        {'|','*','*','*','*','|'},
        {'x','-','-','-','-','x'}
    };

    print_board(exampleBoard);

    return 0;
}

void print_board(char board[MAX_Y][MAX_X]) {

    int row = 0;
    int col = 0;

    for(row = 0; row < MAX_Y; row++) {
        for(col = 0; col < MAX_X; col++) {
            printf("%c", board[row][col]);
        }

        printf("\n");
    }

    printf("\n\n");
}

所有这些打印出来的是:

x----x
|****|
|****|
|****|
|****|

所以我所期待的是:

  • 一个空白框,框中没有'*'@个字符。
  • 能够移动@并在到达边界时停止。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

在终端中,“空案例”是空格字符。您可以使用' '代替''来撰写。

然后,为了阅读键盘,您可以直接从终端使用read系统调用。但是,终端的默认配置会强制您在每个键之间按enter以使您的阅读工作正常。

注意:您可以使用像ncurses这样的库来简化这种ASCII编程。