Problem mit type, oder was ganz anderes
Übersicht

LorionBetreff: Problem mit type, oder was ganz anderes |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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
[/quote][/code]
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 |
||
Lorion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group