Berechnung - Hilfestellung

Sasser

Erfahrenes Mitglied
Hallo Leute!

Ich habe verschiedene Charaktere, welche bestimmte Angriffspunkte und Verteidungspunkte haben.

Wie würdet ihr berechnen, wer überlegen ist und wer welchen Charaktere verliert. Also wenn man beispielsweise 10 Roboter anderen Einheiten gegenüber stellt, wer wieviele verliert und wer als Gewinner hervor geht?

Ich danke für Anregungen etc. :)
 
Zuletzt bearbeitet:
Rundenbasiert.

Angreifer:
10 Einheiten mit je 100 Schusskraft 500 Leben

Gesamte Schusskraft 10 * 100 = 1000
Gesamte Lebenstärke 10 * 500 = 5000

Verteidiger:
5 Einheiten mit je 100 Schusskraft und 500 Leben
1 Einheiten mit je 300 Schusskraft und 3000 Leben

Gesamte Schusskraft 5 * 100 + 1 * 300 = 800
Gesamte Lebenstärke 5 * 500 + 1 * 3000 = 5500

A braucht 5,5 Runden um V zu besiegen (5500 V-Leben : 1000 A-Schuss)
V braucht 6,25 Runden um A zu besiegen (5000 A-Leben : 800 V-Schuss)

Somit wird A gewinnen nach 5,5 Runden gewinnen. Das heißt V kann 5,5 mal mit seinen 800 Schusskraft schießen und macht somit Schaden von 4400.
Die 4400 müssen irgendwie verarbeitet werden vom Gewinner in Form von Verlusten.
Da überleg dir ob erst die schwächsten drauf gehen oder erst die Stärksten...

Ich würde es so machen wie es passieren könnte:
  • Einzelne Einheiten suchen deren Lebenspunkte unterhalb der Marke liegen (am Anfang hier 4400)
  • Einen davon zufällig auswählen und löschen (zerstört)
  • dessen Lebenspunkte von der Marke abziehen
  • mit der neuen Marke nochmal von vorn, bis die Marke so klein ist, dass keiner mehr draufgehen kann

Mal so als Idee ;)

EDIT: Diese Rundenberechnung ist sowas von mathematisch linear und fern von der Wirklichkeit, dass man da noch ein paar Extras einführen sollte (Zufallsabweichungen, Glückswerte, Erfahrung, whatever....) aber als Modell schon mal brauchbar. Vor allem sollte es degressiv wirklich pro Runde berechnet werden.
 
Zuletzt bearbeitet:
Ich danke dir für die Anregung! :)

Ich muss ich nur noch überlegen wie ich anfange...

Und wie kann man das noch mit verbauen;

Also ich habe auch eine Tabelle inder jede Waffe einer Kategorie angehört:

Beispiel:

Flugzeuge, Raketen können alle anderen Einheiten angreifen, können aber nur durch Luftabwehr bekämpft werden.

Kategorieren:

Verwaltungsgebäude => Alle Flugabwehreinheiten
Panzerfabrik => Alle Panzer
Kaserne => Alle Infantrie
Flugzeugfabrik => Alle Flugzeuge
Fahrzeugfabrik => Alle Fahrzeuge ohne Angriffskraft
Raketensilo => Alle Raketen
 
Ein bischen mit drei Kategorien rumbasteln:

Luft-Luft
Luft-Boden
Boden-Boden

Oder vereinfacht die LB aufteilen auf LL und BB.

Angreifer:

Aus
10 LL (Flak)
20 LB (Raketeninfanterie)
30 BB (Flugzeug mit Bomben)

Wird:
20 LL (Flak und 10 Raks)
40 BB (Bomber und 10 Raks)

Damit kann man ganz einfach Arbeiten da es ja nur Einheiten am Boden oder in der Luft gibt ;)
So kanns das System von Oben einmal für die Luft und einmal für den Boden anwenden. Dadurch gibt es einen Gewinner in der Luft und einen auf dem Boden (unentschieden), oder einer gewinnt beide Ebenen (Gesamtsieger).

Etwas besser wirds, wenn man erst die Entscheidung in der Luft ausmacht und danach alle verbleibenden LB-Einheiten zu BB-Einheiten macht und dann die Schlacht auf dem Boden austrägt (verbleibende LB-Flugzeuge können dabei Schaden machen aber nicht die Lebenspunkte erhöhen oder zerstört werden).
 
Zuletzt bearbeitet:
So, mein Ansatz in der Hinsicht ist nun folgender (nicht viel aber ein Anfang):

PHP:
$forcepart = explode("#", $row[force]);
foreach ($forcepart as $var)
{
$part = explode(":", $var);

$part[0] = #ID
$part[1] = #Anzahl

}

In der Tabelle weapons findet man zu der #ID die Angriffspunkte und Verteidigungspunkte:

PHP:
$row = mysql_fetch_assoc(mysql_query("Select * FROM weapons WHERE `id` = '$part[0]'", $db));

Hat jemand so etwas schon einmal realisiert? Ich würde auch etwas springen lassen...
 
Also ich habe jetzt zwei Katagorien angelegt:

L => Luft
B => Boden

und die Waffen dort einsortiert. Ich habe die Idee, allerdings weiss ich nicht wie ich programmiertechnisch anfangen soll bzw. was sinnvoll ist...

Jede Waffe hat nun: AP (Angriffspunkte) und VP (Verteidigungspunkte)!

Es wäre doch auch günstiger, wenn der Verteidiger die erste Runde hat oder? Oder besser der Angreifer den ersten Schlag macht, wenn er die Stadt angreift?
 
Meiner Meinung nach sollte der Schwächere den Anfang machen dürfen oder eine Runde eher anfangen bzw. der Stärkere die erste Runde aussetzen.
 
Ok, aber ich weis immer noch nicht wie ich das Programmiertechnisch umsetzen soll:

100 Soldaten treffen auf 200 Soldaten => Wie soll ich rausbekommen wieviele beim Überlegenen übrig bleiben... Genau 100?

Bzw. ich muss ja alle Bodentruppen zusammenzählen und alle Lufteinheiten, dann addiere ich deren Angriffspunkte und stelle Sie den Verteidigungspunkten des Verteidigers gegenüber. Wie soll ich dann noch wissen wieviele Einheiten von jeder Sorte übrig sind?
 
Zurück