|
[MMF2] Array - zmiana wartości na określonym obszarze |
| Autor |
Wiadomość |
Zawieszony
Kapral
 
Główny edytor: 
Drugi edytor: 
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: 
Drugi edytor: 
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: 
Drugi edytor: 
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: 
Drugi edytor: 
Pojedynki: nie
Posty: 30
371 Prestiż
|
Wysłany: 11-01-2014, 21:50
|
|
|
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: 
Drugi edytor: 
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ć |
_________________
 |
|
|
|
 |
|
|