于熙顿 发表于 2023-4-11 13:55:08

dev c++怎么导入外部库

在网上找了一份贪吃蛇的代码,复制完代码后编译运行一直报这个错误,在网上搜了半天也没明白得怎么整
#include "ncurses.h"
#include <stdlib.h>
#include <unistd.h>
#include <time.h>

#define MAX_LEN 100         // 贪吃蛇最大长度
#define INIT_LEN 5          // 贪吃蛇初始长度
#define ROWS 20             // 地图行数
#define COLS 40             // 地图列数
#define SNAKE_CHAR 'O'      // 贪吃蛇字符
#define FRUIT_CHAR 'x'      // 食物字符

struct snake {
    int len;                // 贪吃蛇长度
    int row, col;   // 贪吃蛇各节点的位置
    int direction;          // 贪吃蛇当前行进方向
};

struct fruit {
    int row, col;
};

void draw_map();
void draw_snake(struct snake *s);
void draw_fruit(struct fruit *f);
void move_snake(struct snake *s, struct fruit *f);
void generate_fruit(struct snake *s, struct fruit *f);
void initialize_snake(struct snake *s);

int main() {
    struct snake s;
    struct fruit f;

    srand(time(NULL));      // 初始化随机数生成器

    initscr();            // 初始化 ncurses
    noecho();               // 输入字符不回显
    cbreak();               // 输入字符无需回车键
    timeout(100);         // 100ms 后超时 getch()
    keypad(stdscr, TRUE);   // 开启键盘支持

    draw_map();             // 绘制地图
    initialize_snake(&s);   // 初始化贪吃蛇
    generate_fruit(&s, &f); // 随机生成食物

    while (1) {
      draw_snake(&s);   // 绘制贪吃蛇
      draw_fruit(&f);   // 绘制食物
      move_snake(&s, &f); // 移动贪吃蛇
      refresh();          // 刷新屏幕
    }

    endwin();               // 关闭 ncurses

    return 0;
}

// 绘制地图
void draw_map() {
    int i, j;

    clear();

    for (i = 0; i < ROWS; i++) {
      for (j = 0; j < COLS; j++) {
            if(i == 0 || j == 0 || i == ROWS-1 || j == COLS-1) {
                mvprintw(i, j, "#");
            }
      }
    }
}

// 初始化贪吃蛇
void initialize_snake(struct snake *s) {
    int i;

    s->len = INIT_LEN;
    for (i = 0; i < s->len; i++) {
      s->row = ROWS/2;
      s->col = COLS/2 - i;
    }
    s->direction = KEY_RIGHT;
}

// 绘制贪吃蛇
void draw_snake(struct snake *s) {
    int i;

    for (i = 0; i < s->len; i++) {
      mvprintw(s->row, s->col, "%c", SNAKE_CHAR);
    }
}

// 绘制食物
void draw_fruit(struct fruit *f) {
    mvprintw(f->row, f->col, "%c", FRUIT_CHAR);
}

// 移动贪吃蛇
void move_snake(struct snake *s, struct fruit *f) {
    int i;
    int ch = getch();

    switch (ch) {
      case KEY_UP:
      case KEY_DOWN:
      case KEY_LEFT:
      case KEY_RIGHT:
            s->direction = ch;
            break;
    }

    for (i = s->len - 1; i > 0; i--) {
      s->row = s->row;
      s->col = s->col;
    }

    switch (s->direction) {
      case KEY_UP:
            s->row --;
            break;
      case KEY_DOWN:
            s->row ++;
            break;
      case KEY_LEFT:
            s->col --;
            break;
      case KEY_RIGHT:
            s->col ++;
            break;
    }

    if (s->row == 0 || s->row == ROWS-1
      || s->col == 0 || s->col == COLS-1) {
      clear();
      mvprintw(ROWS/2, COLS/2-5, "Game Over");
      refresh();
      sleep(2);
      endwin();
      exit(0);
    }

    if (s->row == f->row && s->col == f->col) {
      s->len ++;
      generate_fruit(s, f);
    }
}

// 生成随机食物
void generate_fruit(struct snake *s, struct fruit *f) {
    int i, j;

    do {
      f->row = rand() % (ROWS-2) + 1;
      f->col = rand() % (COLS-2) + 1;
    } while (mvinch(f->row, f->col) == SNAKE_CHAR);

    for (i = 0; i < s->len; i++) {
      if (f->row == s->row && f->col == s->col) {
            generate_fruit(s, f);
            break;

isdkz 发表于 2023-4-11 14:05:50

根据您提供的代码,您需要导入ncurses库。在Dev C++中,您需要安装ncurses库并配置相应的链接器参数。

以下是在Dev C++中导入ncurses库的步骤:

1、首先,您需要下载适用于Windows的ncurses库。可以从这里下载:https://invisible-island.net/ncurses/#download

2、解压下载的ncurses库文件,将包含的文件复制到Dev C++的相应目录。将头文件(.h文件)复制到Dev C++的include目录,将库文件(.a文件)复制到Dev C++的lib目录。

3、打开您的项目,并在菜单栏选择“工程”-> “工程选项”。

4、在弹出的窗口中,选择“链接器”选项卡,然后在“附加库”中输入“ncurses”。

5、修改代码中的#include "ncurses.h"为#include <ncurses.h>。

6、保存并重新编译您的项目。这应该解决了您遇到的问题。

请注意,这个贪吃蛇游戏使用的ncurses库在Windows系统上可能有些兼容性问题。为了更好地支持Windows系统,您可以使用PDCurses库,这是一个用于Windows的ncurses库的替代品。下载地址为:https://pdcurses.org/

若要使用PDCurses,请按照上述步骤执行,并将链接器中的“附加库”改为“pdcurses”即可。

a327904410 发表于 2023-4-12 10:17:49

把头文件放在你要运行的.cpp文件路径下即可

wangxiangtan2 发表于 2023-4-12 12:02:48

你是在Linux環境下編程的嗎?原因是缺失ncurses库,
ncurses這貨是Linux裡面的庫文件……
页: [1]
查看完整版本: dev c++怎么导入外部库