opoznienie w snake

0

Witam, piszę aktualnie prostą grę snake w konsoli.
Opóźnienie działało ładnie dopóki nie chciałem wprowadzić warunków dla if a mianowicie uderzenia w ścianę

         if (snake[LENGTH-1].x == -1) snake[LENGTH-1].x = 79{k=0};
        if (snake[LENGTH-1].x == 80) snake[LENGTH-1].x = 0{k=0};
        if (snake[LENGTH-1].y == -1) snake[LENGTH-1].y = 24{k=0};
        if (snake[LENGTH-1].y == 25) snake[LENGTH-1].y = 0{k=0};

do opóźnienia używam funkcji

        endwait = clock () + DELAY * CLOCKS_PER_SEC ;
       while (clock() < endwait){} 
        {

którą średnio rozumiem ale się staram :)

Proszę o jakieś wskazówki jak to zrobić inną funkcja albo jak rozwiązać to żeby program mógł się zatrzymać w momencie uderzenia w ścianę lub wciśnięcia odpowiedniego klawisza.

Z góry dziękuję.

TU cały program
http://wklej.org/hash/7557dcef43d/

0

masz pętlę

while (k = true)

w której warunek jest zawsze prawdziwy (to jest przypisanie a nie porównanie). Zmień na

while (k == true)

Jeżeli często popełniasz takie błędy to pisz odwrotnie

while (true == k)

wtedy błędny kod

while (true = k)

się nie skompiluje

To powinno wystarczyć, bo ustawiasz zmienną k na false (k = 0) gdy uderzasz w ścianę.

BTW. Masz też coś dziwnego z nawiasami

  if (snake[LENGTH-1].x == -1) snake[LENGTH-1].x = 79{k=0}; 

pewnie miało być

  if (snake[LENGTH-1].x == -1) {snake[LENGTH-1].x = 79; k=0;} 

Nie wgłębiałem się w program, ale imo wystarczy

  if (snake[LENGTH-1].x == -1) { k=false; }; 

to samo z pętlą

while (clock() < endwait){} 
{

zamień na

while (clock() < endwait)
{
0

Wcześniej cała operacja była w pętli for( ; ; ) [nie było warunku k=0] i snake ładnie się przemieszczał z odpowiednim opóźnieniem teraz nie wchodzi nawet w pętle rysuje ramkę i kończy działanie :|

ps. lmmilewski Dziękuję bardzo za pomoc na pewno sprawi to że moje przyszłe projekty będą lepsze.

0

Nie zauważyłem wcześniej, że nie ustawiasz zmiennej k. Jest globalna, więc będzie równa 0 na początku. Przed samą pętlą (while (true == k)) daj k = true;

1 użytkowników online, w tym zalogowanych: 0, gości: 1