Mir war langweilig

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Lukas-P
Beiträge: 262
Registriert: 07.10.2004 12:03

Mir war langweilig

Beitrag von Lukas-P »

Code: Alles auswählen

Structure punkt
  x.f
  y.f
  movey.f
  movex.f
  altx.f
  alty.f
EndStructure
NewList punkt.punkt()

InitSprite()
InitMouse()
InitKeyboard()

OpenScreen(640,480,32,"test")

DefType.f y

Repeat

  ClearScreen(0,0,0)
  
  StartDrawing(ScreenOutput())
  
  ForEach punkt()
    punkt()\altx=punkt()\x
    punkt()\alty=punkt()\y
    punkt()\y=punkt()\y+punkt()\movey
    punkt()\x=punkt()\x+punkt()\movex
    punkt()\movey=punkt()\movey+0.1
    If punkt()\y=>480
      punkt()\movey=-5
      beep_(100,1)
    EndIf
    If punkt()\y=<y
      punkt()\movey=-punkt()\movey+5
      beep_(100,1)
    EndIf
    If punkt()\x=<0
      punkt()\movex=5
      punkt()\movey=punkt()\movey-5
      beep_(100,1)
    EndIf
    If punkt()\x=>640
      punkt()\movex=-5
      punkt()\movey=punkt()\movey-5
      beep_(100,1)
    EndIf
    LineXY(punkt()\altx,punkt()\alty,punkt()\x,punkt()\y,RGB($FF,$FF,$0))
        Plot(punkt()\x,punkt()\y,RGB(255,0,0))
  Next punkt()
  

  Box(MouseX(),MouseY(),20,20,RGB(0,255,0))
  LineXY(0,y,768,y,RGB(0,255,0))
  StopDrawing()
  FlipBuffers()
  
  ExamineMouse()
  If MouseY()>y
  If MouseButton(1)
    AddElement(punkt())
    punkt()\x=MouseX()
    punkt()\y=MouseY()
    punkt()\movey=Random(10)-5
    punkt()\movex=Random(10)-5
  EndIf
EndIf
  
  If yspeed=0
    y=y+0.1
  Else
    y=y-0.1
  EndIf
  
  If y=>420
    yspeed=1
  EndIf
  If y=<0
    yspeed=0
  EndIf
  
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Edit by NicTheQuick: Quote-Tags durch Code-Tags ersetzt
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

:? Man sollte langsam merken, was man nicht machen sollte: Ein Plot außerhalb des Drawing Bereichs. Versuchs mit Box und einer größe von 1x1 oder änder das mit dem Plot mal so dass es nichtmehr außerhalb ist.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
MUDHead
Beiträge: 107
Registriert: 08.09.2004 11:00
Wohnort: Berlin

Beitrag von MUDHead »

Super, freundlich auf den Fehler hingewiesen! :allright:
Malus, qui potest rerum cognoscere.
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

Man sollte langsam merken, was man nicht machen sollte: Ein Plot außerhalb des Drawing Bereichs. Versuchs mit Box und einer größe von 1x1 oder änder das mit dem Plot mal so dass es nichtmehr außerhalb ist.
Versteh ich jetzt nicht... Also wenn ich den Code seh, dann ist doch Plot innerhalb Start- und StopDrawing (oder wurde das nachträglich geändert?). Bzw könnte man Deinen Text auch so verstehn, das eine Box nicht immerhalb Start- und StopDrawing stehn muß?!!
Oder wie haste das nun gemeint?
Benutzeravatar
MUDHead
Beiträge: 107
Registriert: 08.09.2004 11:00
Wohnort: Berlin

Beitrag von MUDHead »

Ich glaube, Lukas hat den Code verändert.

Aber er ist immer noch fehlerhaft.
Muss jetzt aber zur Schule.
Malus, qui potest rerum cognoscere.
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

CSprengel hat geschrieben:
Man sollte langsam merken, was man nicht machen sollte: Ein Plot außerhalb des Drawing Bereichs. Versuchs mit Box und einer größe von 1x1 oder änder das mit dem Plot mal so dass es nichtmehr außerhalb ist.
Versteh ich jetzt nicht... Also wenn ich den Code seh, dann ist doch Plot innerhalb Start- und StopDrawing (oder wurde das nachträglich geändert?). Bzw könnte man Deinen Text auch so verstehn, das eine Box nicht immerhalb Start- und StopDrawing stehn muß?!!
Oder wie haste das nun gemeint?
Außerhalb der DrawingArea(Nicht zwischen 0 und der Bildschirmgröße-1). Innerhalb des Start- StopDrawings ist es ja, aber nicht innerhalb des Bildschirms.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Um kurz einen funktionierenden Code zu bekommen einfach

Code: Alles auswählen

Plot(punkt()\x,punkt()\y,RGB(255,0,0))
mit

Code: Alles auswählen

If punkt()\x > 0 And punkt()\x < 639 And punkt()\y > 0 And punkt()\y < 439
Plot(punkt()\x,punkt()\y,RGB(255,0,0))
EndIf
ersetzen (Zeile 50)


Ist dann aber nach wie vor nicht perfekt programmiert.
Ist zwar schön, ich finde das Abprallverhalten aber noch nicht gerade perfekt.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Antworten