Académique Documents
Professionnel Documents
Culture Documents
Choisir la langue
Aller à la recherche
Accueil > Forum > Site Web > PHP > Jeu de combat en PHP ( Pas du tuto )
Liste des forums
Jeu de combat en PHP ( Pas du tuto )
Sujet résolu
ToinouPHP
Je suis un "débutant +" alors j'essaye de trouver moi même, comment réaliser le
code, mais la j'ai un petit soucis, c'est pour la montée de niveau.
1
2
3
4
5
6
7
8
9
10
// Si on perd
$req = $bdd->prepare("UPDATE users SET experience = :experience WHERE id = :id");
$victime_xp = $victime->experience +10;
$req->execute(array('experience' => $victime_xp, 'id' =>
$victime->id));
// Si on gagne
1
$victime_xp = $victime->experience +10;
Cela fonctionnerais, mais non :/
1
2
3
$victime_xp = $victime->experience +10;
// et
$attaquant_xp = $attaquant->experience +10;
-Edité par ToinouPHP 21 novembre 2013 à 12:37:09
Fractaliste
Et pour y accéder tu le fais via des méthodes appelées les getters et setters.
1
2
3
4
5
6
7
8
9
10
11
class joueur {
protected $experience = 0;
public getExperience(){
return $this->experience;
}
public setExperience($valeur){
$this->experience = $this->experience + $valeur;
}
}
Et donc pour donner de l'expérience à ton joueur au cours du jeu tu feras :
1
2
$victime->setExperience(-10);
$attaquant->setExperience(+10);
Après on peut faire comme tu le faisais moyennant la correction de syntaxe. Mais
faut prendre les bonnes habitudes dès maintenant. L'avantage des getters et setters
c'est que ça centralise les traitements (par exemple si ton joueur gagne 1 niveau
il suffit de le prendre en compte dans le setter plutôt qu'à chaque fois que tu
donnes de l'expérience au cours de ton jeu).
Oui, j'ai honte de le dire, et je sais que cela ne fais pas très pro, mais
j'utilise simplement des while... ><
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
<?php
session_start();
include "config.php";
$bdd = new PDO('mysql:host='.$host.';dbname='.$db, $db_user, $db_password);
if (isset($_GET['user']))
{
$req = $bdd->prepare("SELECT * FROM users WHERE username = :id");
$req->execute(array('id' => $_GET['user']));
while ($data = $req->fetch(PDO::FETCH_OBJ))
{
}
if ($victime->vie < 0)
{
echo "Vous avez gagné.";
$req = $bdd->prepare("UPDATE persos SET vie = :vie WHERE id
= :id");
$req->execute(array('vie' => 200, 'id' => $attaquant->id));
$req = $bdd->prepare("UPDATE persos SET vie = :vie WHERE id
= :id");
$req->execute(array('vie' => 200, 'id' => $victime->id));
$req = $bdd->prepare("UPDATE users SET experience = :experience
WHERE id = :id");
$attaquant_xp = $attaquant->experience + 10;
$req->execute(array('experience' => $attaquant_xp, 'id' =>
$attaquant->id));
echo "<a href='profil.php?user=".
$_SESSION['pseudo']."'>Retour</a>";
}
}
}
}
?>
Fractaliste
1
2
3
4
5
6
object(stdClass)[2]
public 'id' => string '2' (length=1)
public 'id_user' => string '2' (length=1)
public 'nom' => string 'LudoNoob' (length=8)
public 'vie' => string '-60' (length=3)
public 'foorce' => string '20' (length=2)
Fractaliste
J'ai l'impression que tu essayes de modifier un champ de ta table users alors que
tu travaillais avec un champ de la table persos.
Le message d'erreur est claire : l'attribut experience n'est pas définie dans ton
objet.
Sinon ta syntaxe pour ajouter +10 d'expérience est correcte, dans le cas où les
variables existent évidemment.
ToinouPHP
J'ai l'impression que tu essayes de modifier un champ de ta table users alors que
tu travaillais avec un champ de la table persos.
J'ai honte.
Editeur ● Markdown
OPENCLASSROOMS
Qui sommes-nous ?
Financements
Expérience de formation
Forum
Blog
Presse
OPPORTUNITÉS
AIDE
EN PLUS
Français