Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Snake i rysowanie według kratek

Ostatnio zmodyfikowano 2012-02-23 22:11
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
Snake i rysowanie według kratek
» 2012-02-23 21:55:25
Przebudowałem swoje Snake i teraz mam problem z obliczeniami. Otóż tym razem Snake i jabłko to kwadraty. Okno gry to 640x480. Otóż podzieliłem cały obszar gry na siatkę. Odjąłem 10 piskeli i wyszło mi 630x470. Mój kwadrat Snake ma wielkość 10 pikseli. Więc otrzymałem obszar gry o wielkości 63x47. Mój Snake porusza się ruchem skokowym. Pozycje Snake, podaję w kratkach. I teraz mam problem. Po uruchomieniu gry, Snake na chwile pojawia się na środku, a potem znika. Zapewne coś skopałem w obliczeniach, więc proszę was o pomoc:

C/C++
//Wyzej nacisniecie klawisza powoduje zmiane zmiennej kierunek

//Wstepnie player_x i player_y maja wartosc x = 30, y = 23

if( kierunek == E_UP ) player_y -= 1;

if( kierunek == E_DOWN ) player_y += 1;

if( kierunek == E_RIGHT ) player_x += 1; //Zmiana wartosci player_x lub player_y o 1 kratke

if( kierunek == E_LEFT ) player_x -= 1;

al_clear_to_color( al_map_rgb( 0, 0, 0 ) );
player_x *= 10; //Razy 10 bo moj waz ma boki o dlugosci 10 pikseli
player_y *= 10;
al_draw_filled_rectangle( player_x - 5, player_y - 5, player_x + 10, player_y + 10, al_map_rgb( 28, 223, 0 ) ); //Przeliczam kratki na piksele

Problem polega na tym, że Snake pokazuje się, a potem znika.
P-51317
pekfos
» 2012-02-23 21:57:15
player_x *= 10;

1, 10, 100, 1000, 10000, .. ale szybki!
P-51318
hincu
» 2012-02-23 22:00:21
trafna uwaga pekfos wlasnie mialem o tym pisac XD
P-51319
bingo009
Temat założony przez niniejszego użytkownika
» 2012-02-23 22:11:37
Ale walnalem blad. Sorki za ten bezsensowny temat, jutro to poprawie, bo teraz siedze na fonie.

Teraz działa dobrze, ale mam inny problem. Snake teraz porusza się normalnie, ale nie według kratek. Zmieniłem deklarację zmiennych na tą:
C/C++
int player_x = 30 * 10, player_y = 23 * 10;

Za każdym ruchem zwiększam wartość player_x lub player_y o 1. Co teraz znowu jest nie tak?

Edit: Już naprawione, dzięki za pomoc.
P-51324
« 1 »
  Strona 1 z 1