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.
|
|
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 :) |
|
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 :/ |
|
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 |
|
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 :) |
|
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 |
|
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 |
|
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 :) |
|
« 1 » 2 |