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

Odpowiedz do tematu
Poprzedni temat :: Następny temat
[MMF2] Array - zmiana wartości na określonym obszarze
Autor Wiadomość
Zawieszony 
Kapral


Główny edytor: Fusion 2.5 Dev
Drugi edytor: MMF2
Pojedynki: nie
Posty: 30

371 Prestiż
Wysłany: 11-01-2014, 16:54   [MMF2] Array - zmiana wartości na określonym obszarze

Mam array z wartościami 0 i 1 pokrywający całą planszę. Chciałbym, aby przy kliknięciu wartości wokół kliknięcia zmieniły się z 0 na 1. Nie tylko ta kliknięta komórka, ale również wszystkie wokół w promieniu 3 kratek.

Problemem jest dla mnie kształt okręgu.
Czy znacie jakiś mądry sposób na wychwycenie dokładnie tych pól w arrayu? To raptem 36 pól, więc od biedy można dla każdego zrobić osobne zdarzenie, ale szukam lepszego rozwiązania. Czy da się tu zastosować jakiś wzór na pole koła w układzie współrzędnych, albo coś w ten deseń?
 
     
Ludwig 
Plutonowy


Główny edytor: Fusion 2.5
Drugi edytor: MMF2
Pojedynki: być może
Pomógł: 2 razy
Posty: 96

2294 Prestiż
Wysłany: 11-01-2014, 17:14   

A gdyby sprawdzać dystans tych obiektów od kursora w momencie klikniecia czy nie jest mniejszy od jakiejś wartości?

Ewentualnie wprowadzić równanie okręgu i nierównościami sprawdzać czy współrzędne obiektów są wewnątrz niego.
 
     
SilentBob92PL 
Starszy sierżant
Sairento


Główny edytor: Fusion 2.5 Dev
Drugi edytor: Construct
Pojedynki: być może
Skype:
Pomógł: 31 razy
Posty: 163

15684 Prestiż
Wysłany: 11-01-2014, 18:14   

Więc tak:
Klikasz myszką -> dostajesz x,y kliknięcia w tablicy i ustawiasz zmienne srodekkola x i y.
-> Włączasz pętle "kolo y" - (promień koła *2) razy
i w pętli "kolo y" włączasz pętle "kolo x" (promień koła *2) razy

Gdy pętla "kolo x" jest odpalona ->
i jeśli
((LoopIndex("kolo x" ) + srodekkola x - promien kola) - srodekkola x )*((LoopIndex("kolo x" ) + srodekkola x - promien kola) - srodekkola x ) + ((LoopIndex("kolo y" ) + srodekkola y - promien kola) - srodekkola y )*((LoopIndex("kolo y" ) + srodekkola y - promien kola) - srodekkola y ) = promien kola * promien kola

to

ustaw wartość x=(LoopIndex("kolo x" ) + srodekkola x - promien kola) y=(LoopIndex("kolo y" ) + srodekkola y - promien kola) na 1
_________________
 
 
     
Zawieszony 
Kapral


Główny edytor: Fusion 2.5 Dev
Drugi edytor: MMF2
Pojedynki: nie
Posty: 30

371 Prestiż
Wysłany: 11-01-2014, 21:50   

:D

Dokładnie o to mi chodziło, dzięki, SilentBob! Tylko jedną drobną edycję zrobiłem: chcemy zmienić wartości nie tylko na okręgu, ale w środku okręgu także - więc nie będzie =r^2, tylko mniejsze bądź równe r^2.

Pozdrawiam, temat do zamknięcia.

EDIT Chociaż, może jeszcze nie do zamknięcia. Okrąg niestety nie jest idealnie równy. Z boków górnego i lewego wlicza w okrąg jedną kratkę więcej. Czym to może być spowodowane? Ułamkami?

EDIT2 Jak zamiast </= dałem tylko <, to okrąg się wyrównał. Whatever.
 
     
SilentBob92PL 
Starszy sierżant
Sairento


Główny edytor: Fusion 2.5 Dev
Drugi edytor: Construct
Pojedynki: być może
Skype:
Pomógł: 31 razy
Posty: 163

15684 Prestiż
Wysłany: 11-01-2014, 22:56   

Z tym =r^2 to mój błąd.

Ja nawet nie sprawdziłem czy to będzie dział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