Seite 1 von 1

Schnee der liegenbleibt

Verfasst: 05.09.2005 22:27
von Delle
http://www.odiesoft.de/amstrad/snow.html

Wie bekommt man sowas hin?

Idee von mir wäre jeweils für jede Flocke abzufragen, welche Farbe das nächste Pixel hat. Wenn nicht schwarz, dann aufhören weiterzurieseln und eine neue Schneeflocke starten.

Dürfte doch funzen oder?

Re: Schnee der liegenbleibt

Verfasst: 05.09.2005 23:45
von redacid
Delle hat geschrieben: Idee von mir wäre jeweils für jede Flocke abzufragen, welche Farbe das nächste Pixel hat. Wenn nicht schwarz, dann aufhören weiterzurieseln und eine neue Schneeflocke starten.

Dürfte doch funzen oder?
Dabei gäbe es zwei Probleme:

1. du könntest nur schwarzen Hintergrund benutzen (->langweilig)
2. die Schneeflocken würden nur oben und an den Seiten der Bäume liegenbleiben - vorne würden sie gar nicht erst hinkommen, da sie dafür ja theoretisch einen Weg über das Grün finden müssten, was bei deiner Methode nicht möglich wäre.

Frag mich nicht, wie es besser geht, aber deine Methode hat definitiv noch ein paar Macken... :roll:

Verfasst: 05.09.2005 23:49
von Ynnus
Wie wär's mit einer unsichtbaren Maske auf der die Schneeflocken liegen bleiben?

Verfasst: 06.09.2005 00:06
von Delle
Hm, man bedenke auch z.B. fliegende Objekte auf denen auch Schnee landen soll(te)... ich hab das irgendein ein Snippet aus alten BlitzBasic-Zeiten, werd mal suchen.

Weitere Theorien sind trotzdem willkommen! ;)

Verfasst: 06.09.2005 15:14
von Batze
Hey, das hab ich mal gemacht.
Ich glaub um LinkedLists auszutesten (schon etwas her). :mrgreen:
Mal suchen.

Edit: Mist ich finds nicht. :cry:
Irgendwie waren meine Flocken "klug" genug um rauszufinden ob sie weiter fallen dürfen.
Odiesoft hat's sich ja wohl einfach gemacht, und einfach nur dann weitergefallen wenn der nächste Punkt weiß oder Schwarz ist.
So werden die Bäume wohl so.
Mach am besten eine Maske wie bereits vorgeschlagen, sonst kannst du dich nur an Farben orientieren.

Verfasst: 06.09.2005 15:31
von MLK
ich hab das mal gemacht. entweder du hast eine einzige hintergrundfarbe, dann geht es mit:

if Point(flockenposition) <> hintergrundfarbe UND <> EigeneFarbe UUUND Random(intensität der verteilung auf dem objekt) DANN von FliegendenFlockenListe nach LiegendenFlockenListe verschieben

besser wenn es nur auf einem einfarbigen hintergrund liegen bleiben soll, dann point(objektfarbe) ...

spritepixelcollision() geht natürlich auch

Verfasst: 06.09.2005 16:46
von Delle
Batze hat geschrieben:Odiesoft hat's sich ja wohl einfach gemacht, und einfach nur dann weitergefallen wenn der nächste Punkt weiß oder Schwarz ist.
So werden die Bäume wohl so.
Sicher? Schau mal die Bäume werden auch VORN weiß...

Verfasst: 06.09.2005 16:53
von Batze
Ja, aber nur wenn oben schon Schnee liegt. :wink:

Code: Alles auswählen

Y + 1
Color = point(X,Y)
if Color <> Hintergrundfarbe and Color <> Schneefarbe
  Plot(x,y, Schneefarbe)
  Y = 0
endif
So was in der Richtung müsste den Effekt haben.