Kann man Stellen in einer Struktur mathematisch ansprechen?
-
- Beiträge: 49
- Registriert: 21.06.2007 14:40
Kann man Stellen in einer Struktur mathematisch ansprechen?
Hi,
ich habe ein Problem. Und zwar habe ich eine Struktur mit insgesamt 8 Werten erstellt. Die einzelnen Werte möchte ich mathematisch ansprechen.
Die Struktur sieht so aus:
Structure Armeewerte
KS_Ebene.b
KS_Wald.b
KS_Huegel.b
KS_Sumpf.b
KS_Bollwerk.b
Defensivwert.b
Kontrollzone.b
Bewegung.b
EndStructure
Gibt es, wenn ich beispielsweise den 5. Wert der Struktur (KS_Bollwerk)ansprechen will (nicht mit dem Variablennahmen sondern mit dem Stellenwert 5), da eine Möglichkeit???
Ich kann ansonsten ein Array nicht mit der Struktur verbinden.
Mit Dank im voraus...
Michael
ich habe ein Problem. Und zwar habe ich eine Struktur mit insgesamt 8 Werten erstellt. Die einzelnen Werte möchte ich mathematisch ansprechen.
Die Struktur sieht so aus:
Structure Armeewerte
KS_Ebene.b
KS_Wald.b
KS_Huegel.b
KS_Sumpf.b
KS_Bollwerk.b
Defensivwert.b
Kontrollzone.b
Bewegung.b
EndStructure
Gibt es, wenn ich beispielsweise den 5. Wert der Struktur (KS_Bollwerk)ansprechen will (nicht mit dem Variablennahmen sondern mit dem Stellenwert 5), da eine Möglichkeit???
Ich kann ansonsten ein Array nicht mit der Struktur verbinden.
Mit Dank im voraus...
Michael
da du ja alle Var in der Structur als b hast
kannst du so an die Zahlen kommen :
MeinSprungWert wäre dann für KS_Ebene : 0 und KS_Sumpf: 3
schreiben ist das genauso:
kannst du so an die Zahlen kommen :
Code: Alles auswählen
Test.Armeewerte
PeekB(@Test+MeinSprungWert)
schreiben ist das genauso:
Code: Alles auswählen
PokeB(@Test+MeinSprungWert, MeinByteWert)
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 49
- Registriert: 21.06.2007 14:40
Vielleicht hilft das ja:
Code: Alles auswählen
Structure Armeewerte
KS_Ebene.b
KS_Wald.b
KS_Huegel.b
KS_Sumpf.b
KS_Bollwerk.b
Defensivwert.b
Kontrollzone.b
Bewegung.b
EndStructure
Global Dim Armeewerte.Armeewerte(100)
oKS_Ebene = OffsetOf(Armeewerte\KS_Ebene) : Debug oKS_Ebene
oKS_Sumpf = OffsetOf(Armeewerte\KS_Sumpf) : Debug oKS_Sumpf
oBewegung = OffsetOf(Armeewerte\Bewegung) : Debug oBewegung
; Ansprache über Feldnamen
For ix = 1 To 100
Armeewerte(ix)\KS_Ebene = ix / 3
Armeewerte(ix)\KS_Sumpf = ix / 2
Armeewerte(ix)\Bewegung = ix
Next
; Ansprache über Offsets
Debug PeekB(@Armeewerte(53) + oKS_Ebene)
Debug PeekB(@Armeewerte(100) + oKS_Sumpf)
Debug PeekB(@Armeewerte(15) + oBewegung)
; Ansprache schreibend
PokeB(@Armeewerte(15) + oBewegung, 44)
Debug PeekB(@Armeewerte(15) + oBewegung)
End
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
also, ein 2-dimensionales array für acht arbeen pro spieler?Zweihänder hat geschrieben:Global Dim Armee_Spieler.Armeewerte(8,Spieleranzahl)
mal ganz davon ab, was genau willst du denn machen, worum geht es dir...?
klar geht es, die elemente über formeln anzusprechen, aber je nachdem gibt es sinnvollere lösungen.
zum beispiel ne SturctureUnion
(so ungefähr müßte das aussehen, bin nicht sicher obs richtig ist, hab grad keine zeit, sonst brennt mirs essen an)
Code: Alles auswählen
Structure WerteArray
Wert.b[8]
EndStructure
Structure WerteName
KS_Ebene.b
KS_Wald.b
KS_Huegel.b
KS_Sumpf.b
KS_Bollwerk.b
Defensivwert.b
Kontrollzone.b
Bewegung.b
EndStructure
Structure Armeewerte
StructureUnion
w.WerteArray
n.WerteName
EndStructureUnion
EndStructure
damit wäre es dann möglich, mit elementnummer und strukturteil-nummer anzusprechen.
dazu muss man sich nicht unbedingt einen abpointern, dafür ist ne Union da....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 49
- Registriert: 21.06.2007 14:40
Also, ein zweidimensionales Array mit 8 Einheitentypen und 4 Spielern (Dim Armee_Spieler.Armeewerte(8,4)).
Ich habe nebenher noch ein 2 dimensionales Array mit verschiedenen Untergrundtypen laufen, die einfach mittels einer Zahl in dem Array entahlten sind. Das stellt die Karte dar (Dim Karte)
1=Ebene, 2=Wald,3=Hügel,usw.
Eine auf der Karte befindliche Einheit soll die umliegenden Felder mit seinen Werten in der Struktur beeinflussen. KS-Ebene gibt die Kampfstärke auf der Ebene an usw.
Jetzt soll folgende Abfrage erfolgen: Um eine Einheit herum sollen alle Felder abgefragt werden. Handelt es sich beispielsweise bei dem Feld rechts von der Einbheit um eine Ebene, so soll der Wert KS_Ebene der jeweiligen Einheit auf die Kampfstärke des Feldes gerechnet werden.
Ich stelle mir die Abfrage so vor (auch wenn sie so nicht klappt):
If karte(i+1,j)=1 (1 steht für Ebene)
Kampfstaerke(i+1,j)=Kampfstaerke(i+1,j)+Armee_Spieler(Einheit(i,j),Spieler)\ *** und hier soll die Stelle in der Struktur gewählt werden, also auch die erste (KS_Ebene)
Endif
Zur Info: Ich habe parallel noch ein zweidimensionales Array für die Einheiten (Dim Einheit) und ein dreidimensionales Array für die Kampfstärke (Dim Kampfstaerke)
Ich habe nebenher noch ein 2 dimensionales Array mit verschiedenen Untergrundtypen laufen, die einfach mittels einer Zahl in dem Array entahlten sind. Das stellt die Karte dar (Dim Karte)
1=Ebene, 2=Wald,3=Hügel,usw.
Eine auf der Karte befindliche Einheit soll die umliegenden Felder mit seinen Werten in der Struktur beeinflussen. KS-Ebene gibt die Kampfstärke auf der Ebene an usw.
Jetzt soll folgende Abfrage erfolgen: Um eine Einheit herum sollen alle Felder abgefragt werden. Handelt es sich beispielsweise bei dem Feld rechts von der Einbheit um eine Ebene, so soll der Wert KS_Ebene der jeweiligen Einheit auf die Kampfstärke des Feldes gerechnet werden.
Ich stelle mir die Abfrage so vor (auch wenn sie so nicht klappt):
If karte(i+1,j)=1 (1 steht für Ebene)
Kampfstaerke(i+1,j)=Kampfstaerke(i+1,j)+Armee_Spieler(Einheit(i,j),Spieler)\ *** und hier soll die Stelle in der Struktur gewählt werden, also auch die erste (KS_Ebene)
Endif
Zur Info: Ich habe parallel noch ein zweidimensionales Array für die Einheiten (Dim Einheit) und ein dreidimensionales Array für die Kampfstärke (Dim Kampfstaerke)
Klingt interessant, sowas hätte ich auch schon brauchen können. Mal sehen ob ich das raffe mit dem sich_nicht_einen_abpointern.Kaeru Gaman hat geschrieben:damit wäre es dann möglich, mit elementnummer und strukturteil-nummer anzusprechen.
dazu muss man sich nicht unbedingt einen abpointern, dafür ist ne Union da....

Zuletzt geändert von rolaf am 01.08.2007 14:02, insgesamt 1-mal geändert.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
-
- Beiträge: 49
- Registriert: 21.06.2007 14:40
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ja verstehe...
also so in der richtung
Kampfstärke + Verteidigung( Bodenart )
grundsätzlich ist deine idee da schon richtig, das mit nem offset (hier: bodenart)
zu lösen anstatt mit nem haufen Ifs oder Cases.
das müßte eigentlich mit der Union auch funktionieren, wenn ich die so halbwegs richtig hingeschmiert hab.
die frage ist allerdings, ob du wirklich für jede figur einzeln der wert mitschleppen mußt...
oder ist das eher ein Typen-Array, also,
notierst du da nur die kampfwerte für die möglichen einheiten jedes spielers,
und jeder spieler kann 8 einheitentypen haben, und die einheitentypen können bei jedem spieler unterschiedlich sein?
weil ich denk grad, ein extra-array würde da reichen:
Kampfstaerke + Verteidigung( Einheitentyp, Bodenart )
weil ja eigentlich egal ist, ob das jetzt speerkämpfer Nr.1, speerkämpfer Nr.4 oder speerkämpfer Nr.13 ist,
maßgeblich ist nur, dass es ein speerkämpfer ist, und dass er in ner ebene steht.
also so in der richtung
Kampfstärke + Verteidigung( Bodenart )
grundsätzlich ist deine idee da schon richtig, das mit nem offset (hier: bodenart)
zu lösen anstatt mit nem haufen Ifs oder Cases.
das müßte eigentlich mit der Union auch funktionieren, wenn ich die so halbwegs richtig hingeschmiert hab.
die frage ist allerdings, ob du wirklich für jede figur einzeln der wert mitschleppen mußt...
oder ist das eher ein Typen-Array, also,
notierst du da nur die kampfwerte für die möglichen einheiten jedes spielers,
und jeder spieler kann 8 einheitentypen haben, und die einheitentypen können bei jedem spieler unterschiedlich sein?
weil ich denk grad, ein extra-array würde da reichen:
Kampfstaerke + Verteidigung( Einheitentyp, Bodenart )
weil ja eigentlich egal ist, ob das jetzt speerkämpfer Nr.1, speerkämpfer Nr.4 oder speerkämpfer Nr.13 ist,
maßgeblich ist nur, dass es ein speerkämpfer ist, und dass er in ner ebene steht.
Zuletzt geändert von Kaeru Gaman am 01.08.2007 14:13, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.