Добрый день. Уже некоторое время мучаюсь с "рендером", который при отрисовке должен показывать в терминале linux игровую территорию, ограниченную стенками из "#". Но проблема в том, что он рисуется как-то наперекосяк, появляются сдвиги и прочее мракобесие, которое я никак не могу решить.
Код#include <curses.h>
#include <iostream>
// Init game loop limiter
bool loop = false;
// Init game area
int area_w = 100;
int area_h = 20;
// Init player
int player_x = 2;
int player_y = 2;
enum player_c {
UP = 119,
DOWN = 115,
LEFT = 97,
RIGHT = 100
};
// Input
void g_input() {
char c = getch();
switch(c) {
case UP:
player_y -= 1;
break;
case DOWN:
player_y += 1;
break;
case LEFT:
player_x -= 1;
break;
case RIGHT:
player_x += 1;
break;
}
}
// Render
void g_render() {
std::system("clear");
for(int py = 0; py < area_h; py++) {
for(int px = 0; px < area_w; px++) {
if(px == 0 || px == area_w || py == 0 || py == area_h) {
printf("#");
} else {
printf(" ");
}
if(px == player_x && py == player_y) {
printf("@");
}
}
printf("\n");
}
}
int main() {
initscr();
loop = true;
while(loop) {
g_render();
g_input();
}
endwin();
return 0;
}