ForEach Problem

Anfängerfragen zum Programmieren mit PureBasic.
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

ForEach Problem

Beitrag von Ghost »

Hi
Ich habe grad an einem kleinen Weltraumshooter geschrieben aber jetzt habe ich ein Problem mit dem ForEach. Pb gibt immer eine FehlerMeldung an "ForEach() is not a function,an arrey or linked list" (wenn ich das programm starten will) aber ich habe doch

Code: Alles auswählen

NewList RoketI.RoketI()  
    
dámit ist es doch "an list" oder ?
Kann mir bitte jemand helfen?
ich stell den code mal rein

Code: Alles auswählen

InitMovie()
InitSprite()
InitKeyboard()
InitMouse()
InitSound()

OpenScreen(1024,768,32,"name")

Global PlayerX.w 
Global PlayerY.w


PlayerX = 300
PlayerY = 300

LoadSprite(0,  "F:\Dokumente und Einstellungen\???\Desktop\flayer\Bilder\player.bmp")
LoadSprite(1,"F:\Dokumente und Einstellungen\???\Desktop\flayer\Bilder\RoketI.bmp")




  Structure RoketI   
  x.l                  
  y.l
  speedX.l
  speedY.l
EndStructure

NewList RoketI.RoketI()  
                                  
Procedure AddRoketI(x, y, speedX, speedY)  ;Eine Prozedur zur Vereinfung der Weiteren Arbeit
  AddElement(RoketI())      
  RoketI()\x = x              
  RoketI()\y = y    
  RoketI()\speedX = speedX
  RoketI()\speedY = speedY 
EndProcedure

  
  
  
  
Repeat 
ExamineMouse()
 ExamineKeyboard()
 ClearScreen(0,255,0) 
  DisplayTransparentSprite(0,PlayerX,PlayerY)
 
 
 
 
 ; Steuerung
 
If KeyboardPushed(#PB_key_Left)
 PlayerX - 2
 EndIf 
If KeyboardPushed(#PB_key_Right)
PlayerX + 2
 EndIf 
If KeyboardPushed(#PB_key_up)
PlayerY - 2
 EndIf 
If KeyboardPushed(#PB_key_Down)
PlayerY + 2
 EndIf 
If KeyboardPushed (#PB_key_LeftControl)
  AddRoketI(playerX+25, playerY-3, 10, 0)   
     EndIf  
  


   ForEach(RoketI())
    If      RoketI()\x > 800   : DeleteElement(RoketI())
    ElseIf RoketI()\x < 0     : DeleteElement(RoketI())
    ElseIf RoketI()\y > 600   : DeleteElement(RoketI())
    ElseIf RoketI()\y < 0     : DeleteElement(RoketI())
    EndIf
  Next

ForEach(RoketI())
    DisplayTransparentSprite(RoketI, RoketI()\x, RoketI()\y)   
    RoketI()\x + RoketI()\speedX
    RoketI()\y + RoketI()\speedY
  Next 
Return 
    
FlipBuffers()
Until KeyboardPushed(1):End
    
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

lass mal die Klammer weg.

Code: Alles auswählen

ForEach RoketI()
Grüße ... Kiffi
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

dann schreibt er RoketI is not a valid operator
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 »

Welche PB Version?
Für Version 4 fehlt das Global vor NewList
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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Ghost hat geschrieben:dann schreibt er RoketI is not a valid operator
also ich bekomme hier unter 3.94 keinen Fehler. (bis auf das die Bilder nicht
vorhanden sind).

Grüße ... Kiffi
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

Leider weiß ich net welche version ich habe (ist nirgends angegeben)
das Einzige was auf der verpackung angegeben is ist PureBasic Game Programmers Edition
auf der Seite kannst du es dir ansehen da habe ich es bestellt
http://www.amazon.de/exec/obidos/ASIN/3 ... 81-1813021
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

dann liegs warscheinlich doch an der Version ich versuchs mal schnell mit global vor der liste

(Edit)
dies hatt ein Syntex error zur folge
Zuletzt geändert von Ghost am 18.05.2006 18:42, insgesamt 1-mal geändert.
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 »

Dann solltest Du Deine Frage vielleicht mal hier stellen:
http://www.purebasic.fr/german/viewtopic.php?t=8152

Deine Version ist 3.3
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
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

ok danke
ich stells gleich rein
(edit)
ich warte doch erstmal noch weil das éin wenig dähmlich ist so ein tehma mitten in eine Diskusion zu stellen(find ich zumindest)
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 »

Schreib mal in Deine Signatur, das Du Version 3.3 benutzt, dann kriegste
eher die richtige Hilfe, die Unterschiede sind ja doch sehr groß!
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
Antworten