Problem mit type, oder was ganz anderes

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Lorion

Betreff: Problem mit type, oder was ganz anderes

BeitragDi, Jul 03, 2007 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schreibe gerade an einem rundenbasierenden Strategiespiel und bei der Funktion in der die Einheiten bewegt werden sollen (per Tastatur) habe ich einige Probleme.

Alle Figuren einer Einheit können nacheinander bewegt werden. Die nächste Figur ist jeweils dran wenn entweder Num5 gedrückt wird oder die Bewegungspunkte 0 erreichen.
In meinem ersten Anlauf lief garnichts, ich vermute das es daran lag das in der Bewegungsfunktion alle Figuren durch eine FOR EACH Schleife liefen, die Bewegungsfunktion aber auch die Grafikfunktion aufrief, die ihrerseits ebenfalls diese Variable mit einer FOR EACH Schleife durchlief...

Das Problem versuche ich zu umgehen indem die die unitmove() eine Hilfsvariable erstellt, nämlich useFigur.unitInfo, und nur die Einträge kopiert die auch zu Figuren gehören die bewegt werden sollen ("If figur\einheit=activunit Then").

Aber irgendwie ignoriert das Programm meine Bemühungen, nachdem alle Figuren bewegt wurde die bewegt werden sollen kann man auch alle anderen bewegen, und dann die ersten nocheinmal!

Ich habe Printbefehle gesetzt weil ich dachte das useFigur.unitInfo alle Figur.unitInfo sind, aber es werden wirklich nur die 10 erstellt die auch bewegt werden sollen.

Ich bin am Ende! Bitte helft mir!

Die Types:
Zitat:
Type bewegungmalen
Field x%,y%
End Type

Type unitInfo
Field einheit%,armee%,typ%
Field name$
Field xpos%,ypos%
Field BW%,AT%,PA%,RS%,GE%,LE%,BWr#
End Type



Code: [AUSKLAPPEN]
;Einheit bewegen
Function MoveUnit(nr%)
Local startBW%,restBW%,startX%,startY%,newX%,newY%,bewegungmalen.bewegungmalen
Local useFigur.unitInfo

For figur.unitInfo=Each unitInfo
If figur\einheit=activunit Then
   useFigur.unitInfo=New unitInfo
   useFigur\xpos=figur\xpos
   useFigur\ypos=figur\ypos
   useFigur\BWr =figur\BWr
   useFigur\einheit =figur\einheit
   Print usefigur\einheit+" --- "+activunit+"---"+n
  n=n+1
  Delay 350
EndIf
Next

For useFigur.unitInfo=Each unitInfo

  startBW=useFigur\BWr*10
  restBW =useFigur\BWr*10
  startX =useFigur\xpos
  startY =useFigur\ypos
  newX   =useFigur\xpos
  newY   =useFigur\ypos

  Repeat

     If KeyHit(77) Then
      bewegungmalen.bewegungmalen=New bewegungmalen
      bewegungmalen\x=newX
      bewegungmalen\y=newY
      
      newX=newX+10
      restBW=restBW-10
     EndIf
   
   
  showAlles()

  Viewport 0,0,xVP,yVP
  Color 0,0,0
Text 20,20,activunit
Text 20,40,nr
Text 20,60,usefigur\einheit

   For bewegungmalen.bewegungmalen=Each bewegungmalen
     Plot Xmap+bewegungmalen\x+10,Ymap+bewegungmalen\y+10
   Next

   Rect Xmap+newX,Ymap+newY,20,20,0

  Flip
  Until KeyHit(28) Or KeyHit(76) Or restBW=0

Next
End Function
[/quote][/code]
 

Lorion

BeitragDi, Jul 03, 2007 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry für den Doppelpost!
Aber mir ist grade noch was aufgefallen:

Solange "useFigur\einheit =figur\einheit" im Code steht geht garnichts, da die Schleife unendlich lang weiter läuft.

UND:

Code: [AUSKLAPPEN]
For useFigur.unitInfo=Each unitInfo
Print usefigur\einheit
Delay 150
Next


Als Kontrolle nach dem einlesen von useFigur hat ergeben, dass doch 30 Types erstellt werden, und zwar 10 bei denen usefigur\einheit=1 ist, 10 mit usefigur\einheit=2 und 10 mit usefigur\einheit=0, und das obwohl die If-Anweisung nur solche Figur kopieren soll bei denen Einheit=1 ist.
Besonders unverständlich ist mir das es möglich ist usefigur\einheit auszulesen (und es 3 unterschiedliche Werte gibt), obwohl das Programm nur soweit kommt wenn "useFigur\einheit =figur\einheit" nicht existiert!!!


MfG,
Lorion

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group