Discuss Scratch

Przemek20
Scratcher
100+ posts

Labirynt inna wersja [Pytanie]

Mamy taki labirynt



i jakiegoś duszka. Pytanie jest takie jak zrobić aby ten duszek
losował swoje położenie ale tak jego pozycja x i y była idealnie w środku kratki.



Wiemy że labirynt ma 480/360 pikseli a jedna kratka 40/40 pikseli.
Podpowiedzcie jak to zrobić.

Pozdrawiam Przemek


Last edited by Przemek20 (March 15, 2015 10:11:03)


None
piotr_bala
Scratcher
100+ posts

Labirynt inna wersja [Pytanie]

Mamy dwa problemy:
1. Jak umieścić duszka w środku pola (czerwonym lub zielonym)
2. Jak wybrać tylko pola zielone.

Zamiast umieszczać duszka w pikselach możemy ponumerować pola a następnie przeliczyć numer pola na piksele.
Plansza ma 12x9 pól, tak więc pola możemy numerować od 1 do 12 w poziomie i od 1 do 9 w pionie.
Dowolne pole możemy otrzymać losując 2 liczby - od 1 do 12 i od 1 do 9. Na przykład n=4 i m=5.

Teraz musimy to przeliczyć na piksele. Plansza numerowana jest -230 do 230 w poziomie i -180 do 180 w pionie.
Środek pola najbardziej na lewo to -230+20= -210.
Środek pola najbardziej na dole to -180+20= -160.

Środek kolejnego pole to -210 + (n-1)*40 w poziomie i -160+(m-1)*40 w pionie.

Teraz pozostaje sprawdzić czy pole jest zielone (ok) czy czerwone (losujemy jeszcze raz..)

Przemek20
Scratcher
100+ posts

Labirynt inna wersja [Pytanie]

piotr_bala wrote:

(…)Środek kolejnego pole to -210 + (n-1)*40 w poziomie i -160+(m-1)*40 w pionie.
Czyli ten skrypt ma wyglądać tak?:
ustaw [n] na (losuj od (1) do (9))
ustaw [m] na (losuj od (1) do (12))
idź do x: (((-210) + ((m) - (1))) * (40)) y: (((-160) + ((n) - (1))) * (40))

Aha plansza nie jest numerowana od -230 do 230 tylko -240 do 240.

Last edited by Przemek20 (March 15, 2015 18:33:50)


None
Opisek
Scratcher
1000+ posts

Labirynt inna wersja [Pytanie]

@up Nawet dobrze kombinujesz, ale ja to u siebie zrobiłem tak:
idź do x: ((([podłoga v] z ((losuj od (-240) do (240)) / (40))) * (40)) + (5)) y: (*::control)
(*::control)
(([podłoga v] z ((losuj od (-180) do (180)) / (40))) * (40)
Jeden blok zawsze lepszy od trzech Ten blok będzie u cb pasował, ale to grozi umieszczeniem w podziękowaniach :p

To +5 musisz sobie sam ustalić, bo każdy duszek ma w innym miejscu środek i czasem środek jest np. na krawędzi kratki. Po to jest właśnie +5, żeby duszek miał środek na środku, a nie na krawędzi

Tutaj masz działanie w praktyce (nietoperz losuje kratkę)

P.S.
Ta * po to, bo się blok nie zmieścił.


Last edited by Opisek (March 15, 2015 21:38:33)

Przemek20
Scratcher
100+ posts

Labirynt inna wersja [Pytanie]

Dzięki za gotowy skrypt U mnie w duszku musiałem +21 żeby w środku idealnie był .

None

Powered by DjangoBB

Standard | Mobile