Beste mensen van de prachtige site: PHPHULP :p

Ik ben nu bezig met een war-game. ( nee geen criminals :p )

En dan is het zo:
je hebt 2 mensen die vechten
player1 en player2 ( klinkt logisch )
en dan heb je dus bijvoorbeeld zo:

Player 1 heeft 20 attack_power_punten en 10 verdedig dingen
Player 2 heeft 30 attack_power_punten en 18 verdedig_punten...

Nou, je ziet dus meteen dat player 2 beter is.
Maar dan wil ik maken
dat er een soort van 'winpercentage' word berekent

Dan word er gekeken wie er beter is, en hoeveel 'kans' je dan hebt om te winnen.

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

Dan word er dus gebruik gemaakt van die winstpercentages.
En alles staat ook in mijn database, maaar: ik heb geen flauw idee hoe ik dat dan moet maken!? dus: hoe maak ik dat hij die percentages uitrekent, en hoe maak ik dat hij daaraan de rand() functie aanpast?

Ik heb al geprobeert,, maar kom er niet uit.

MvG,
Niek
Hmmm, ga je eens verdiepen in array's, dit wordt niks.

echo $row; kan niet omdat $row een array is. Verder snap ik niet wat $row in de array $spelers doet. De hele array $spelers kan richting grof vuil, dit was slechts een voorbeeldje omdat er geen database was. Je moet nu de data uit je database, die in de array $row staat, in je code gaan toepassen.

Met de query heb je 2 records opgehaald, controleer dit met mysql_num_rows(), nu moet je bepalen welk record van de aanvaller is en welke van de verdediger. Etc. etc. Je bent echt nog lang niet klaar!
haha...
ik kom er nu al niet meer uit..
maar als ik het goed begrijp
huh? ik vat het niet hoor...
Ik moet dus alles uit de db halen, dan alles gaan controleren? huh? ik vat het echt niet.. ( sorry ik weet het, ik ben een n00b.. )

lol:
ik ben nog lang niet klaar,, en ik snap er ook nog lang NIKS van...
hoe moet ikdan een array selecteren?
Ik gebruik nu mysql_fetch_assoc
maar die maakt ( als ik het goed begrijp ) 2 arrays aan.
Hoe selecteer ik dan eerst array a
en dan array b ( om er gegevens uit te halen ).
Want dat kan ik nu weer net niet uit de tutorials op php.net halen...
line 14 en 19 in bovenstaande script, daar staat $row[a] en $row[.b.]. Moet dat niet ['a'] en ['b'] zijn?

(soory voor die punten, maar anders wordt het bold :P)

En dat dat script eeuwig doorgaat, komt waarschiijnlijk doordat de while-loop niet stopt, en dat komt doordat er kennelijk niets van de health van de spelers afgaat, of te weinig.
mysql_fetch_assoc() maakt 1 array aan waar alle gegevens in staan. Heb je al eens bekeken en getest hoe je deze informatie kunt oproepen?

In de query staat het volgende stukje code: ... IN ('a', 'b')

Normaal komen de waardes a en b ergens vandaan, waarschijnlijk uit een formulier. Je moet tenslotte kunnen selecteren wie nu wie gaat aanvallen. Op basis van deze gegevens ga je dan vergelijken:
<?php
// eerste stuk van je code en dan:
foreach($row['speler'] as $speler){ // doorloop de array
if($speler == $_POST['aanvaller']){ // op zoek naar ....
$aanvaller = $speler;
// overige variabelen van de aanvaller aanmaken
}
else {
$verdediger = $speler;
// overige variabelen van de verdediger aanmaken
}
}
// rest van de code
?>
De rest mag je zelf gaan uitvogelen

<?php
include ('database.php');
$speler = 'a';
$henk = 'a';
$query = "SELECT naam,attack,defence FROM game_members WHERE speler IN ('a', 'b')";
$result = mysql_query($query) or die(mysql_error().' '.$query);
$row = mysql_fetch_assoc($result);
foreach($row['naam'] as $speler){ // doorloop de array
  if($speler == $henk){ // op zoek naar ....
    $aanvaller = $speler;
    // overige variabelen van de aanvaller aanmaken
  }
  else {
    $verdediger = $speler;
    // overige variabelen van de verdediger aanmaken
  }
}
/*
$spelers = array(
                'a' => array(
                //hier info over a uit de db halen
                            'aanval' => 20,
                            'verdediging' => 10,
                            'health' => 100
                            ),
                'b' => array(
                //hier info over b uit de db halen
                            '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;

?> 


Nu dacht ik het eindelijk te snappen, maar het werkt niet:

Parse error: parse error, unexpected T_STRING in C:\Program Files\xampp\htdocs\game\attack.php on line 8
maar ik weet niet hoe ik het zal moete oplossen...
niemand?? :-(
Mogelijk zit er een fout in database.php
nee, als ik die rechtstreeks open krijg ik namelijk ook geen error:

<?php
$dbname = 'niek';
$host = 'localhost';
$user = 'root';
$pass = '';
if (!mysql_select_db($dbname, mysql_connect($host, $user, $pass)))
	{

		echo 'MySQL Database Error.';			// MySQL connection error
		exit();
	}
?>

Reageren