Bonjour à Tous
Je reprend actuellement le développement d'un de mes ancien site de jeux par navigateur web,
et je suis actuellement bloqué sur l'implémentation du système de combat.
J'ai donc commencer une partie du script qui gére aléatoirement la rencontre d'un "Monstre" inscrit dans la DB suivit de 2 options : Combattre ou fuir.
Une fois l'options combattre chosi, le combat se lance, je récupere l'"atk" de l'attaquant et la "def" du defenseur selon le tours et applique les dommages, et ce jusqu'à ce que l'un des deux aient des points de vie <= 0. seulement avec le temps j'ai changé d'aviset je souhaite maintenant du tours par tours. je m'explique :
Je souhaite choisir l'option combattre ou fuir. une fois l'options combattre chosie alors :
1er tours Le joueur attaque le monstre,le monstre attaque le joueur.
si 1 des deux pdv <= 0 alors END,
Sinon 2eme tours le joueur choisi son attaque, le monstre attaque.
etc..
voici le code actuelle :
(petite précision je travaille avec l'outil de template Smarty.)
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 {if $combat eq ''} <p>You've encountered a {$monster}!</p> <form action='forest.php' method='post'> <input type='submit' name='action' value='Attack' /> or <input type='submit' name='action' value='Run Away' /> <input type='hidden' name='monster' value='{$monster}' /> </form> {else} <ul> {foreach from=$combat key=id item=i} <li><strong>{$i.attacker}</strong> attacks {$i.defender} for {$i.damage} damage!</li> {/foreach} </ul> {if $won eq 1} <p>You killed <strong>{$smarty.post.monster}</strong>! You gained <strong>{$earngold}</strong> gold.</p> <p><a href='forest.php'>Explore Again</a></p> {/if} {if $lost eq 1} <p>You were killed by <strong>{$smarty.post.monster}</strong>.</p> {/if} <p><a href='index.php'>Back to main</a></p> {/if}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 if($_POST) { if($_POST['action'] == 'Attack') { $query = sprintf("SELECT id FROM users WHERE UPPER(username) = UPPER('%s')", mysql_real_escape_string($_SESSION['username'])); $result = mysql_query($query); list($userID) = mysql_fetch_row($result); $player = array ( name => $_SESSION['username'], attack => getStat('atk',$userID), defence => getStat('def',$userID), curhp => getStat('curhp',$userID) ); $query = sprintf("SELECT id FROM monsters WHERE name = '%s'", mysql_real_escape_string($_POST['monster'])); $result = mysql_query($query); list($monsterID) = mysql_fetch_row($result); $monster = array ( name => $_POST['monster'], attack => getMonsterStat('atk',$monsterID), defence => getMonsterStat('def',$monsterID), curhp => getMonsterStat('maxhp',$monsterID) ); $combat = array(); $turns = 0; while($player['curhp'] > 0 && $monster['curhp'] > 0) { if($turns % 2 != 0) { $attacker = &$monster; $defender = &$player; } else { $attacker = &$player; $defender = &$monster; } $damage = 0; if($attacker['attack'] > $defender['defence']) { $damage = $attacker['attack'] - $defender['defence']; } $defender['curhp'] -= $damage; $combat[$turns] = array( attacker => $attacker['name'], defender => $defender['name'], damage => $damage ); $turns++; } setStat('curhp',$userID,$player['curhp']); if($player['curhp'] > 0) { // player won setStat('gc',$userID,getStat('gc',$userID)+getMonsterStat('gc',$monsterID)); $smarty->assign('won',1); $smarty->assign('earngold',getMonsterStat('gc',$monsterID)); $smarty->assign('gold',getStat('gc',$userID)); } else { // monster won $smarty->assign('lost',1); } $smarty->assign('combat',$combat); } else { // Running away! header('Location: index.php'); } } else { $query = sprintf("SELECT name FROM monsters ORDER BY RAND() LIMIT 1"); $result = mysql_query($query); list($monster) = mysql_fetch_row($result); $smarty->assign('monster',$monster); }
Partager