Allegro i kalibracja wskaźnika

0

Próbuję napisać swoją pierwszą grę w Allegro (wybrałem rzutki). Wszystko fajnie idzie ale żeby nie było za łatwo wstawiłem własny kursor (400x400px) w postaci krzyżyka i tu mój problem - po kliknięciu wykrywa miejsce kliknięcia jako lewy górny róg kursora, jak przestawić, aby "ostrze" standardowej strzałki było w środku krzyżyka?

0
  1. Tam gdzie odczytujesz pozycję kursora po prostu przesuń ją do środka dodając po 200 do współrzędnych
  2. Pobieraj pozycję kursora i po prostu rysuj w tym miejscu ten celownik 200 pikseli w górę i na lewo, przy czym oryginalny kursor ukryj (lub pustą bitmapę zrób)
0

Wiem, ale nie wiedziałem jak to zrobić, na szczęście dzięki tobie wpadłem na inny pomysł, dzięki.
A wiesz może jak zrobić, aby kursor bujał się w górę i w dół symulując oddychanie?

0

Zrób to w głównej pętli, jeśli masz taką możliwość. Albo ustaw timer. Jeśli chcesz żeby np bujało sie o 50 px w dół w ciągu jednej sekundy to musisz co 20 ms dodawac do zmiennej y 1 px :) Jak sie skonczy to bujasz od stanu obecnego (50) do stanu 50 w gore (-50) czyli o 100 px. Czyli reasumując dla stanu w którym y = 0 dajesz pętle while np do tych 50 a potem lecisz w przeciwną stronę. mozna to dzielić albo na cykle albo coś. Możesz dodać jeszcze randomizację jakąś która będzie dodawała do zmiennej X lub odejmowała od niej.

A ogólnie to ciekawy pomysł ^^

0

Dzięki, teraz muszę obmyślić jak wykrywać w jakie pole punktowe się trafiło, bo z prostokątami to łatwo ale z kołami - wyższa matematyka :D

0

muszę obmyślić jak wykrywać w jakie pole punktowe się trafiło, bo z prostokątami to łatwo ale z kołami - wyższa matematyka

Nie przesadzaj, wyliczaj po prostu odległość punktu od środka koła (hint - a2 + b2 = c^2) :>

0

Faktycznie, a ja głupi chciałem coś kombinować jak Pitagorasem można łatwo trzasnąć :D
A może na to coś poradzicie - podmieniłem kursor na celownik, wszystko fajnie, prawym przyciskiem myszy zmniejsza się celownik dla poprawienia celności (później to jakoś ograniczę), chciałem ustawić wyrzucenie rzutki na lewy przycisk myszy, ale nie działa! Tymczasowo ustawiłem na spację i wszystko działa - co zrobiłem źle?
Fragment kodu:

        if(mb==0) //mb - mouse button
        {
             blit( kursor1, mouse_bufor,0,0,mx-100,my-100,800,600); //mx, my - x, y położenia wskaźnika
             if(key[KEY_SPACE] && licznik_strzalow<3)
             {
                      blit( kursor1, mouse_bufor,0,0,mx-100,my-100,800,600);
                      blit(trafienie, bufor_screen,0,0,mx-1,my-1,3,3);
                      punkty();
                      rest(150);
                      licznik_strzalow++;
             }
        }
        else if(mb==2)
        {
             blit( kursor2, mouse_bufor,0,0,mx-50,my-50,800,600);
             if(key[KEY_SPACE] && licznik_strzalow<3)
             {
                      blit( kursor1, mouse_bufor,0,0,mx-100,my-100,800,600);
                      blit(trafienie, bufor_screen,0,0,mx-1,my-1,3,3);
                      punkty();
                      rest(150);
                      licznik_strzalow++;
             }
        } 
0

a kto pisze ten program ty czy my? Czytając twoje wypowiedzi domyślam się, że jesteś raczej na początku drogi przygody z programowaniem, a więc ten dział nie jest dla ciebie. Druga sprawa to fakt, że pytając się o wszystko nic się nie nauczysz. Przysiądź i pokombinuj i testuj, jak nie działa lub nie pasuje ci rozwiązanie próbuj dalej.

0

Może i masz rację, że niczego się nie nauczę, ale próbowałem już z tym kilka godzin i dopiero dzisiaj udało mi się to naprawić. Tak to są moje początki programowania (w Allegro, bo c++ już znam, może nie perfekcyjnie, ale znam)

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