Auf den Code kann man ja langsam hinarbeiten, habe viel eingebaut, was nicht wirklich benötigt wird. War ja auch nur ein Vorschlag um dir es zu verdeutlichen ^^
Arbeite gerade an einem Code, wo Angreifer und Verteidiger mehrere Einheiten besitzen usw.
Was du mir noch erklären könntest, warum sind Bogenschützen in der Nacht besser?
Edit:
So hier is der Code, allerdings noch ein bisschen buggy, aber kannst ja mal drüberschauen, ob du durchblickst und etwas verbessern kannst (falls du etwas verbesserst, würde ich es gerne sehen)
PHP-Code:
<?php
$attacker_wins = 0;
$defender_wins = 0;
$draws = 0;
$aborted = false;
$einheiten = array(array("ID"=>1,
"name"=>"Schwertkämpfer",
"atk"=>35,
"def"=>20),
array("ID"=>2,
"name"=>"Bogenschütze",
"atk"=>25,
"def"=>30));
$attacker = array(array("unitID"=>1,
"anz"=>50),
array("unitID"=>2,
"anz"=>30));
$defender = array(array("unitID"=>1,
"anz"=>50),
array("unitID"=>2,
"anz"=>30));
//for($k=1;$k<=100;$k++) {
// echo "<big><b>Simulation ".$k."</b></big><br />";
$attacker_attack = array();
$attacker_defend = array();
$attacker_anzahl = array();
$defender_attack = array();
$defender_defend = array();
$defender_anzahl = array();
$attacker_attack2 = array();
$attacker_defend2 = array();
$attacker_anzahl2 = array();
$defender_attack2 = array();
$defender_defend2 = array();
$defender_anzahl2 = array();
$attacker_ID = array();
$defender_ID = array();
foreach($attacker as $unit) {
foreach($einheiten as $einheit) {
if($unit['unitID']!=$einheit['ID']) {
continue;
} else {
$attacker_attack[$unit['unitID']] = round(MoralDerGruppe($unit['anz'] * $einheit['atk']));
$attacker_attack2[$unit['unitID']] = $attacker_attack[$unit['unitID']];
$attacker_defend[$unit['unitID']] = round(MoralDerGruppe($unit['anz'] * $einheit['def']));
$attacker_defend2[$unit['unitID']] = $attacker_defend[$unit['unitID']];
$attacker_anzahl[$unit['unitID']] = $unit['anz'];
$attacker_anzahl2[$unit['unitID']] = $attacker_anzahl[$unit['unitID']];
array_push($attacker_ID,$unit['unitID']);
}
}
}
foreach($defender as $unit) {
foreach($einheiten as $einheit) {
if($unit['unitID']!=$einheit['ID']) {
continue;
} else {
$defender_attack[$unit['unitID']] = round(MoralDerGruppe($unit['anz'] * $einheit['atk']));
$defender_attack2[$unit['unitID']] = $defender_attack[$unit['unitID']];
$defender_defend[$unit['unitID']] = round(MoralDerGruppe($unit['anz'] * $einheit['def']));
$defender_defend2[$unit['unitID']] = $defender_defend[$unit['unitID']];
$defender_anzahl[$unit['unitID']] = $unit['anz'];
$defender_anzahl2[$unit['unitID']] = $defender_anzahl[$unit['unitID']];
array_push($defender_ID,$unit['unitID']);
}
}
}
for($i=1;$i<=6;$i++) {
echo "<big><b>Runde ".$i."</b></big><br />";
echo "<b>Angreifer:</b><br />";
echo "Angriff:<br />";
print_r($attacker_attack);
echo "<br />Verteidigung:<br />";
print_r($attacker_defend);
echo "<br />";
foreach($attacker_attack as $attack) {
$notattacked = true;
$next = false;
//for($x=0;$x<10;$x++) {
while($notattacked AND !$next) {
shuffle($defender_ID);
$choose = array_pop($defender_ID);
//$choose = rand(1,count($defender_defend));
if($defender_anzahl2[$choose]>0) {
$defender_defend2[$choose] = $defender_defend[$choose] - $attack;
if($defender_defend2[$choose]<=0 OR $defender_defend[$choose]<=0) {
$defender_anzahl2[$choose] = 0;
} else {
$tmp = $defender_defend[$choose] - $defender_defend2[$choose];
if($tmp<=0) {
$defender_anzahl2[$choose] = 0;
} else {
$defender_anzahl2[$choose] = ceil($defender_defend[$choose]/$tmp);
}
}
echo $attacker_anzahl[array_search($attack,$attacker_attack)]." ".
$einheiten[array_search($attack,$attacker_attack)-1]['name'].
" mit einem Angriff von ".$attack." haben ".$defender_anzahl[$choose]." ".
$einheiten[$choose-1]['name'].
" mit einer Verteidigung von ".
$defender_defend[$choose].
" angegriffen<br />";
$notattacked = false;
}
if(count($defender_ID)<=0) {
$next = true;
}
//echo "NotAttacked: ".$notattacked." Winner: ".$winner."<br />";
}
foreach($defender as $unit) {
foreach($einheiten as $einheit) {
if($unit['unitID']!=$einheit['ID']) {
continue;
} else {
$defender_defend[$unit['unitID']] = round(MoralDerGruppe($defender_anzahl2[$unit['unitID']] * $einheit['def']));
$defender_defend2[$unit['unitID']] = $defender_defend[$unit['unitID']];
$defender_anzahl[$unit['unitID']] = $defender_anzahl2[$unit['unitID']];
if($defender_anzahl2[$unit['unitID']]>0) {
array_push($defender_ID,$unit['unitID']);
}
}
}
}
}
echo "<br /><b>Verteidiger:</b><br />";
echo "Angriff:<br />";
print_r($defender_attack);
echo "<br />Verteidigung:<br />";
print_r($defender_defend);
echo "<br />";
foreach($defender_attack as $attack) {
$notattacked = true;
$next = false;
//for($x=0;$x<10;$x++) {
while($notattacked AND !$next) {
shuffle($attacker_ID);
$choose = array_pop($attacker_ID);
//$choose = rand(1,count($attacker_defend));
if($attacker_anzahl2[$choose]>0) {
$attacker_defend2[$choose] = $attacker_defend[$choose] - $attack;
if($attacker_defend2[$choose]<=0 OR $attacker_defend[$choose]<=0) {
$attacker_anzahl2[$choose] = 0;
} else {
$tmp = $attacker_defend[$choose] - $attacker_defend2[$choose];
if($tmp<=0) {
$attacker_anzahl2[$choose] = 0;
} else {
$attacker_anzahl2[$choose] = ceil($attacker_defend[$choose]/$tmp);
}
}
echo $defender_anzahl[array_search($attack,$defender_attack)]." ".
$einheiten[array_search($attack,$defender_attack)-1]['name'].
" mit einem Angriff von ".$attack." haben ".$attacker_anzahl[$choose]." ".
$einheiten[$choose-1]['name'].
" mit einer Verteidigung von ".
$attacker_defend[$choose].
" angegriffen<br />";
$notattacked = false;
}
if(count($attacker_ID)<=0) {
$next = true;
}
//echo "NotAttacked: ".$notattacked." Winner: ".$winner."<br />";
}
foreach($attacker as $unit) {
foreach($einheiten as $einheit) {
if($unit['unitID']!=$einheit['ID']) {
continue;
} else {
$attacker_defend[$unit['unitID']] = round(MoralDerGruppe($attacker_anzahl2[$unit['unitID']] * $einheit['def']));
$attacker_defend2[$unit['unitID']] = $attacker_defend[$unit['unitID']];
$attacker_anzahl[$unit['unitID']] = $attacker_anzahl2[$unit['unitID']];
if($attacker_anzahl2[$unit['unitID']]>0) {
array_push($attacker_ID,$unit['unitID']);
}
}
}
}
}
$defend_win = 0;
foreach($attacker as $unit) {
foreach($einheiten as $einheit) {
if($unit['unitID']!=$einheit['ID']) {
continue;
} else {
$attacker_attack[$unit['unitID']] = round(MoralDerGruppe($attacker_anzahl2[$unit['unitID']] * $einheit['atk']));
$attacker_attack2[$unit['unitID']] = $attacker_attack[$unit['unitID']];
$attacker_defend[$unit['unitID']] = round(MoralDerGruppe($attacker_anzahl2[$unit['unitID']] * $einheit['def']));
$attacker_defend2[$unit['unitID']] = $attacker_defend[$unit['unitID']];
$attacker_anzahl[$unit['unitID']] = $attacker_anzahl2[$unit['unitID']];
if($attacker_anzahl[$unit['unitID']]<=0) {
$defend_win++;
}
if($attacker_anzahl2[$unit['unitID']]>0) {
array_push($attacker_ID,$unit['unitID']);
}
}
}
}
$attack_win = 0;
foreach($defender as $unit) {
foreach($einheiten as $einheit) {
if($unit['unitID']!=$einheit['ID']) {
continue;
} else {
$defender_attack[$unit['unitID']] = round(MoralDerGruppe($defender_anzahl2[$unit['unitID']] * $einheit['atk']));
$defender_attack2[$unit['unitID']] = $defender_attack[$unit['unitID']];
$defender_defend[$unit['unitID']] = round(MoralDerGruppe($defender_anzahl2[$unit['unitID']] * $einheit['def']));
$defender_defend2[$unit['unitID']] = $defender_defend[$unit['unitID']];
$defender_anzahl[$unit['unitID']] = $defender_anzahl2[$unit['unitID']];
if($defender_anzahl[$unit['unitID']]<=0) {
$attack_win++;
}
if($defender_anzahl2[$unit['unitID']]>0) {
array_push($defender_ID,$unit['unitID']);
}
}
}
}
if($defend_win>=count($attacker_anzahl)) {
$defend_win = 1;
} else {
$defend_win = 0;
}
if($attack_win>=count($defender_anzahl)) {
$attack_win = 1;
} else {
$attack_win = 0;
}
if($defend_win==1 AND $attack_win==1)
{
$draws++;
$aborted = true;
break;
} else if($defend_win==1) {
$defender_wins++;
$aborted = true;
break;
} else if($attack_win==1) {
$attacker_wins++;
$aborted = true;
break;
}
echo "<br /><br />";
}
//}
echo "<br />Attacker: ".$attacker_wins." Defender: ".$defender_wins." Unentschieden: ".$draws;
function MoralDerGruppe($value) {
$prozent_max = 10;
if(rand(0,1)) {
$value+=$value*(rand(1,$prozent_max)/100);
} else {
$value-=$value*(rand(1,$prozent_max)/100);
}
return $value;
}
function ausgabe($value)
{
echo $value."<br />";
}
?>
Alle anderen können sich das ja natürlich auch anschauen, is aber bisschen komplex ^^