zufällige bewegung von Rechteck [Erledigt]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

MikeDee

Betreff: zufällige bewegung von Rechteck [Erledigt]

BeitragDo, Apr 16, 2009 0:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab lange nicht mehr weiter gemacht und somit einiges wieder vergessen, jedenfalls soll in dem Code ein Rechteck sein, welches sich zufällig bewegt, was es nicht macht. Wo ist der Fehler?
p.s. da steht überall plot, weil das rect ursprünglich ein plot war Laughing
Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

plotx = 400
ploty = 300

Repeat
   Cls
   
   If MilliSecs()-plottimer>500 Then
        plotrichtung=Rand(0,3)
        plottimer=MilliSecs()
   EndIf
   
   If plotrichtung = 0 Then
      plotx=0
      ploty=+10
   ElseIf plotrichtung = 1 Then
      plotx=0
      ploty=-10
   ElseIf plotrichtung = 2 Then
      plotx=+10
      ploty=0
   ElseIf plotrichtung = 3 Then
      plotx=-10
      ploty=0
   EndIf
   
   If plotx > 799 Then
      plotx = 0
   ElseIf plotx < 0 Then
      plotx = 799
   ElseIf ploty > 599 Then
      ploty = 0
   ElseIf ploty < 0 Then
      ploty = 599
   EndIf

   Color 255,255,255
   Rect plotx,ploty,10,10

Until KeyHit(1)
End
Nicht wenige benutzen die Anonymität des Internets um berühmt zu werden.
  • Zuletzt bearbeitet von MikeDee am Fr, Apr 17, 2009 18:28, insgesamt 2-mal bearbeitet

Pummelie

BeitragDo, Apr 16, 2009 0:51
Antworten mit Zitat
Benutzer-Profile anzeigen
flip fehlt

So muss es sein:
Code: [AUSKLAPPEN]

Graphics 800,600,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

plotx = 400
ploty = 300

Repeat
   Cls
   
   If MilliSecs()-plottimer>500 Then
        plotrichtung=Rand(0,3)
        plottimer=MilliSecs()
   EndIf
   
   If plotrichtung = 0 Then
      plotx=0
      ploty=+10
   ElseIf plotrichtung = 1 Then
      plotx=0
      ploty=-10
   ElseIf plotrichtung = 2 Then
      plotx=+10
      ploty=0
   ElseIf plotrichtung = 3 Then
      plotx=-10
      ploty=0
   EndIf
   
   If plotx > 799 Then
      plotx = 0
   ElseIf plotx < 0 Then
      plotx = 799
   ElseIf ploty > 599 Then
      ploty = 0
   ElseIf ploty < 0 Then
      ploty = 599
   EndIf

   Color 255,255,255
   Rect plotx,ploty,10,10
   flip
Until KeyHit(1)
End
It's done when it's done.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Apr 16, 2009 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast Flip vergessen. Ansonsten finde ich die ganzen If-Abfragen schon etwas umständlich. Schneller und etwas übersichtlicher geht die Abfrage mit ein und der selben Variable per Select. Um Fehler zu vermeiden, würde ich auch jede Variable vordeklarieren.

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Local Timer=CreateTimer(60)
Local PlotX=40
Local PlotY=30
Local MS,PlotTimer
Local PlotRichtung

Repeat
   Cls
   
   MS=MilliSecs()
   
   If MS-PlotTimer>500 Then
      PlotRichtung=Rand(0,3)
      PlotTimer=MS
   EndIf
   
   Select PlotRichtung
      Case 0
         PlotY=PlotY+1
      Case 1
         PlotY=PlotY-1
      Case 2
         PlotX=PlotX+1
      Case 3
         PlotX=PlotX-1
   End Select
   
   PlotX=(PlotX+80) Mod 80
   PlotY=(PlotY+60) Mod 60
   
   Color 255,255,255
   Rect PlotX*10,PlotY*10,10,10
   
   WaitTimer Timer
   Flip 0
Until KeyHit(1)
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

MikeDee

BeitragDo, Apr 16, 2009 0:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ach ja, des wars, danke

2. Problem: wie mache ich, dass sich das Rechteck "freier" bewegt und warum startet es nicht in der mitte?
Nicht wenige benutzen die Anonymität des Internets um berühmt zu werden.

Goodjee

BeitragDo, Apr 16, 2009 0:59
Antworten mit Zitat
Benutzer-Profile anzeigen
die position die übergeben wird ist die linke obere ecke des rects, also musst du noch ein bischen abziehen damit es in der mitte gehandled wird
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Apr 16, 2009 1:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil du die Positionsangaben nicht addierst, sondern nur immer komplett neu setzt.

Code: [AUSKLAPPEN]
   If plotrichtung = 0 Then
      plotx=0
      ploty=+10
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

MikeDee

BeitragDo, Apr 16, 2009 1:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If plotrichtung = 0 Then
      plotx=plotx +0
      ploty=ploty+10

ok, so gehts. Das wars dann für heute, morgen arbeite ich mich warscheinlich in Types ein
Nicht wenige benutzen die Anonymität des Internets um berühmt zu werden.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group