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

[ALLEGRO] Strzał w ludzika

Ostatnio zmodyfikowano 2010-01-31 12:37
Autor Wiadomość
Crisu-17
Temat założony przez niniejszego użytkownika
[ALLEGRO] Strzał w ludzika
» 2010-01-28 19:48:25
Witam wszystkich, mam taki mały Duży problem w projekcie :D
Otóż mam problem, jak zrobić ze jesli strzele(klikne) na ludzika wyswietlonego
na screenie to go zabije. Tylko chodzi mi o dokladny strzal, bo wiem ze jesli wczytam obrazek kwadratowy i dodam zdarzenie klikniecia to go zabije, problem w tym ze jak strzele w rog 0,0 tego obrazka to tez go zabije pomimo ze do glowy ludzika jest spora odleglosc. I wlasnie nie wiem jak wydzielic ten obszar w bitmapie ktory nic nie robi. Myslalem nad tablica bitmap i na twardo zdeklarowac ktore krateczki sa aktywne a ktore nie, ale moze ktos ma inny pomysl.
Bo ja juz nad tym sie glowie troche.
P-13355
dmx81
» 2010-01-28 21:36:24
poczytaj tutorial - dzial wlasnie o tej nazwie, tam eee krq - sorki, nie pamietam dokladnie nicka - napisal wlasnie sposob na twoj problem - otoz uzyjesz funkcji get_pixel.

za pomoca tej funkcji odczytujesz kolor - wtedy porownujesz z kolorem wybranym, jesli spelniona jest zaleznosc, wtedy wykona sie odpowiednia funkcja

oczywiscie zadziala w pelni poprawnie, o ile kolor ludka jest unikalny,a raczej jego kolory, poniewaz jesli uzywasz podobnych kolorow na planszy - klikniecie w nie spowoduje rowniez "smierc" ludzika:P ale jest tez na to sposob, wlasnie wpadl mi do glowy

pseudokod:

if (kursor na ludziku&& kolor=czarny lub kolor=czerwony)
kill_ludek

mam nadzieje, ze chociaz troszke pomoglem :)
P-13358
Crisu-17
Temat założony przez niniejszego użytkownika
» 2010-01-28 21:41:24
tu jest wlasnie prob0lem bo te figurki co mam sa wielokolorowe :/ i nijak nie wiem co z tym fantem zrobic;/ przecierz nie zapisze w bazie 70 kolorow jak nie wiecej i nie bede ich porownywal :/
P-13359
dmx81
» 2010-01-28 21:51:16
trzeba sie dokladniej wczytac w tutorial - jego idea jest taka, ze:

pomysl, ze jest:

samo biale tlo

ludek na tym tle

jakies kolorowe tlo, ktore narysowane bedzie na bialym tle, razem z przeszkodami itd

w takim wypadku mozna zastosowac warunek:

jesli strzal bedzie w kolor inny niz bialy - zalatw ludzika ;)

troche tylko trzeba pokombinowac z kolejnoscia wyswietlania tla, aby warunek sprawdzenia koloru strzalu byl dla tla bialego, ale na ekranie wyswietlane bylo wszytsko w kolorach, mam nadzieje, ze rozumiesz, o co mi chodzi
P-13360
Crisu-17
Temat założony przez niniejszego użytkownika
» 2010-01-28 21:57:46
łapie o co biega :) pokombinuje tak jak mowisz i zobaczymy co wyjdzie :)
P-13361
dmx81
» 2010-01-28 22:04:03
mam nadzieje, ze dasz rade, chyba sam tez w miedzy czasie "machne" podobna sytuacje, bo wczesniej tego jeszcze nie robilem, wiec latwo mi sie pisze ;) jakby co, to daj znac jak idzie, ja tez pokombinuje
P-13362
Crisu-17
Temat założony przez niniejszego użytkownika
» 2010-01-28 22:06:00
spoko :) jutro wyproboje to co jest na forum i dam znac :) jak wszystko bedzie ok to dam gierke do oceny :P
P-13363
dmx81
» 2010-01-28 22:43:46
ok ja juz zrobilem i dziala w 100% :D:D

jesli chcesz sam wyprobowac sposob na szybko, proponuje:

skopiowac kod z kursu allegro -> myszka

dopisac do niego

swoja bitmape
jakies tlo, jakie bedzie kopiowane na bufor (ja na szybko zrobilem kolorowy obrazek w paincie)

a nastepnie:

czyscimy bufor na dany kolor
rysujemy na nich ludka
sprawdzamy warunek, czy getpixel w pozycji myszki x i y = kolorowi, na jaki czyscimy bufor
jesli jest rozny - wyswietlamy tekst (najlepiej na screen, nie na bufor) informujacy:
 if (getpixel(bufor, mx, my)!=makecol(100,100,100)&&mb!=0)
      textprintf_ex(screen,font,100,200,makecol(200,100,200),0,"TRAFIONY");

gdzie mb - jesli 0 - zaden przycisk myszki nie wcisniety,

nastepnie na bufor wrzucamy nasze tlo, a nastepnie jeszcze raz ludzika
no i wszytsko na screen -

efekt - program sprawdza dla naszego ludka i jednolitego tla, w co tak naprawde trafiamy, a na ekranie widzimy piekne kolorowe tlo :) warunek - ludek oczywiscie wyswietlany masked_blit

nastepny krok - dopracuj to na potrzeby swojego kodu :)
P-13364
« 1 » 2
  Strona 1 z 2 Następna strona