Hallo liebe Community,
Ich hänge momentan schon länger an einem Problem. Vorab möchte ich euch noch ein wenig Kontext bereitstellen, da mein Vorhaben sonst, meiner Meinung nach, schwehr verständlich währe (Ich habe noch eine kürzere Erklärung meines Vorhabens ohne Kontext, diese findet man weiter unten, unter "Kurze Erklärung").
Ich arbeite schon seit längerem an einem Strategie Browserspiel, dort hat man die Möglichkeit als Gruppe, Truppen zu "sammeln" und gemeinsam einen großen Angriff auszuführen. Datenbanktechnich sieht dies so aus, dass es eine Tabelle gibt die die gesammte Truppenbewegung (Tabelle A) dokumentiert und eine Tabelle die beinhält wer wie viele Truppen beim Angriff "beigesteuert" hat (Tabelle B) (Wichtig, da die einzelnen Spieler immer noch die Möglichkeit haben ihre Truppen wieder zurück in ihr Dorf zu schicken), die Tabelle A besitzt zusätzlich eine Spalte mit den einzelnen Ids der Einträge der Tabelle B.
Nun gibt es jedoch ein Problem beim Ausrechnen des Kampfes. Dies läuft so ab, dass ein Prozentsatz von Toten Truppen ermittelt wird (anhand der gesammten Truppen), sowie die Anzahl der toten Truppen (A). Bei dem "gesammelten Angriff" hat man jedoch jetzt das Problem, dass der große Angriff aus vielen kleinen Gruppen aus Truppen besteht. Nun muss man also auch bei den einzelnen Gruppen prozentual berechnen, wie viele Tode (B) es gab. Am Ende müssen dann die toten Truppen (A) gleich die Summe aller Toten Truppen (B) sein. Dazu sei gesagt, dass die Trupppen nur in ganzen Zahlen dargestellt werden können. Dies gestaltet sich jedoch als schwierig, da nicht immer Truppen (A) = Truppen (B) sind (Da ich runden muss, um auf ganze Zahlen zu kommen). Leider schlugen meine bisherigen Lösungsansätze fehl, habe dazu ein kleines Script erstellt, um das Ganze zu simulieren.
Kurze Erklärung:
Ich versuche anhand einer Prozentzahl (P) einen Preozentwert (W) einer Zahl auszurechnen und danach die Zahl in Summanden aufzuteilen. Aschließend soll man anhand der Prozentzahl (P) Prozentwerte der Summanden ausrechnen, welche dann am Ende als Summe, den Prozentwert (W) der ganzen Zahl ergeben soll. Zu erwähnen ist dass Die Prozentanteile Ganze Zahlen sein müssen. Dies ist jedoch leider nicht immer der Fall. Leider schlugen meine bisherigen Lösungsansätze fehl, habe dazu ein kleines Script erstellt, um das Ganze zu simulieren.
Script:
Schonmal danke im Vorraus für eure Hilfe
Ich hänge momentan schon länger an einem Problem. Vorab möchte ich euch noch ein wenig Kontext bereitstellen, da mein Vorhaben sonst, meiner Meinung nach, schwehr verständlich währe (Ich habe noch eine kürzere Erklärung meines Vorhabens ohne Kontext, diese findet man weiter unten, unter "Kurze Erklärung").
Ich arbeite schon seit längerem an einem Strategie Browserspiel, dort hat man die Möglichkeit als Gruppe, Truppen zu "sammeln" und gemeinsam einen großen Angriff auszuführen. Datenbanktechnich sieht dies so aus, dass es eine Tabelle gibt die die gesammte Truppenbewegung (Tabelle A) dokumentiert und eine Tabelle die beinhält wer wie viele Truppen beim Angriff "beigesteuert" hat (Tabelle B) (Wichtig, da die einzelnen Spieler immer noch die Möglichkeit haben ihre Truppen wieder zurück in ihr Dorf zu schicken), die Tabelle A besitzt zusätzlich eine Spalte mit den einzelnen Ids der Einträge der Tabelle B.
Nun gibt es jedoch ein Problem beim Ausrechnen des Kampfes. Dies läuft so ab, dass ein Prozentsatz von Toten Truppen ermittelt wird (anhand der gesammten Truppen), sowie die Anzahl der toten Truppen (A). Bei dem "gesammelten Angriff" hat man jedoch jetzt das Problem, dass der große Angriff aus vielen kleinen Gruppen aus Truppen besteht. Nun muss man also auch bei den einzelnen Gruppen prozentual berechnen, wie viele Tode (B) es gab. Am Ende müssen dann die toten Truppen (A) gleich die Summe aller Toten Truppen (B) sein. Dazu sei gesagt, dass die Trupppen nur in ganzen Zahlen dargestellt werden können. Dies gestaltet sich jedoch als schwierig, da nicht immer Truppen (A) = Truppen (B) sind (Da ich runden muss, um auf ganze Zahlen zu kommen). Leider schlugen meine bisherigen Lösungsansätze fehl, habe dazu ein kleines Script erstellt, um das Ganze zu simulieren.
Kurze Erklärung:
Ich versuche anhand einer Prozentzahl (P) einen Preozentwert (W) einer Zahl auszurechnen und danach die Zahl in Summanden aufzuteilen. Aschließend soll man anhand der Prozentzahl (P) Prozentwerte der Summanden ausrechnen, welche dann am Ende als Summe, den Prozentwert (W) der ganzen Zahl ergeben soll. Zu erwähnen ist dass Die Prozentanteile Ganze Zahlen sein müssen. Dies ist jedoch leider nicht immer der Fall. Leider schlugen meine bisherigen Lösungsansätze fehl, habe dazu ein kleines Script erstellt, um das Ganze zu simulieren.
Script:
PHP-Code:
echo "<pre>";
$divide = mt_rand(1,15);
$percent = mt_rand(1,100);
$subtotal = array();
$total = 0;
//Summanden ($subtotal) erstellen, und anhand von den Summanden die Summe errechenn
for($i=0; $i<$divide; $i++){
$sub = mt_rand(1,75);
$subtotal[] = $sub;
$total = $total+$sub;
}
echo "Total: ".$total." - "."Prozent: ".$percent."% - ";
$death = ($total/100)*$percent;//Wie viele Truppen starben
$death_round = round($death);
echo "Tode: ".$death_round."<br>";
//Alle Summanden einzeln durchgehen
$all_death = 0;
foreach ($subtotal as $key => $value) {
$death_calculated = ($value/100)*$percent;
$death_final = round($death_calculated);//Hier müsste sich was ändern, bei der Entscheidung wann auf bzw. abgerundet werden soll
echo "Subtotal: ".$value." - Tode: ".$death_final."<br>";
$all_death = $all_death+$death_final;//Summe aller getöteten Truppen
}
echo "Summanden Tode: ".$all_death."<br>";
if($death_round == $all_death){
echo "<span style='color:#04B404'>Geklappt!</span>";
}else{
echo "<span style='color:#FF0000'>Fehlgeschlagen!</span>";
}
echo "</pre>";

Kommentar