Witam, mam taki oto kod:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <ncurses.h>
int k;
int xMax, yMax;
int kierunek(char c);
int main()
{
int seed;
seed = time(NULL);
srand(seed);
struct cialo
{
char c;
int x,y,kierunek;
unsigned int rozmiar_weza;
};
struct zarcie
{
char c;
int x,y;
};
int a,b;
struct zarcie jedzenie;
struct cialo waz;
initscr();
noecho();
cbreak();
curs_set(0);
keypad(stdscr, TRUE);
getmaxyx(stdscr, yMax, xMax);
border('|','|','-','-','+','+','+','+');
refresh();
waz.c = '*';
waz.x = xMax/2;
waz.y = yMax/2;
waz.rozmiar_weza = 1;
waz.kierunek = 0;
mvwprintw(stdscr, waz.y, waz.x, "%c", waz.c);
refresh();
jedzenie.c = '8';
jedzenie.y = rand()%yMax;
jedzenie.x = rand()%xMax;
mvwprintw(stdscr, jedzenie.y, jedzenie.x, "%c", jedzenie.c); /*zamiast osobno move i wprintw*/
refresh();
while(1)
{
k = direction( getchar() );
waz.kierunek = k;
switch(waz.kierunek)
{
case 1:
{
mvwprintw(stdscr, --waz.y, waz.x, "%c", waz.c);
mvwprintw(stdscr, (waz.y+waz.rozmiar_weza), waz.x, " "); /*zamalowanie ""*/
break;
}
case 2:
{
mvwprintw(stdscr, ++waz.y, waz.x, "%c", waz.c);
mvwprintw(stdscr, (waz.y-waz.rozmiar_weza), waz.x, " ");
break;
}
case 3:
{
mvwprintw(stdscr, waz.y, --waz.x, "%c", waz.c);
mvwprintw(stdscr, waz.y, (waz.x+waz.rozmiar_weza), " ");
break;
}
case 4:
{
mvwprintw(stdscr, waz.y, ++waz.x, "%c", waz.c);
mvwprintw(stdscr, waz.y, (waz.x-waz.rozmiar_weza), " ");
refresh();
break;
}
}
refresh();
if ( waz.y == jedzenie.y && waz.x == jedzenie.x)
{
++waz.rozmiar_weza;
jedzenie.y = rand()%yMax;
jedzenie.x = rand()%xMax;
mvwprintw(stdscr, jedzenie.y, jedzenie.x, "%c", jedzenie.c);
refresh();
}
}
endwin();
return 0;
}
int kierunek(char c)
{
switch (c)
{
case 'w': return 1;
case 's': return 2;
case 'a': return 3;
case 'd': return 4;
case 'q': return -1;
}
}
Już od kilku godzin męczę się z tym, że jak dam pętlę np. while (k == 1) to wąż porusza się sam, ale nie reaguje już na inne klawisze. Nie wiem jak zrobić żeby poruszał się w określonym kierunku, dopóki nie wcisnę innego klawisza. Bardzo proszę o pomoc.