Ich versuche gerade mit PB eine Art Warcraft3-Tower-Defense zu realisieren.
Ich habe einen Screen in mehrer Reihen unterteilt. Auf einer Reihe laufen die Gegner und auf der anderen kann man frei Türme platzieren. Nun laufen die Monster von rechts nach links und wenn sie links angekommen sind, werden sie wieder nach rechts 'gebeamt' aber eine Reihe tiefer. Das funktioniert alles schonmal zufriedenstellend. Nun wollte ich aber einbauen, dass mit einem Klick auf einen bereits gebauten Turm dessen Stärke angezeigt wird. Dabei hat sich herausgestellt, dass immer nur der Turm 'aktiviert' wird, der als letztes gebaut wurde und ich weis nicht warum
ich hoffe ihr könnt mir helfen
Der Code der LL's:
Code: Alles auswählen
Structure Gegner
  x.w
  y.w
  Width.w
  Height.w
  Speed.w
  Sprite.w
  HP.w
  HPVOLL.w
  boni.w
EndStructure
NewList Gegner.Gegner()
Structure Tower
  x.w
  y.w
  width.w
  height.w
  delay.w
  rate.w
  range.w
  image.w
  dmg.w
EndStructure
NewList Tower.Tower()
;--------------------------------------------------------------------------------
;ab hier steht alles in der Repeat-Schleife
;--------------------------------------------------------------------------------
;---------Collisions::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------Collisions::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------Collisions::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ResetList(Tower())
While NextElement(Tower())
  ResetList(Gegner())
  While NextElement(Gegner())
    
    IncludeFile "Include_hpleiste.pb"
    If SpriteCollision(Gegner()\Sprite,Gegner()\x,Gegner()\y,4,Tower()\x-75,Tower()\y-75) And Tower()\delay <= 0
      Gegner()\HP - Tower()\dmg
      Tower()\delay = 100    
    EndIf
    If Tower()\delay > 0
      Tower()\delay - 1
    EndIf
    
    
    If SpriteCollision(2,MouseX(),MouseY(),Tower()\image,Tower()\x,Tower()\y)
      Coll + 1
    Else
      Coll = 0
    EndIf 
    
    ;hier will ich die Turmdaten später checken      
    
    If MouseX() > Tower()\x And MouseX() < Tower()\x+Tower()\width
      infomer = 1
    Else
      infomer = 0
    EndIf
    If MouseY() > Tower()\y And MouseY() < Tower()\y+Tower()\height
      infomer2 = 1
    Else
      infomer2 = 0
    EndIf
    If infomer = 1 And infomer2 = 1
      info = 1
    Else 
      info = 0
    EndIf
    ;____________________________________________      
  Wend 
  
Wend
;---------Collisions::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------Collisions::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------Collisions::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------DisplayGegner:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------DisplayGegner:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------DisplayGegner:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ResetList(Gegner())
While NextElement(Gegner())
  
  
  
  DisplayTransparentSprite(Gegner()\Sprite,Gegner()\x,Gegner()\y)
  
  
  Gegner()\x - Gegner()\Speed
  
  
  If Difficulty = 0  
    boni = Gegner()\boni
  ElseIf Difficulty = 1
    boni = Gegner()\boni/2
  ElseIf Difficulty = 2
    boni = 0
  EndIf
  
  
  
  If Gegner()\x <= 0 - Gegner()\width And Gegner()\y = 10
    Gegner()\x = 1024 - Gegner()\width
    Gegner()\y = 210
  ElseIf Gegner()\x <= 0 - Gegner()\width And Gegner()\y = 210
    Gegner()\x = 1024 - Gegner()\width
    Gegner()\y = 410
  ElseIf Gegner()\x <= 0 + Gegner()\width And Gegner()\y = 410
    DeleteElement(Gegner())
    If Difficulty = 0 
      Leben - 1
    ElseIf Difficulty = 1
      Leben - 3
    ElseIf Difficulty = 2
      Leben - 5
    EndIf 
    
  ElseIf Gegner()\HP <= 0
    Gold + Gegner()\boni
    DeleteElement(Gegner())
    
  EndIf
  
  
  
Wend
;---------DisplayGegner:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------DisplayGegner:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;---------DisplayGegner:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----DisplayTower::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----DisplayTower::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----DisplayTower::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ResetList(Tower())
While NextElement(Tower())    
  Start3D()
  DisplaySprite3D(1,Tower()\x-75,Tower()\y-75,5)
  Stop3D()
  DisplayTransparentSprite(Tower()\image,Tower()\x,Tower()\y)
  
  
  
Wend
;-----DisplayTower::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----DisplayTower::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----DisplayTower::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
mfg
Machete@PB