IF und ENDIF verhindern Programmablauf

Anfängerfragen zum Programmieren mit PureBasic.
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

IF und ENDIF verhindern Programmablauf

Beitrag von PB42 »

Hallo,

ich will ein Programm schreiben, mit dem man Funktionsgraphen anzeigen kann. Zunächst geht nur um eine einzige Linie. Weil aber die Funktion Plot() außerhalb des Anzeigebereichs eine Fehlermeldung auslöst, habe ich mit If und Endif die entsprechende Begrenzung eingebaut. Das Programm läuft dann aber selbst mit EventID = WindowEvent() nur dann, wenn man das Fenster mit der Maus verschiebt. Wie kriegt man das flüssig? Der Code:

Code: Alles auswählen

InitSprite()
OpenWindow(0,0,0,800,600,"", #PB_Window_SystemMenu |#PB_Window_ScreenCentered |#PB_Window_MinimizeGadget |#PB_Window_MaximizeGadget)
OpenWindowedScreen(WindowID(0),200,0,600,600,0,0,0)
CreateGadgetList(WindowID(0))

StringGadget(0,50,50,100,20,"")

x = -1
y = 100

Repeat
EventID = WindowEvent()
  
  If x < 599
  x = x + 1 
  EndIf 
      
  StartDrawing(ScreenOutput())
  Line(0,300,600,0,RGB(250,250,250))
  Line(300,0,0,600,RGB(250,250,250))    
  Plot(x,y,RGB(250,0,0)) 
  StopDrawing()
  
Until eventID = #PB_Event_CloseWindow  
Danke für Hilfe.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Du solltest auch die Buffer flippen...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Und EventID = WaitWindowEvent(10) damits nicht 100% CPU verbraucht
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Beitrag von PB42 »

BOAH, da hab ich aber echt geschlafen mit dem vergessenen Flipbuffers() und WaitWindowEvent() mit Timeout ist mir natürlich auch lieber. Danke für die Antworten :D

PB42
Antworten