NukeBoards - Kreatywność przede wszystkim
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  DownloadDownload
RejestracjaRejestracja  ZalogujZaloguj

Odpowiedz do tematu
Poprzedni temat :: Następny temat
[TGF] Ograniczenie liczby zdarzeń
Autor Wiadomość
bmatrix 
Starszy sierżant


Główny edytor: TGF
Pomógł: 4 razy
Posty: 204

2055 Prestiż
Wysłany: 29-12-2008, 11:27   [TGF] Ograniczenie liczby zdarzeń

Witam,
Doświadczam pewnej niedogodności podczas tworzenia mini-gry. Może pokrótce opiszę sytuację: na poziomie mam osiem kwadratów (obiektów aktywnych) - każdy z nich po kliknięciu użytkownika (kliknięciu myszą na kwadrat) tworzy wokół siebie cztery detektory, które sprawdzają czy obok kwadratu jest puste pole (nie zajęte przez inny obiekt). Jeśli po jednej z czterech stron figury jest wolna przestrzeń, to kwadrat przemieszcza się w to miejsce (np. lewy detektor kwadratu wykrywa puste pole - kwadrat "przeskakuje" w lewo).
Problem jest taki, iż dla każdego z ośmiu kwadratów muszę robić osobne cztery zdarzenia (dla czterech detektorów) co daje w sumie 32 zdarzenia. Jeszcze gorsza sytuacja wyniknie, kiedy będę chciał stworzyć mapę z 15 kwadratami. Zatem, w jaki sposób można wykonać to w 4 zdarzeniach? Warunek jest zawsze taki sam "Jeśli detektor_lewy NIE wykrywa innego obiektu to..." (dla każdego detektora), zmienia się tylko obiekt dla którego wykonywana jest akcja (zawsze jest to przemieszczenie o taką samą ilosć px). Myślałem, aby zrobić jakieś wykrywanie, na którą figurę użytkownik kliknął i na tej podstawie opracować ruch odpowiedniej, nie mam jednak pomysłu jak się za to zabrać.
 
     
Fanotherpg 
Porucznik
I'm livin' proof


Główny edytor: Fusion 2.5 Dev
Drugi edytor: Fusion 2.5
Pojedynki: tak
Skype:
Pomógł: 8 razy
Posty: 821

14370 Prestiż
Wysłany: 29-12-2008, 11:34   

Spread Value jako indentyfikator obiektu i wtedy każdy obiekt mimo bycia tym samym OA ma swoje własne unikalne właściwości?
_________________
Indie since 1997.
 
 
     
Slawo 
Legenda


Główny edytor: MMF2
Pojedynki: nie
Pomógł: 16 razy
Posty: 706

25566 Prestiż
Wysłany: 29-12-2008, 12:17   

Zobacz sobie np. z wytwórni nukesoft przykład grav+, albo u Bedzia na www.bedziu.webd.pl/ffg przykład by Omenski pt. multinakładanie (bo mi się nie chce tego robić a zastosowałem już w kilku grach, np. Kreciku, Szalonych Autobusach).
O co chodzi ?
Musisz zrobić jeden rodzaj tych obiektów "kwadrat" i dać im spread values A tuż przed loopem oraz stworzyć detektory.
Następnie w loopie jako kolejna iteracja (wielkość loopa = ilości obiektów "kwadrat) ustawiasz kolejno przy "kwadratach" detektory (ustaw przy kwadracie, dla którego numer loopa=alterable A "kwadratu" ) i sprawdzasz (tak jak to jest w dwóch wyżej wspomnianych przykładach).
Możesz sprawdzać na setkach obiektów "kwadrat".
_________________
http://pograjmy.webd.pl - gry z rankingami graczy i turniejami - miejsce również na Twoje gry klikowe

Ponad 150 gier wydanych
Od 2003 w klikach
Od 2001 w hiscoresach na www

http://pograjmy.webd.pl/typer/ (typuj wyniki Mundialu)
Czytam: http://kontrowersje.net
 
     
jarlfenrir 
Generał brygady


Główny edytor: Fusion 2.5
Drugi edytor: TGF2
Pomógł: 82 razy
Posty: 1731

37283 Prestiż
Wysłany: 29-12-2008, 18:25   

W 4 zdarzeniach tego nie zrobisz raczej, ale nie sądzę, byś znalazł lepszy sposób niż ten opisany przez Sława. Warto się jeszcze zastanowić, czy kwadraty będą dodawane w czasie, gry bedą usuwane. Bo jeśli nie zamierzasz usuwać istniejących kwadratów, zamiast spread value wystarczy przy tworzeniu nadać jakiś identyfikator (np. set alt.val.A to value ("licznik"). Nie rozdzielasz identyfikatora za każdym razem, dzięki czemu ciutkę oszczędzasz czas procesora.
 
     
bmatrix 
Starszy sierżant


Główny edytor: TGF
Pomógł: 4 razy
Posty: 204

2055 Prestiż
Wysłany: 29-12-2008, 21:28   

Wielkie dzięki za odpowiedzi - otrzymałem mniej więcej to, o co mi chodziło (no i odkryłem, że TGF przesuwa zawsze jeden obiekt a nie wszystkie o tej nazwie - dlatego wcześniej stworzyłem 8 obiektów aktywnych, z czego wyniknął problem ;) )
 
     
jarlfenrir 
Generał brygady


Główny edytor: Fusion 2.5
Drugi edytor: TGF2
Pomógł: 82 razy
Posty: 1731

37283 Prestiż
Wysłany: 29-12-2008, 21:40   

bmatrix napisał/a:
(no i odkryłem, że TGF przesuwa zawsze jeden obiekt a nie wszystkie o tej nazwie
To, ile przesunie, zależy od tego, jak skonstruowana jest akcja i co się aktualnie w grze dzieje. Ale zwykle przesuwa albo jeden albo wszystkie.
 
     
bmatrix 
Starszy sierżant


Główny edytor: TGF
Pomógł: 4 razy
Posty: 204

2055 Prestiż
Wysłany: 30-12-2008, 12:23   

Jako, że nie chciałbym tworzyć nowego tematu, a pytanie jest zbliżone, pozwolę sobie napisać tutaj: czy w TGF'ie możliwe jest porównywanie wartości dwóch obiektów aktywnych, które występują na mapie w większej liczbie? Tzn. jeśli mam te 8 kwadratów (ale jako jeden obiekt aktywny), to chciałbym sprawdzić czy detektory na które się nakładają mają taką samą wartość A (detektor też jest jednym obiektem, ale utworzonym 8 razy). Teoretycznie zdarzenie, przedstawione poniżej powinno działać:

>Wartość A(detektor)=Wartość A(kwadrat)
+Detektor nakłada się na kwadrat

Niestety jednak, w tym wypadku akcja się odbywa zawsze gdy choćby jeden odpowiedni detektor (np. o A=1) pokrywa się z odpowiednim kwadratem (o A=1). Chciałbym aby akcja (w tym wypadku koniec gry) następowała tylko wtedy, gdy WSZYSTKIE detektory nakładają się na odpowiadające im obiekty "kwadrat". Czy coś takiego jest wykonalne przy użyciu wartości, czy należy zabrać się za to w inny sposób?
 
     
jarlfenrir 
Generał brygady


Główny edytor: Fusion 2.5
Drugi edytor: TGF2
Pomógł: 82 razy
Posty: 1731

37283 Prestiż
Wysłany: 30-12-2008, 16:44   

Może spróbuj tak:
* Zawsze ustaw liczik na 0

* numer pętli = ID obiektu
+ detektor zachodzi na obiekt
+ Id obiektu = ID detektora
--> dodaj do licznika 1

* Wartość licznika = ilość obiektów
--> koniec gry
 
     
Slawo 
Legenda


Główny edytor: MMF2
Pojedynki: nie
Pomógł: 16 razy
Posty: 706

25566 Prestiż
Wysłany: 30-12-2008, 16:48   

bmatrix napisał/a:
Chciałbym aby akcja (w tym wypadku koniec gry) następowała tylko wtedy, gdy WSZYSTKIE detektory nakładają się na odpowiadające im obiekty kwadrat. Czy coś takiego jest wykonalne przy użyciu wartości, czy należy zabrać się za to w inny sposób?

No to właśnie rozwiązuje przykład "multinakładanie" chyba.
Bez multinakładania z loopem możesz zrobić tak, że gdy detektor 1 zachodzi na obiekt A - ustaw obiektowi A alterable A=1, gdy detektor 2 zachodzi na A - ustaw obiektowi A alterable B=1 ...itp. Gdy nie zachodzi det. 1 - ustaw alterable A=0.
I teraz by sprawdzić czy 8 detektorów zachodzi musisz zrobić always ustaw alterable Z obiektu A=alterable A+B+C+D+E+F+G+H (8 detektorów).
Gdy alterable Z obiektu A=8 - wszystkie detektory zachodzą na A.
Ale lepiej zrobić multinakładanie by Omenski.
_________________
http://pograjmy.webd.pl - gry z rankingami graczy i turniejami - miejsce również na Twoje gry klikowe

Ponad 150 gier wydanych
Od 2003 w klikach
Od 2001 w hiscoresach na www

http://pograjmy.webd.pl/typer/ (typuj wyniki Mundialu)
Czytam: http://kontrowersje.net
 
     
bmatrix 
Starszy sierżant


Główny edytor: TGF
Pomógł: 4 razy
Posty: 204

2055 Prestiż
Wysłany: 30-12-2008, 20:14   

Rozumiem, zrobiłem wszystko zgodnie z "multinakładaniem" i teraz gra FL sprawdza mi tylko pierwszy detektor (z 8):

*Zawsze > Start loop#1 Number("kwadrat") loopów

*Loop #1
+"kwadrat" nakłada się na "detektor"
+Wartość A "kwadrat"=Numer kroku loop#1
+Wartość A "kwadrat"=Wartość A "detektor"
-->Zakończ grę

Gdy pierwszy jakikolwiek blok jest nad pierwszym detektorem, gra kończy się (inne detektory w ogólę nie reagują na nachodzenie kwadratów - sprawdzałem licznikami).

Dodam jeszcze, że każdemu z utworzonych detektorów przyporządkowałem wartości A (od numeru 1 poczynając, tak samo jak wartości kwadratów), w tym samym zdarzeniu, w którym są one tworzone.

EDIT:

Może, dla zobrazowania sytuacji, umieszczę przykład nakładania się kwadratów i detektorów: PRZYKŁAD
 
     
Fadex 
Legenda
#4; #12; #18; #20; #21; #27


Główny edytor: MMF2 Dev
Pojedynki: nie
Pomógł: 105 razy
Posty: 1773

51612 Prestiż
Wysłany: 02-01-2009, 12:30   

Zamiast "+Wartość A "kwadrat"=Numer kroku loop#1" spróbuj "flaga 0 obiektu kwadrat jest wyłączona", a podczas akcji włącz tę flagę.

Jeżeli to wyżej nie zadziała, to jest to jakaś pułapka klików, często w nią wpadam i nigdy nie pamiętam, jak było dobrze :P
_________________
If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat
 
 
     
bmatrix 
Starszy sierżant


Główny edytor: TGF
Pomógł: 4 razy
Posty: 204

2055 Prestiż
Wysłany: 02-01-2009, 13:28   

Nie jestem pewien, czy zrobiłem wszystko tak jak sugerujesz, ale mnie nie działa :P .

Hmm, zauważyłem, że może niedokładnie wytłumaczyłem o co mi chodzi. Obrazek:

OBRAZEK

Gra ma zakończyć się tylko wtedy, gdy zajdzie właśnie taka sytuacja - tj. kwadrat o wart. A=1 nałoży się na detektor o wart. A=1 + kwadrat o wart. A=1, nałoży się na detektor o wart. A=1... itd. itd.
Samo sprawdzanie, czy obiekty się nakładają to nie problem, ale jednocześnie TGF ma sprawdzać czy każdy z nałożonych kwadratów ma taką samą wartość, jak detektor, leżący pod nim - co już jest dla mnie przeszkodą nie do pokonania. Robiłem to na milion sposobów i póki co żaden nie daje zadowalających wyników.
Gdybym miał do wykonania tylko tych 8 obiektów, zrobiłbym to zdarzenie, po zdarzeniu (pomimo nieefektywności takiej metody), ale jako że w ostatecznej wersji obiektów ma być kilkadziesiąt, nie jest to możliwe.
 
     
Fadex 
Legenda
#4; #12; #18; #20; #21; #27


Główny edytor: MMF2 Dev
Pojedynki: nie
Pomógł: 105 razy
Posty: 1773

51612 Prestiż
Wysłany: 02-01-2009, 13:41   

http://www.speedyshare.com/857132670.html

Sorry, nie chciało mi się wcześniej ściągać przykładu, z lenistwa :D
_________________
If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat
 
 
     
bmatrix 
Starszy sierżant


Główny edytor: TGF
Pomógł: 4 razy
Posty: 204

2055 Prestiż
Wysłany: 02-01-2009, 14:52   

Dzięki Ci wielkie za to - jak teraz widzę przeoczyłem kilka istotnych rzeczy i dlatego gra nie działała :) .
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

PSK Cytaty Klikibaza - kopia wszystkich klików Klikipedia - encyklopedia o tworzeniu gier Discord KlikCzat Zaproszenie Wielkie Muzeum Klikowe

Powered by phpBB modified by Przemo © 2003 phpBB Group