鱼C论坛

 找回密码
 立即注册
查看: 2664|回复: 3

dev c++怎么导入外部库

[复制链接]
发表于 2023-4-11 13:55:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

  11. struct snake {
  12.     int len;                // 贪吃蛇长度
  13.     int row[MAX_LEN], col[MAX_LEN];     // 贪吃蛇各节点的位置
  14.     int direction;          // 贪吃蛇当前行进方向
  15. };

  16. struct fruit {
  17.     int row, col;
  18. };

  19. void draw_map();
  20. void draw_snake(struct snake *s);
  21. void draw_fruit(struct fruit *f);
  22. void move_snake(struct snake *s, struct fruit *f);
  23. void generate_fruit(struct snake *s, struct fruit *f);
  24. void initialize_snake(struct snake *s);

  25. int main() {
  26.     struct snake s;
  27.     struct fruit f;

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

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

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

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

  43.     endwin();               // 关闭 ncurses

  44.     return 0;
  45. }

  46. // 绘制地图
  47. void draw_map() {
  48.     int i, j;

  49.     clear();

  50.     for (i = 0; i < ROWS; i++) {
  51.         for (j = 0; j < COLS; j++) {
  52.             if(i == 0 || j == 0 || i == ROWS-1 || j == COLS-1) {
  53.                 mvprintw(i, j, "#");
  54.             }
  55.         }
  56.     }
  57. }

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

  61.     s->len = INIT_LEN;
  62.     for (i = 0; i < s->len; i++) {
  63.         s->row[i] = ROWS/2;
  64.         s->col[i] = COLS/2 - i;
  65.     }
  66.     s->direction = KEY_RIGHT;
  67. }

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

  71.     for (i = 0; i < s->len; i++) {
  72.         mvprintw(s->row[i], s->col[i], "%c", SNAKE_CHAR);
  73.     }
  74. }

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

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

  83.     switch (ch) {
  84.         case KEY_UP:
  85.         case KEY_DOWN:
  86.         case KEY_LEFT:
  87.         case KEY_RIGHT:
  88.             s->direction = ch;
  89.             break;
  90.     }

  91.     for (i = s->len - 1; i > 0; i--) {
  92.         s->row[i] = s->row[i-1];
  93.         s->col[i] = s->col[i-1];
  94.     }

  95.     switch (s->direction) {
  96.         case KEY_UP:
  97.             s->row[0] --;
  98.             break;
  99.         case KEY_DOWN:
  100.             s->row[0] ++;
  101.             break;
  102.         case KEY_LEFT:
  103.             s->col[0] --;
  104.             break;
  105.         case KEY_RIGHT:
  106.             s->col[0] ++;
  107.             break;
  108.     }

  109.     if (s->row[0] == 0 || s->row[0] == ROWS-1
  110.         || s->col[0] == 0 || s->col[0] == COLS-1) {
  111.         clear();
  112.         mvprintw(ROWS/2, COLS/2-5, "Game Over");
  113.         refresh();
  114.         sleep(2);
  115.         endwin();
  116.         exit(0);
  117.     }

  118.     if (s->row[0] == f->row && s->col[0] == f->col) {
  119.         s->len ++;
  120.         generate_fruit(s, f);
  121.     }
  122. }

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

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

  130.     for (i = 0; i < s->len; i++) {
  131.         if (f->row == s->row[i] && f->col == s->col[i]) {
  132.             generate_fruit(s, f);
  133.             break;
复制代码
微信图片_20230411135308.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 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”即可。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 10:17:49 | 显示全部楼层
把头文件放在你要运行的.cpp文件路径下即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 12:02:48 | 显示全部楼层
你是在Linux環境下編程的嗎?原因是缺失ncurses库,
ncurses這貨是Linux裡面的庫文件……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 19:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表