Fehler im Sourcecode mit Plot()

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

naja, gesachmacksfrage <)
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Beitrag von Andreas21 »

:o

Ich habe WinXP mit SP1 und einer Geforce FX5200

Ich habe mir mal den Code bei mir gestartet aber bekomme nur ein Schwartzes bild mit 100% CPU aus lasstung :?

Jetzt meine Frage:

Bin ich zu blöde oder ist da doch was nicht ok :o

Code: Alles auswählen

InitSprite() 
InitMouse() 
InitKeyboard() 
OpenScreen(800,600,32,"") 

Tim1.l 
Tim2.l 

Structure shoot 
x.f 
y.f 
rx.w 
ry.w 
richtungx.f 
richtungy.f 
multi.f 
farbe.l 
EndStructure 

NewList shoots.shoot() 

For n=0 To 19 
    AddElement(shoots()) 
    shoots()\x = 400 
    shoots()\y = 300 
    shoots()\farbe=Random($FFFFFF) 
    shoots()\richtungx = (MX-400) 
    shoots()\richtungy = (MY-300) 
    shoots()\multi = Sqr(Pow(speed,2)/(Pow(shoots()\richtungx,2)+Pow(shoots()\richtungy,2))) 
    shoots()\richtungx = shoots()\richtungx * shoots()\multi 
    shoots()\richtungy = shoots()\richtungy * shoots()\multi 
Next 

Tim1 = ElapsedMilliseconds() 
For n= 0 To 1000000 
    StartDrawing(ScreenOutput()) 
        ForEach Shoots() 
            Plot(Shoots()\x,Shoots()\y,Shoots()\Farbe) 
        Next 
    StopDrawing() 
Next 
Tim1 = ElapsedMilliseconds()-Tim1 
Debug Tim1 

Tim2 = ElapsedMilliseconds() 
For n= 0 To 1000000 
    StartDrawing(ScreenOutput()) 
        ForEach Shoots() 
            FrontColor(Red(shoots()\farbe), Green(shoots()\farbe), Blue(shoots()\farbe)) 
            Plot(shoots()\x,shoots()\y) ;Circle(shoots()\x,shoots()\y,1,shoots()\farbe) 
        Next 
    StopDrawing() 
Next 
Tim2 = ElapsedMilliseconds()-Tim2 
Debug Tim2 

End
Zuletzt geändert von Andreas21 am 25.11.2004 16:26, insgesamt 1-mal geändert.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

weder noch. nach der hälfte der tests erscheint das debug fenster, am ende des programms geht der schwarze screen wieder weg.

wenn du nics version benutzt, bleibt der schwarze screen während des ganzen tests, erst am ende kommt der debugger.

das ist dafür, das der test wirklich die performance der routine testet, und nicht verfälscht durch syncs, was bei nem flipbuffers zwangsweise passieren würde. wenn du zu lange warten musst, kannst du auch bei beiden schleifen die 1000000 durch 100000 ersetzen, denke aber daran, dass zu erwähnen, wenn du dein ergebnis postest :wink:

PS: wenn du dir nics erbebnisse anguckst, siehst du, dass er fast 2minuten vor nem schwarzen screen gesessen hat :mrgreen:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Beitrag von Andreas21 »

Ok Danke :)

P.S.
Der Code von Kooky am Anfang leuft bei mir auch Super :allright:

Code: Alles auswählen

InitSprite() 
InitMouse() 
InitKeyboard() 
OpenScreen(800,600,32,"") 

Global speed.f 
speed = 5 

Structure shoot 
  x.f 
  y.f 
  rx.w 
  ry.w 
  richtungx.f 
  richtungy.f 
  multi.f 
  farbe.l 
EndStructure 

NewList shoots.shoot() 

Repeat 

ExamineKeyboard() 
ExamineMouse() 

If MouseButton(1) 
  AddElement(shoots()) 
  shoots()\x = 400 
  shoots()\y = 300 
  shoots()\farbe=Random($FFFFFF) 
  shoots()\richtungx = (MouseX()-400) 
  shoots()\richtungy = (MouseY()-300) 
  shoots()\multi = Sqr(Pow(speed,2)/(Pow(shoots()\richtungx,2)+Pow(shoots()\richtungy,2))) 
  shoots()\richtungx = shoots()\richtungx * shoots()\multi 
  shoots()\richtungy = shoots()\richtungy * shoots()\multi 
EndIf 
  
ForEach Shoots() 
  Shoots()\x + Shoots()\richtungx 
  Shoots()\y + Shoots()\richtungy 
  Shoots()\rx = Shoots()\x 
  Shoots()\ry = Shoots()\y 
  If Shoots()\x < 0 Or Shoots()\x > 800 Or Shoots()\y < 0 Or Shoots()\y > 600 
    DeleteElement(Shoots()) 
    NextElement(Shoots()) 
  EndIf 
Next 

StartDrawing(ScreenOutput()) 
Plot(MouseX(),MouseY(),RGB(255,0,100)) 
ForEach Shoots() 
  Plot(Shoots()\x,Shoots()\y,Shoots()\Farbe) ;Circle(Shoots()\x,Shoots()\y,1,Shoots()\Farbe) 
Next 
Circle(400,300,10,$FF0010) 
StopDrawing() 

FlipBuffers() 
Delay(10) 
ClearScreen(0,0,0) 

Until KeyboardPushed(#pb_key_escape) 
End
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@andreas21 & all
bitte dran denken, die max-koordinaten zu korrigieren (s.o.)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten