Kann man Stellen in einer Struktur mathematisch ansprechen?

Anfängerfragen zum Programmieren mit PureBasic.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Ich muss "lediglich" den Wert aus Karte(i,j) mit der Position in der Struktur gleichgesetzt bekommen.

Beispiel:
Karte (i,j)=1 ---> nun soll die 1. Variablenposition aus der Struktur gewählt werden.
Karte (i,j)=2 ---> nun soll die 2. Variablenposition aus der Struktur gewählt werden.
usw.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Normalerweise haben natürlich Einheiten der jeweiligen Spieler dieselben Werte. Ich wollte das allerdings variabler halten, so dass ein Speerträger des Spieler 1 andere Werte hat als der des Spieler 2. Also haben die Figuren alle verschiedene Werte, so dass das mit einem weiteren Array wohl nicht funzen würde.
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 »

Gehts nicht auch ohne Strukture, mit einem 3 Dimensioalem Array, statt 2?

Code: Alles auswählen

Enumeration 1
  #KS_EBENE
  #KS_WALD
  #KS_HUEGEL
  #KS_SUMPF
  #KS_BOLLWERK
  #DEFENSIVWERT
  #KONTROLLZONE
  #BEWEGEUNG
EndEnumeration

AnzahlSpieler = 5
Global Dim AW(#PB_Compiler_EnumerationValue, 8, AnzahlSpieler.l) 
AW(#KS_EBENE, 1, 2) = ebene3
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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Zweihänder hat geschrieben:Normalerweise haben natürlich Einheiten der jeweiligen Spieler dieselben Werte. Ich wollte das allerdings variabler halten, so dass ein Speerträger des Spieler 1 andere Werte hat als der des Spieler 2. Also haben die Figuren alle verschiedene Werte, so dass das mit einem weiteren Array wohl nicht funzen würde.
das wär aber ja dann trotzdem möglich mit
Kampfstaerke + Verteidigung( Spieler, Einheitentyp, Bodenart )

aber wenn jeder spieler dutzende speerträger haben kann, wäre es einfach platzverschwendung,
jedem einzelnen die standard-verteidigungswerte mitzugeben.

selbst wenn deine einheiten dann ränge haben können (Conscript, Veteran, Elite),
kann man beim array noch ne dimension dazupacken.
Kampfstaerke + Verteidigung( Spieler, Einheitentyp, Rang, Bodenart )

______________________

> Gehts nicht auch ohne Strukture, mit einem 3 Dimensioalem Array, statt 2?
yo, das außerdem.
Zuletzt geändert von Kaeru Gaman am 01.08.2007 14:36, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Puh, dann hab ich ein Problem. Zum einen müsste ich meinen gesamten Code umschreiben - zum anderen kenn ich mich als Anfänger überhaupt nicht mit Enumerationen aus...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> zum anderen kenn ich mich als Anfänger überhaupt nicht mit Enumerationen aus...
ne das is quatsch.. das hat ts nur verwendet weil ers gewöhnt ist, braucht man dafür nicht unbedingt.

> Zum einen müsste ich meinen gesamten Code umschreiben

das müßtest du sowieso in einem geringeren oder weiteren umfang tun.

also, schau dir die sache mit StructurUnion mal an.

und nochmal, wenn jeder Spieler mehrere einheiten des selben typs haben kann,
die alle die selben verteidigungswerte haben, dann ist es schlicht unfug, sie jeder einheit mitzugeben.

aber wie du willst, nix umschreiben oder vernünftige lösung, deine entscheidung.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Nicht, dass das falsch verstanden wird...

Die Werte für einen Einheitentyp von Spieler1 bleibt immer gleich, deswegen die Struktur mit festen Werten.

Allerdings sind die Werte desselben Einheittyps von Spieler2 anders. Dort haben sie dann auch wieder fste Werte. Also haben bspw Speerträger von Spieler 2 alle die gleichen Werte.

Für meinen Code wäre es and dieser Stelle einfacher, wenn ich die Abfrage, wie oben beschrieben realisieren könnte. Ansonsten müsste ich alles umschreiben. Und der Code ist bereits sehr groß... :(
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Ok, ich versuchs mal mit Structurunion... Könntest Du die Funktionalität mal kurz im Vergleich mit einer normalen Struktur umschreiben. Das Handbuch, sowie das Hilfsfile hilft mir irgendwie nicht weiter... :(
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Die Werte werden ja auch nicht jeder auf der Karte auftauchenden Einheit mitgegeben. Diese werden lediglich in das 2dim-Array mit jeweils dem Strukturinhalt aufbewahrt und abgefragt.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Zweihänder hat geschrieben:Die Werte werden ja auch nicht jeder auf der Karte auftauchenden Einheit mitgegeben. Diese werden lediglich in das 2dim-Array mit jeweils dem Strukturinhalt aufbewahrt und abgefragt.
yo, dann mach doch dafür so wie ts vorgeschlagen hat einfach ein 3D-array.
die struct ist absolut linear, also kannst du dafür doch auch einfach ne dritte dimension nehmen statt des stukturierten teils.

die funktionalität von StructureUnion ist einfach, dass du dieselben speicherstellen derselben struktur mit unerschiedlichen namen ansprechen kannst,
in meinem beispiel eben als statisches array oder mit deinen namen.
ob das beispiel allerdings so genau richtig ist, bin ich mir nicht sicher.

ich persönlich würde den einfacheren ansatz von ts mit dem 3D-array vorziehen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten