Hallo, ich programmiere aktuell ein Strategie-Browsergame und stehe aktuell vor ner großen Wand.
Wie programmiere ich die Berechnung von großen Schlachten?
Beispiel:
Ich greife mit 1000 U-Boot (20 ATK 5 DEF) 5000 Infanteriesoldaten an (5 ATK 1 DEF)
Wie viele Truppen überleben wo?
Kann mir einer helfen, bzw ein Beispiel zeigen von einem vorhanden Simulator
Hallo Clouder,
schick doch nach dem Trompetensignal „Schlachtende“ noch
7000 Statistikersoldaten (27 ATK 3 DEF) übers Feld.
Oder gib einfach mal Informationen um was genau es eigentlich geht.
Gruß
Reinhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Mnein, es geht darum, dass man wie bei anderen Strategiespielen wie Stämme, Travian etc. ein Kampfsystem hat, das ausrechnet wie viele Truppen überleben (und die werden natürlich auch wieder in die Base zurück geschickt).
und welche Gedanken hattest du dir darüber gemacht? Wie willst du erreichen, welche Parameter sollen eine Rolle spielen? Soll Zufall mitspielen?
So mit einfach hingerotzten Informationsstücke hat kaum einer Lust dir zu helfen.
Hallo,
falls Du die Einheiten einzelln gegeinander kämpfen läßt, kannst Du Dir Ideen bei Rollenspielen (Schwarze Auge, o.ä.) holen und für deine Zwecke anpassen:
http://www.alveran.org/index.php?id=20
Zweite Möglichkeit ist es, eine Überschlagsrechnung zu machen.
Für jede Kombination von Einheiten muss festgelegt werden, wie gut sie ist: z.B. „Im Angriff schlägt 1 UBoot 5 Soldaten“.
Dann einfache Subtraktion: 1000 UBoote minus 5000 Soldaten geteilt durch 5 UBoote/Soldaten ergibt 0 UBoote.
Damit das ganze nicht so langweilig (deterministisch ist), kann man eine Spanne festlegen:
„1 UBoot schlägt 4-6 Soldaten“, die 4-6 wird ausgewürfelt, z.B. mit Gleichvertteilung (Uniform), besser noch mit Gaussverteilung (auch Normalverteilung), die Spanne dann als Standardabweichung nehmen.
Zur Generierung von Zufallszahlen, einfach mal in Deiner Programm-Bibliothek nach „Random“ oder „Seed“ suchen.
Viel Erfolg
Thorsten
rand() ^^
Gut, nur das Problem ist, es gibt 10 verschiedene Einheitenarten.
d.H.
es kann alles mögliche aufeinander Treffen.
z.B. 5000 U-Boot u. 50 Atomarraketen vs. 2000 Infanteriesoldaten u. 7000 U-Boote u. 70 Sprengstoffspezialisten
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Clouder,
Gut, nur das Problem ist, es gibt 10 verschiedene
Einheitenarten.
Tja, da musst Du eben eine 10x10 Matrix (Array, Feld… je nach Programmiersprache) aufmachen, in der alle gegenseitigen Stärken aufgelistet werden.
| **a** | **b** | **c** |
**a** | 0 | -3| 4 |
**b** | 3 | 0 | -1|
**c** | -4| 1 | 0 |
Ist eigentlich eine Dreiecksmatrix, weil symetrisch, aber egal.
Das hiesse hier, Einheit a verliert im Kampf gegen Einheit b 3 Kräfte, gegen c gewinnt sie 4 Kräfte.
Das auslesen und mit der schon erwähnten Zufallsfunktion variieren, schon hast Du dein Schlachtgetümmel und wieviel jeweils liegenbleiben. Alles andere ist dann einfache Arithmetik, da ja wahrscheinlich auch im Verbund angegriffen werden kann (Kavallerie greift zusammen mit mit der Infanterie die U-Boote an, erstere zweckmäßigerweise auf Seepferdchen
Neben der Zufallsfunktion kannst Du noch weitere Faktoren einfügen: wenn die Infanterie schon drei Tage unterwegs war, wird der Matrixwert dann eben mit 0.7 multipliziert.
Ich hoffe, das Prinzip ist klar.
Viele Grüße
Marvin