Ostatnio bawię się z biblioteką ncurses i mam problem z przesuwaniem elementu po konsoli.
#include <iostream>
#include <curses.h>
using namespace std;
int main()
{
initscr();
keypad(stdscr, FALSE);
noecho();
int maxx = 0, maxy = 0;
getmaxyx(stdscr, maxy, maxx);
int y = maxy/2, x = maxy/2;
bool isRunning = true;
do
{
char dir = getch();
switch(dir)
{
case 'w': y--;
case 's': y++;
case 'a': x--;
case 'd': x++;
case '0': isRunning = false;
}
clear();
if(x>=maxx) x = 0;
if(y>=maxy) y = 0;
if(x<=0) x = maxx-1;
if(y<=0) y = maxy-1;
//mvprintw(y, x, "X");
move(y,x);
printw("X");
mvprintw(0, 0, "x: %d y: %d dir: %c", x, y, dir);
}
while(!isRunning);
getch();
endwin();
return 0;
}
W switchu działa warunek tylko dla 'd' i 's'.
if(x>=maxx) x = 0;
if(y>=maxy) y = 0;
if(x<=0) x = maxx-1;
if(y<=0) y = maxy-1;
Tutaj też nie działa za dobrze, po osiągnięciu krawędzi konsoli nie przechodzi z drugiej strony tylko się zatrzymuje.