ik heb nu dit:
<?
$player1 = 'Player1';
$player2 = 'Player2';
$p1ap = 28;
$p2ap = 32;
$p1def = 18;
$p2def = 24;
$p1tot = $p1ap + $p1def;
$p2tot = $p2ap + $p2def;
//Totaal attackpower en defence
$ptot = $p1tot + $p2tot;
//berekening
$p1_kans = round(100/($ptot/$p1tot));
$p2_kans = round(100/($ptot/$p2tot));
//Output
echo '<table>';
echo '<tr><td>Kans van '.$player1.':</td><td>'.$p1ap.'[AP] </td><td>'.$p1def.'[DEF] </td><td>win kans: '.$p1_kans.'</td></tr>';
echo '<tr><td>Kans van '.$player2.':</td><td>'.$p2ap.'[AP] </td><td>'.$p2def.'[DEF] </td><td>win kans: '.$p2_kans.'</td></tr>';
echo '</table>';
$p1_kans=round(($p2tot/$p1tot)*100);
$toeval=mt_rand(0,100);
if($toeval <= $p1_kans){
echo 'De speler '.$player1.' heeft gewonnen!!';
} else {
echo 'De speler '.$player2.' heeft gewonnen!!';
}
?>
Maar speler 1 wint altijd!! ( het zou natuurlijk kunnen zijn dat het 'toeval' is dat die de hele tijd wint, maar ik heb nu onderhand al 100x op [F5] gedrukt...
Link gekopieerd
<?
$player1 = 'Player1';
$player2 = 'Player2';
$p1ap = 28;
$p2ap = 32;
$p1def = 18;
$p2def = 24;
$p1tot = $p1ap + $p1def; // wordt 46
$p2tot = $p2ap + $p2def; // wordt 56
//Totaal attackpower en defence
$ptot = $p1tot + $p2tot; //wordt 102
//berekening
$p1_kans = round(($p1tot/$ptot)*100);//aangepast
$p2_kans = round(($p2tot/$ptot)*100);//aangepast
//Output
echo '<table>';
echo '<tr><td>Kans van '.$player1.':</td><td>'.$p1ap.'[AP] </td><td>'.$p1def.'[DEF] </td><td>win kans: '.$p1_kans.'</td></tr>';
echo '<tr><td>Kans van '.$player2.':</td><td>'.$p2ap.'[AP] </td><td>'.$p2def.'[DEF] </td><td>win kans: '.$p2_kans.'</td></tr>';
echo '</table>';
$toeval=mt_rand(0,100);
if($toeval <= $p1_kans){
echo 'De speler '.$player1.' heeft gewonnen!!';
} else {
echo 'De speler '.$player2.' heeft gewonnen!!';
}
?>
Edit:
round(($ptot/$p1tot)*100); Klopt niet, je moet die van de speler delen door totaal, niet totaal door die van de speler.
Link gekopieerd
Hier eentje met 2 spelers die doorvechten tot de dood er op volgt:
<?php
$spelers = array(
'a' => array(
'aanval' => 20,
'verdediging' => 10,
'health' => 100
),
'b' => array(
'aanval' => 30,
'verdediging' => 18,
'health' => 100
)
);
$aanvaller = 'b';
$verdediger = 'a';
$rounds = 0;
// aanval => verdediging => verliezer krijgt minder health, aanval en verdediging
while (($spelers[$verdediger]['health'] > 0) && ($spelers[$aanvaller]['health'] > 0)) {
$total = $spelers[$aanvaller]['aanval'] + $spelers[$verdediger]['verdediging'];
$result = rand(1, $total);
if ($result <= $spelers[$aanvaller]['aanval']) { // aanvaller wint
$spelers[$verdediger]['health'] -= $spelers[$aanvaller]['aanval'];
$spelers[$verdediger]['aanval'] -= 2;
$spelers[$verdediger]['verdediging'] -= 1;
$winner = $aanvaller;
}
else { // aannvaller verliest
$spelers[$aanvaller]['health'] -= $spelers[$verdediger]['verdediging'];
$spelers[$aanvaller]['aanval'] -= 2;
$spelers[$aanvaller]['verdediging'] -= 1;
$winner = $verdediger;
}
$rounds ++;
echo 'Winnaar: '.$winner.' (som:'.$total.' random:'.$result.')'.PHP_EOL;
echo 'Resultaten van deze ronde:'.PHP_EOL;
echo 'Aanvaller '.$aanvaller.' health: '.$spelers[$aanvaller]['health'].PHP_EOL;
echo 'Aanvaller '.$aanvaller.' aanval: '.$spelers[$aanvaller]['aanval'].PHP_EOL;
echo 'Aanvaller '.$aanvaller.' verdediging: '.$spelers[$aanvaller]['verdediging'].PHP_EOL;
echo 'Verdediger '.$verdediger.' health: '.$spelers[$verdediger]['health'].PHP_EOL;
echo 'Verdediger '.$verdediger.' aanval: '.$spelers[$verdediger]['aanval'].PHP_EOL;
echo 'Verdediger '.$verdediger.' verdediging: '.$spelers[$verdediger]['verdediging'].PHP_EOL;
echo '<br />'.PHP_EOL;
// Dit stukje kan beter
$flip_attack = $verdediger;
$flip_defense = $aanvaller;
$aanvaller = $flip_attack;
$verdediger = $flip_defense;
}
echo 'Overall winnaar: '.$winner.PHP_EOL;
echo 'Ronden gespeeld: '.$rounds.PHP_EOL;
?>
Link gekopieerd
ik loop weer vast:
<?php
session_start();
include ('database.php');
$onaam = 'henk';
$naam = $_SESSION['naam'];
if($_SESSION['suc'] != 1) {
echo "niet ingelogd";
} else {
$sql1 = "SELECT naam,weapon,punten,level,defence.attack FROM game_members WHERE naam = '".$onaam."'";
$res1 = mysql_query($sql1);
while ($row1 = mysql_fetch_array($res1)) {
$sql2 = "SELECT naam,weapon,punten,level,defence,attack FROM game_members WHERE naam = '".$naam."'";
$res2 = mysql_query($sql2);
while ($row2 = mysql_fetch_array($res2)) {
$player1 = $row1['naam'];
$player2 = $row2['naam'];
$p1ap = $row1['attack'];
$p2ap = $row2['attack'];
$p1def = $row1['defence'];
$p2def = $row2['defence'];
$p1tot = $p1ap + $p1def;
$p2tot = $p2ap + $p2def;
//Totaal attackpower en defence
$ptot = $p1tot + $p2tot;
//berekening
$p1_kans = round(($p1tot/$ptot)*100);
$p2_kans = round(($p2tot/$ptot)*100);
//Output
echo '<table>';
echo '<tr><td>Kans van '.$player1.':</td><td>'.$p1ap.'[AP] </td><td>'.$p1def.'[DEF] </td><td>win kans: '.$p1_kans.'</td></tr>';
echo '<tr><td>Kans van '.$player2.':</td><td>'.$p2ap.'[AP] </td><td>'.$p2def.'[DEF] </td><td>win kans: '.$p2_kans.'</td></tr>';
echo '</table>';
$toeval=mt_rand(0,100);
if($toeval <= $p1_kans){
echo 'De speler '.$player1.' heeft gewonnen!!';
} else {
echo 'De speler '.$player2.' heeft gewonnen!!';
}
}
}
}
?>
dat heb ik nu, en ik krijg dit eruit:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\game\attack.php on line 11
en ik snap er niks meer van!! :-(
Link gekopieerd
Frank schreef op 23.06.2006 17:12
Hier eentje met 2 spelers die doorvechten tot de dood er op volgt:
<?php
$spelers = array(
'a' => array(
'aanval' => 20,
'verdediging' => 10,
'health' => 100
),
'b' => array(
'aanval' => 30,
'verdediging' => 18,
'health' => 100
)
);
$aanvaller = 'b';
$verdediger = 'a';
$rounds = 0;
// aanval => verdediging => verliezer krijgt minder health, aanval en verdediging
while (($spelers[$verdediger]['health'] > 0) && ($spelers[$aanvaller]['health'] > 0)) {
$total = $spelers[$aanvaller]['aanval'] + $spelers[$verdediger]['verdediging'];
$result = rand(1, $total);
if ($result <= $spelers[$aanvaller]['aanval']) { // aanvaller wint
$spelers[$verdediger]['health'] -= $spelers[$aanvaller]['aanval'];
$spelers[$verdediger]['aanval'] -= 2;
$spelers[$verdediger]['verdediging'] -= 1;
$winner = $aanvaller;
}
else { // aannvaller verliest
$spelers[$aanvaller]['health'] -= $spelers[$verdediger]['verdediging'];
$spelers[$aanvaller]['aanval'] -= 2;
$spelers[$aanvaller]['verdediging'] -= 1;
$winner = $verdediger;
}
$rounds ++;
echo 'Winnaar: '.$winner.' (som:'.$total.' random:'.$result.')'.PHP_EOL;
echo 'Resultaten van deze ronde:'.PHP_EOL;
echo 'Aanvaller '.$aanvaller.' health: '.$spelers[$aanvaller]['health'].PHP_EOL;
echo 'Aanvaller '.$aanvaller.' aanval: '.$spelers[$aanvaller]['aanval'].PHP_EOL;
echo 'Aanvaller '.$aanvaller.' verdediging: '.$spelers[$aanvaller]['verdediging'].PHP_EOL;
echo 'Verdediger '.$verdediger.' health: '.$spelers[$verdediger]['health'].PHP_EOL;
echo 'Verdediger '.$verdediger.' aanval: '.$spelers[$verdediger]['aanval'].PHP_EOL;
echo 'Verdediger '.$verdediger.' verdediging: '.$spelers[$verdediger]['verdediging'].PHP_EOL;
echo '<br />'.PHP_EOL;
// Dit stukje kan beter
$flip_attack = $verdediger;
$flip_defense = $aanvaller;
$aanvaller = $flip_attack;
$verdediger = $flip_defense;
}
echo 'Overall winnaar: '.$winner.PHP_EOL;
echo 'Ronden gespeeld: '.$rounds.PHP_EOL;
?>
die zie ik nu pas,
Hoe kan ik die dan combineren met een mysql systeem?
Link gekopieerd
Je haalt de gegevens op uit de database en met mysql_fetch_assoc() ga je fetchen. Vervolgens in bovenstaand script de juiste variabelen veranderen (een andere naam geven) en klaar ben je.
De array die ik heb gemaakt met de gegevens van de spelers, kun je zien als een mini-database.
Link gekopieerd
niek schreef op 23.06.2006 15:28
Nou, je ziet dus meteen dat player 2 beter is.
Stel er komt dan uit dat player1 80% kans heeft om te winnen, dan word er een getal tussen de 1 en de 100 ( met rand() ) gemaakt, en als het getal dan tussen de 1 en de 80 is, dat dan player1 wint, als het getal dan tussen de 81 en 100 is, wint player2
Beetje kromme redenatie. Nu heeft player1 vier keer zoveel kans om te winnen terwijl die de zwakste is.
Edit: Typo
Link gekopieerd
haha, scherp opgemerkt SanThe, zo had ik het nog niet gelezen. Maargoed, we komen er wel uit :)
Link gekopieerd
waarschijnlijk ligt het aan mij hoor, maar je bent hier bezig met kansberekening, vanwaar dan die rand() functie?
Link gekopieerd