Schnee fällt zu schnell
Übersicht

![]() |
maboxBetreff: Schnee fällt zu schnell |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich wollte hier einen kleinen Schnee-Bildschirmschoner machen aber der Schnee fällt aus unerklärlichen Gründen viel zu schnell dabei hab ich den Speed auf 10 gestellt und auch schon 1 und 0,1 für den speed ausprobiert.
Hier ist der Code: [AUSKLAPPEN] Graphics 640,480,16,1
SetBuffer BackBuffer() AppTitle "Winter" Global landschaft=LoadImage ("schnee.bmp") Dim X(1400), Y(1400), V(1400) MoveMouse 100,100 Repeat If MouseX() <> 100 Then End If MouseY() <> 100 Then End If GetKey() <> 0 Then End If GetMouse() <> 0 Then End Cls DrawImage landschaft,0,0 For i=0 To 1400 X(i)=Rnd(0,640) Y(i)=Rnd(0,480) V(i)=Rnd(1,10) Next For i=0 To 1400 Y(i)=Y(i)+V(i) If Y(i)>480 Then Y(i)=0: V(i)=Rnd(1,10) Plot X(i),Y(i) Next Flip Forever Ich habe auch schon die Zahl der Schneeflocken runter gestellt aber das half auch nichts. |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die einfachste Lösung: ein Delay einbauen (besser einen Timer mit MilliSecs()) | ||
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter! |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau dir nocheinmal ganz genau deinen Code an und achte was du überhaupt machst. Du weist den Pixeln in jeden Frame(Das sind hier so 300 in der Sekunde) immer wieder einen neuen x,y und speed wert zu. D.h. die Pixel werden frame für frame immer wieder wo anders gezeichnet. So kannst du höchstens ein Programm für Epileptiker schreiben ![]() gebe vor der Schleife allen Pixeln einen zufalls- x,y und Speedwert und lasse dann die pixel durch v fallen. Erreichen die Pixel 480 dann stell den Y-Wert wieder auf 0. Gruß, Manu |
||
°_° °.° °~° °v° .. -.- |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mal 'n code, der kann auch die Schnelle verändert werden:
Code: [AUSKLAPPEN] Graphics 800,600,16,1 SetBuffer BackBuffer() SeedRnd MilliSecs() Type s Field x Field y Field a End Type Global s.s Repeat A = Rand(0,2) X = Rand(800) Y = Rand(600) If A = 0 Then s.s = New s s\x = X s\y = 0 s\a = 0 ElseIf A = 1 s.s = New s s\x = X s\y = Y s\a = 1 ElseIf A = 2 s.s = New s s\x = X s\y = Y s\a = 2 EndIf For s.s = Each s Plot s\x,s\y If s\a = 0 Then s\y = s\y + 5 If s\a = 1 Then s\x = s\x - 5:s\y = s\y + 5 If s\a = 2 Then s\x = s\x + 5:s\y = s\y + 5 Next Flip Cls Until KeyHit(1) End Ich hoffe ich konnte 'n bisschen helfen. mfg ~EDIT~ Update ^^ : Code: [AUSKLAPPEN] Graphics 800,600,16,1 SetBuffer BackBuffer() SeedRnd MilliSecs() Type s Field x Field y Field a End Type Global s.s Repeat A = Rand(0,7) X = Rand(800) Y = Rand(600) If A = 0 Then s.s = New s s\x = X s\y = 0 s\a = 0 ElseIf A = 1 s.s = New s s\x = X s\y = Y s\a = 1 ElseIf A = 2 s.s = New s s\x = X s\y = Y s\a = 2 ElseIf A = 3 s.s = New s s\x = X s\y = 600 s\a = 3 ElseIf A = 4 s.s = New s s\x = 0 s\y = Y s\a = 4 ElseIf A = 5 s.s = New s s\x = 800 s\y = Y s\a = 5 ElseIf A = 6 s.s = New s s\x = X s\y = Y s\a = 6 ElseIf A = 7 s.s = New s s\x = X s\y = Y s\a = 7 EndIf For s.s = Each s Plot s\x,s\y If s\a = 0 Then s\y = s\y + 5 If s\a = 1 Then s\x = s\x - 5:s\y = s\y + 5 If s\a = 2 Then s\x = s\x + 5:s\y = s\y + 5 If s\a = 3 Then s\y = s\y - 5 If s\a = 4 Then s\x = s\x + 5 If s\a = 5 Then s\x = s\x - 5 If s\a = 6 Then s\x = s\x + 5:s\y = s\y - 5 If s\a = 7 Then s\x = s\x - 5:s\y = s\y - 5 Next Flip Cls Until KeyHit(1) End ![]() |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es geht auch kürzer:
Jede schneeflocke hat sogar eigenen speed zwischen 1 und 3 xD Zitat: Type schnee
Field x,y Field speed End Type Graphics 800,600,16,1 SetBuffer BackBuffer() Color 255,255,255 anzahlschnee=2000 bildschirmbreite=800 bildschirmhohe=600 For t=1 To anzahlschnee s.schnee = New schnee s\x = Rnd(bildschirmbreite) ;veränderbar (je nach auflösung s\y = Rnd(-800,0) s\speed=Rnd(1,3) Next While Not KeyDown(1) Cls For s.schnee = Each schnee Plot s\x,s\y s\y=s\y+s\speed If s\y>bildschirmhohe Then s\y = 0;veränderbar^^ s\x = Rnd(bildschirmbreite) EndIf Next Flip Wend |
||
Twitter
Download Jewel Snake! Windows|Android |
Problemchen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm, so fällt der Schnee immer gleich schnell:
Code: [AUSKLAPPEN] Type schnee
Field x#,y# Field speed# End Type Graphics 800,600,16,1 SetBuffer BackBuffer() Color 255,255,255 Global startzeit,schleifenzeit anzahlschnee=2000 bildschirmbreite=800 bildschirmhohe=600 For t=1 To anzahlschnee s.schnee = New schnee s\x# = Rnd(bildschirmbreite) ;veränderbar (je nach auflösung s\y# = Rnd(-800,0) s\speed#=Rnd#(.1,.3) Next While Not KeyDown(1) startzeit=MilliSecs() Cls For s.schnee = Each schnee Plot s\x,s\y s\y#=s\y#+frametimer#(s\speed#) If s\y#>bildschirmhohe Then s\y# = 0;veränderbar^^ s\x# = Rnd(bildschirmbreite) EndIf Next Flip schleifenzeit=MilliSecs()-startzeit Wend Function frametimer#(bewegung#) wert# = bewegung# * (schleifenzeit) Return wert# End Function ![]() Problemchen |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
In der Realität fällt der Schnee aber NIE gleichschnell ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hässlich^^
Es geht auch noch viel kürzer ![]() ![]() Code: [AUSKLAPPEN] Graphics 640,480,16,0 : SetBuffer BackBuffer() : AppTitle "Winter" anz = 500 : Dim s(anz,3) For a=1 To anz s(a,0) = Rnd(640) ; X s(a,1) = Rnd(480) ; Y s(a,2) = Rnd(1,3) ; Fallgeschw. s(a,3) = Rnd(-2,2) ; Windeinfluß Next fps=CreateTimer(50) While Not KeyHit(1) WaitTimer(fps) : Cls For i=1 To anz s(i,0) = s(i,0) + Rnd(s(i,3)) s(i,1) = s(i,1) + s(i,2) c = s(i,2)*75 Color c,c,c : Oval s(i,0),s(i,1),s(i,2),s(i,2) If s(i,1)>480 Then s(i,0)=Rnd(640) : s(i,1)=0 Next Flip Wend |
||
°_° °.° °~° °v° .. -.- |
Problemchen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Tankbuster: meinte ja auch unabhängig der FPS ![]() |
||
![]() |
maboxBetreff: Danke ! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen vielen dank ihr alle !!! ![]() |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group