einige zufällige Punkte

Anfängerfragen zum Programmieren mit PureBasic.
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

einige zufällige Punkte

Beitrag von TheNewOne »

Hallo zusammen,
ich bins mal wieder und komm bei meinem momentanen Projekt nicht vorwärts. /:->
Es geht darum im Vollbildmodus mittels Random() 10 verschiedene Punkte zu zeichnen die, sobald man eine Taste drückt an ihrer Stelle bleiben sollen. Nur mag mir das irgendwie nicht gelingen. Bei meinem folgenden Code werden 9 Punkte übersprungen und nur einer angezeigt :?
Hier mal der Code, vielleicht kann mir ja jemand weiterhelfen.

Code: Alles auswählen

If InitSprite() = 0 
  MessageRequester("Fehler!","Das Spiel konnte nicht gestartet werden!")
EndIf

If InitKeyboard() = 0
  MessageRequester("Fehler!","Das Spiel konnte nicht gestartet werden!")
EndIf 

If OpenScreen(1024, 768, 32,"Random Spawning Points")
  
   SetFrameRate(100)
  
   For i = 0 To 20
     CreateSprite(i, 15, 15)
     StartDrawing(SpriteOutput(i))
     Circle(5, 5, 5, RGB(0, 0, 225))
     StopDrawing()
   Next
 
   Repeat
     
     FlipBuffers()
     ExamineKeyboard()
     ClearScreen(0)
     
     If KeyboardReleased(#PB_Key_F1) 
       start = 1
       points = 0
     EndIf
     
      If start = 1
       If points < 10
          spritex = Random(1024)
          spritey = Random(768)  
          points + 1
        ElseIf points > 10
          start = 0
          points = 10
        EndIf
      EndIf
      
       DisplayTransparentSprite(points, spritex, spritey)
     
    If KeyboardPushed(#PB_Key_Escape)
      End
    EndIf
   
  ForEver
EndIf
Win7, 64bit, PB 4.60
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: einige zufällige Punkte

Beitrag von STARGÅTE »

Liegt daran, dass du mit DisplayTransparentSprite() auch nur einen Punkt (während des Frames) anzeigst.

Code: Alles auswählen

If InitSprite() = 0 
  MessageRequester("Fehler!","Das Spiel konnte nicht gestartet werden!")
EndIf

If InitKeyboard() = 0
  MessageRequester("Fehler!","Das Spiel konnte nicht gestartet werden!")
EndIf 

Structure Punkte
	X.i
	Y.i
EndStructure
NewList Punkte.Punkte() ; Liste für die Punkte

If OpenScreen(1280, 1024, 32,"Random Spawning Points")
  
   SetFrameRate(100)
  
   For i = 0 To 20
     CreateSprite(i, 15, 15)
     StartDrawing(SpriteOutput(i))
     Circle(5, 5, 5, RGB(0, 0, 225))
     StopDrawing()
   Next
 
   Repeat
     
     FlipBuffers()
     ExamineKeyboard()
     ClearScreen(0)
     
     If KeyboardReleased(#PB_Key_F1) 
       ClearList(Punkte()) ; alte Punkte löschen
       For N = 1 To 10
         AddElement(Punkte()) ; Punkt hinzufügen
         Punkte()\X = Random(1024)
         Punkte()\Y = Random(768)
       Next
     EndIf
     
     ForEach Punkte() ; Punkte anzeigen
       DisplayTransparentSprite(points, Punkte()\X,  Punkte()\Y)
     Next
     
    If KeyboardPushed(#PB_Key_Escape)
      End
    EndIf
   
  ForEver
EndIf

PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

Re: einige zufällige Punkte

Beitrag von TheNewOne »

Nun funktioniert es, danke :allright: .
Nur, was bringt der ForEach Befehl genau?
Win7, 64bit, PB 4.60
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: einige zufällige Punkte

Beitrag von STARGÅTE »

PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten