Zitat von
Master_RC:
IDEE:
Ich starte einen Angriff:
Auswahl per Checkboxen (öh... wie geth das? ^^)
Dann werden die ids der Einheiten (auto_increment - id) in eien
DB gespeichert.
Die
DB "schlachten" könnte folgendermaßen aussehen:
id int(x) [um per Admin eine Schlacht rauszulöschen]
angreifer int(x) [id des Spieler, der angreift]
verteidiger int(x) [id des Verteidigers eben]
einheiten string(x) [alle ids der angreifenden Einheiten - Bsp.: "1,4,22,24,31,5"]
So...
wenn nun eine Schlacht stattfindet, wird einfach überprüft, welche Einheiten des Verteidigers grade eben zum Verteidigen bereit sind und die Einheiten des Angreifers werden halt so ausgelesen, dass ´einheiten´ exploded wird, etc...
Kann das so klappen oder hat jemand was besseres?
Der "explodierte" String gefällt mir nicht so recht. Man kann es zwar so machen, aber das optimale ist es nicht, da man den String jedesmal zerlegen muss uns somit die Datenbank-Abfragen erschwert werden. Statt dem String einheiten könnte man zwei zusätzliche Spalten nehmen, in denen IDs gespeichert werden:
int angriffID
int verteidigungID
Dann macht man eine zusätzliche Tabelle, nennen wir sie mal "Look-Up-Table", mit zwei Spalten:
int angriffID
int einheit
Der erste Wert entspricht der Spalte angriffID oder verteidigungID aus der Tabelle "schlachten". Der zweite Wert (einheit) ist eine eindeutige Nummer (ID) für eine bestimmte Einheit (die genauen Angriffswerte der Einheit könnten dann z.B. in einer weiteren Tabelle gespeichert sein).
Ein Ausschnitt daraus könnte wie folgt aussehen:
Code:
angriffID einheit
1 1
1 4
1 22
1 24
1 31
1 5
2 7
2 9
... ...
Somit weiß man dann, dass z.B. die Einheiten mit der ID 1,4,22,24,31,5 zum gleichen Angriff/Angriffsziel gehen.
Somit bekommt man z.B. über
SELECT * FROM look_up_table WHERE angriffID=x
alle Einheiten-IDs für den Angriff mit der Nummer x.
Nehmen wir also an, der obige Tabellenausschnitt stelle alle bisherigen Einträge dar, und ein Beispieldatensatz aus der Tabelle "schlachten" wäre
Code:
id angreifer verteidiger angriffID verteidigungID
77 23 45 1 2
Demzufolge hätte der Spieler mit der ID 23 den Spieler 45 angegriffen. Die angreifenden Einheiten sind unter der AngriffsID 1 zusammengefasst, laut zweiter Tabelle sind das also die Einheiten 1,4,22,24,31 und 5. Die verteidigenden Einheiten des anderen Spielers, zusammengefasst unter der verteidigungsID 2, sind die Einheiten 7 und 9.
Das wär's erstmal dazu.
MfG
Binärbaum