Einzelnen Beitrag anzeigen

Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: [PHP] Kämpfe bei Browsergames mit verschiedenen Einheite

  Alt 27. Nov 2005, 03:39
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
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat