MattHolm Ответов: 1

Создание карт с использованием библиотеки


Таким образом, цель этой программы состоит в том, чтобы использовать ваши клавиши для перемещения # вокруг фигуры. И когда он движется, то оставляет за собой след из#. В данный момент я не могу получить след для печати, так как я не могу получить карту для обновления.

#include <curses.h>
#define LEN 21
#define TRUE 1
#define FALSE 0
#define UP 3
#define DOWN 2
#define RIGHT 5
#define LEFT 4

// A simple program that allows a cursor to be moved around the screen.
void dispMap(int x, 
             int y, 
             char map[][LEN]){
  int row,col;
  // draw basic map
  for(row=0;row<LEN;row++){
    for(col=0;col<LEN;col++){
      mvaddch(row+1,col+1,map[row][col]);
    }
  }
  // cursor symbol
  mvaddch(y+1,x+1,'#');
}
     
int main(void){
     char map[][LEN]={" ---------------     ", // empty space to fill array to length of LEN
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      "|               |    ",
                      " ---------------     ",    
                      "Drawing feild of play", 
                      "Press p to toggle pen", 
                      "Press q to quit      ", 
                      "Pen down             ",    //Maybe define a string to allow it to change
                      "                     ", 
                      "                     ", 
  };
  
  // activate the keypad to read from this terminal
  keypad(initscr(),TRUE);
  //don't show cursor
  curs_set(0);


  // initialise the x and y positions of the cursor
  int xPos=1;
  int yPos=1;
  int p = 1;
  char c='\0';       // input character initialise to null
  
  while( c!='q'){
    dispMap(xPos,yPos,map);
    // read a single character
    c=getch();
    mvaddch(yPos,xPos,'#');        // erase old position
    // move according to cursor
 
    switch(c){
    case UP:
      if (map[yPos-1][xPos]== ' '){
        yPos--;
      }
      break;
    case DOWN:
      if (map[yPos+1][xPos]== ' '){
        yPos++;
      }
      break;
    case LEFT:
      if (map[yPos][xPos-1]== ' '){
        xPos--;
      }
      break;
    case RIGHT:
      if (map[yPos][xPos+1]== ' '){
        xPos++;
      }
    }
  }
  endwin();
}


Что я уже пробовал:

Я перепробовал все и ваша помощь будет очень признательна

Richard MacCutchan

Вчера кто-то другой опубликовал точно такой же вопрос с точно таким же кодом. Сомневаюсь, что вы оба пришли к этому независимо.

1 Ответов

Рейтинг:
0

KarstenK

Для вывода можно использовать знаменитый printf

printf("Hello world!\n");

но с вашей переменной
printf(map);