Vous n'êtes pas identifié(e).
Pages : 1
ok merci , je vais tout revoir alors .
voila tout le code :
?>
<?php
class PersonnagesManager
{
private $_db; // Instance de PDO
public function __construct($db)
{
$this->setDb($db);
}
public function add(Personnage $perso)
{
$q = $this->_db->prepare('INSERT INTO personnages SET nom = :nom');
$q->bindValue(':nom', $perso->nom());
$q->execute();
$perso->hydrate(array(
'id' => $this->db->lastInsertId(),
'degats' => 100,
));
}
public function count()
{
return $this->_db->query('SELECT COUNT(*) FROM personnages')->fetchColumn();
}
public function delete(Personnage $perso)
{
$this->_db->exec('DELETE FROM personnages WHERE id = '.$perso->id());
}
public function exists($info)
{
if (is_int($info)) // On veut voir si tel personnage ayant pour id $info existe
{
return (bool) $this->_db->query('SELECT COUNT(*) FROM personnages WHERE id = '.$info)->fetchColumn();
}
// Sinon, c'est qu'on veut vérifier que le nom existe ou pas
$q = $this->_db->prepare('SELECT COUNT(*) FROM personnages WHERE nom = :nom');
$q->execute(array(':nom' => $info));
$q = $this->_db->prepare('SELECT COUNT(*) FROM personnages WHERE motdepasse = :motdepasse');
$q->execute(array(':motdepasse' => $info));
return (bool) $q->fetchColumn();
}
public function get($info)
{
if (is_int($info))
{
$q = $this->_db->query('SELECT id, nom, degats, motdepasse FROM personnages WHERE id = '.$info);
$donnees = $q->fetch(PDO::FETCH_ASSOC);
return new Personnage($donnees);
}
else
{
$q = $this->_db->prepare('SELECT id, nom, degats FROM personnages WHERE nom = :nom');
$q->execute(array(':nom' => $info));
$q = $this->_db->prepare('SELECT id, nom, degats FROM personnages WHERE motdepasse = :motdepasse');
$q->execute(array(':motdepasse' => $info));
return new Personnage($q->fetch(PDO::FETCH_ASSOC));
}
}
public function getList($nom)
{
$persos = array();
$q = $this->_db->prepare('SELECT id, nom, degats, motdepasse FROM personnages WHERE nom <> :nom ORDER BY nom');
$q->execute(array(':nom' => $nom));
while ($donnees = $q->fetch(PDO::FETCH_ASSOC))
{
$persos[] = new Personnage($donnees);
}
return $persos;
}
public function update(Personnage $perso)
{
$q = $this->_db->prepare('UPDATE personnages SET degats = :degats WHERE id = :id');
$q->bindValue(':degats', $perso->degats(), PDO::PARAM_INT);
$q->bindValue(':id', $perso->id(), PDO::PARAM_INT);
$q->execute();
}
public function setDb(PDO $db)
{
$this->_db = $db;
}
}
?>
<?php
// On enregistre notre autoload
function chargerClasse($classname)
{
require $classname.'.class.php';
}
spl_autoload_register('chargerClasse');
session_start(); // On appelle session_start() APRÈS avoir enregistré l'autoload
if (isset($_GET['deconnexion']))
{
session_destroy();
header('Location: .');
exit();
}
$db = new PDO('mysql:host=localhost;dbname=personnages', 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // On émet une alerte à chaque fois qu'une requête a échoué
$manager = new PersonnagesManager($db);
if (isset($_SESSION['perso'])) // Si la session perso existe, on restaure l'objet
{
$perso = $_SESSION['perso'];
}
if (isset($_POST['creer']) && isset($_POST['nom'])) // Si on a voulu créer un personnage
{
$perso = new Personnage(array('nom' => $_POST['nom'])); // On crée un nouveau personnage
if (!$perso->nomValide())
{
$message = 'Le nom choisi est invalide.';
unset($perso);
}
elseif ($manager->exists($perso->nom()))
{
$message = 'Le nom du personnage est déjà pris.';
unset($perso);
}
if (isset($_POST['creer']) && isset($_POST['motdepasse'])) // Si on a voulu créer un personnage
{
$perso = new Personnage(array('motdepasse' => $_POST['motdepasse'])); // On crée un nouveau personnage
if (!$perso->motdepassevalid())
{
$message = 'Le mot de passe choisi est invalide.';
unset($perso);
}
}
else
{
$manager->add($perso);
}
}
elseif (isset($_POST['utiliser']) && isset($_POST['nom'])) // Si on a voulu utiliser un personnage
{
if ($manager->exists($_POST['nom']) AND $manager->exists($_POST['motdepasse']) )// Si celui-ci existe
{
$perso = $manager->get($_POST['nom']) AND $perso = $manager->get($_POST['motdepasse']);
}
else
{
$message = 'mot de passe ou nom invalide'; // S'il n'existe pas, on affichera ce message
}
}
elseif (isset($_GET['frapper'])) // Si on a cliqué sur un personnage pour le frapper
{
if (!isset($perso))
{
$message = 'Merci de créer un personnage ou de vous identifier.';
}
else
{
if (!$manager->exists((int) $_GET['frapper']))
{
$message = 'Le personnage que vous voulez frapper n\'existe pas !';
}
else
{
$persoAFrapper = $manager->get((int) $_GET['frapper']);
$retour = $perso->frapper($persoAFrapper); // On stocke dans $retour les éventuelles erreurs ou messages que renvoie la méthode frapper
switch ($retour)
{
case Personnage::CEST_MOI :
$message = 'Mais... pourquoi voulez-vous vous frapper ???';
break;
case Personnage::PERSONNAGE_FRAPPE :
$message = 'Le personnage a bien été frappé !';
$manager->update($perso);
$manager->update($persoAFrapper);
break;
case Personnage::PERSONNAGE_TUE :
$message = 'Vous avez tué ce personnage !';
$manager->update($perso);
$manager->delete($persoAFrapper);
break;
}
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>TP : Mini jeu de combat</title>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>Nombre de personnages créés : <?php echo $manager->count(); ?></p>
<?php
if (isset($message)) // On a un message à afficher ?
{
echo '<p>', $message, '</p>'; // Si oui, on l'affiche
}
if (isset($perso)) // Si on utilise un personnage (nouveau ou pas)
{
?>
<p><a href="?deconnexion=1">Déconnexion</a></p>
<fieldset>
<legend>Mes informations</legend>
<p>
Nom : <?php echo htmlspecialchars($perso->nom()); ?><br />
Dégâts : <?php echo $perso->degats(); ?>
</p>
</fieldset>
<fieldset>
<legend>Qui frapper ?</legend>
<p>
<?php
$persos = $manager->getList($perso->nom());
if (empty($persos))
{
echo 'Personne à frapper !';
}
else
{
foreach ($persos as $unPerso)
{
echo '<a href="?frapper=', $unPerso->id(), '">', htmlspecialchars($unPerso->nom()), '</a> (dégâts : ', $unPerso->degats(), ')<br />';
}
}
?>
</p>
</fieldset>
<?php
}
else
{
?>
<form action="" method="post">
<p>
Nom : <input type="text" name="nom" maxlength="50" />
mot de passe : <input type="text" name="motdepasse" maxlength="50" />
<input type="submit" value="Créer ce personnage" name="creer" />
<input type="submit" value="Utiliser ce personnage" name="utiliser" />
</p>
</form>
<?php
}
?>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=personnages', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT * FROM image');
while ($donnees = $reponse->fetch())
{
echo '<img src="'.$donnees['image'].'" />';
}
$reponse->closeCursor();
?>
</body>
</html>
<?php
if (isset($perso)) // Si on a créé un personnage, on le stocke dans une variable session afin d'économiser une requête SQL
{
$_SESSION['perso'] = $perso;
}
oui mais j'ai enregistrer dans la base de donné la vie qui a pour depart 100 et ainsi les -5 sont enlever pour la vie de la base de donné donc il garde la valeur et ne revient pas a 100
Sa c'est déjà fait pour sa il y a pas de problème si j'attaque un joueur il lui enleve bien -5 de vie là j'ai pas mit tout le code juste la partie qui me bloque car je pour recevoirDegats sa fonctionne mais c'est gagnerDegats qui ne fonctionne pas ou plutot gagnervie .
Je voulais un jeu simple, donc notre perso commence avec 100 de vie , donc 100 de degats vue que j'ai pas modifié , quand on clique sur un autre joueur on l'attaque et on lui enleve -5 de vie , si lorsque qu'on attaque le joueur et que sa vie passe en dessous de 1 il est tué et celui qui l'a tué recupere 5 point de vie .
J'avais eu l'idée de faire une limitation d'attaque mais sa je vais m'y attarder apres.
merci , j'ai bien modifié donc pour sa il y a pas de probleme sinon pour mon probleme j'ai penser a faire sa mais sa fonctionne pas
Ce code s'est colorisé comme par magie, MK y est 'cor'assez pour quelque chose
a la place de degats c'est point de ve mais j'ai pas encore modifié de perdre de m'y perdre , sinon c'est vrai que gagner degats sa fait bizarre
Bonjours , je m'entraine en ce moment au php , j'ai donc voulu modifier un peu le cript du tp :mini jeu de combats pour ceux qui connaisse, j'ai penser a faire un systeme plus de vie avec notre vie qui diminue en fonction des degats pris , cela je l'ai fait sans probleme car j'ai modifier la valeur de degats en mettant 100 et j'ai mit -5 au lieu de +5 quand on doit recevoir des degats , j'ai voulu faire ensuite faire un systeme ou on regagnait de la vie quand on tuait un personnage , et la viens mon probleme par rapport a la fonction if , car j'arrive a rajouter de la vie au personnage qu'on attaque si sa vie passe en dessous de 50 par exemple mais j'arrive pas a rajouter de la vie a notre propre personnage quan on n'arrive a en tuer un autre .
public function degats()
{
return $this->_degats;
}
public function id()
{
return $this->_id;
}
public function nom()
{
return $this->_nom;
}
public function setDegats($degats)
{
$degats = (int) $degats;
if ($degats >= 0 && $degats <= 100)
{
$this->_degats = $degats;
}
}
public function setId($id)
{
$id = (int) $id;
if ($id > 0)
{
$this->_id = $id;
}
}
public function setNom($nom)
{
if (is_string($nom))
{
$this->_nom = $nom;
}
}
}
?>
je sais pas quoi mettre a la place de $perso pour que sa soit notre degat qui augmente
par contre j'ai pas encore remplacer degats mais a la place c'est plutot la vie.
Ce code s'est colorisé comme par magie, MK y est 'cor'assez pour quelque chose
c'est pour que se bouton se rapporte au message aélatoire
ba chaque membre a son id , son speudo , son email et ses points
nan c'est une table teste j'en n'ai fais justement plusieurs
ba elle fonctionne très bien quand je fait un tableau avec point et nombutton mais quand je veux que cela se fasse par membre sa marche pas mais bon je pense qu'il y a pas grand chose a modifier pour que cela fonctionne
bonjours j'ai fait ce code qui ajoute des point par rapoort au message aléatoire
j'ai créer donc une nouvelle ligne au tableau avec point et donc chaque membre a ces point par contre le code ne fonctionne pas cela ne rajoute aucune valeur , la valeur de point reste a 0
if(isset($_POST['Envoyer'])){
// ici les clés sont le nombre de points a incrémenter (1 point pour le message 1, 3 points pour le message 2...)
$quotes = array(
0 => 'dommage tu as rien gagner',
1 => 'bravo tu as gagner 1 point',
3 => 'bravo tu as gagner 2 point',
4 => 'bravo tu as gagner 3 point',
6 => 'bravo tu as gagner 6 point'
);
$cle = array_rand($quotes);
$stmt = $bdd->prepare("UPDATE membres SET point = point + :nbr WHERE nomButton = 'Envoyer'");
$stmt->bindValue('nbr', $cle, PDO::PARAM_INT);
$stmt->execute();
$msg = '<p>'.$quotes[$cle].'</p>';
}
$reponse = $bdd->query('SELECT nomButton, point FROM membres');
while($data = $reponse->fetch(PDO::FETCH_ASSOC)) {
echo 'Nom du bouton : ' . $data['nomButton'] . ' - nombre de points : ' . $data['point'] . '<br />';
}
echo '<form method="post" action="">
<fieldset><legend>Bouton envoyer</legend>
<input type="submit" name="Envoyer" value="Envoyer" />
</form></fieldset></form>';
if(isset($msg))
echo $msg;
?>
ouai c'est pas tout a fais ce que je demandais j'ai essayer de modifier le code ce qui me donne ceci:
while($data = $reponse->fetch()) {
echo 'Nom du bouton : ' . $data['nomButton'] . ' - nombre de clics : ' . $data['nbrclick'] . '<br />';
}
echo "<fieldset><legend>Bouton envoyer</legend><form method=\"post\" action=\"\">";
echo "<input type=\"submit\" name=\"Envoyer\" value=\"Envoyer\">";
echo "</form></fieldset>";
if(isset($_POST['Envoyer'])) {
{
$quotes[] = "message 1";
$quotes[] = "message 2";
$quotes[] = "message 3";
$quotes[] = " message 4";
srand ((double) microtime() * 1000000);
$randomquote = rand(0,count($quotes)-1);
echo "<p>" . $quotes[$randomquote] . "</p>";
}
}
if(isset($quotes[$randomquote] == "message 1" )) {
$bdd->exec("UPDATE jeux_perso SET nbrclick = nbrclick + 1 WHERE nomButton = 'Envoyer'");
}
}
mais j'ai uen erreur a la ligne if(isset($quotes[$randomquote] == "message 1" ))
enfaite j'ai modifier et j'ai fais d'abord un compteur de clique
que voici
while($data = $reponse->fetch()) {
echo 'Nom du bouton : ' . $data['nomButton'] . ' - nombre de clics : ' . $data['nbrclick'] . '<br />';
}
echo "<fieldset><legend>Bouton envoyer</legend><form method=\"post\" action=\"\">";
echo "<input type=\"submit\" name=\"Envoyer\" value=\"Envoyer\">";
echo "</form></fieldset>";
if(isset($_POST['Envoyer'])) {
$bdd->exec("UPDATE jeux_perso SET nbrclick = nbrclick + 1 WHERE nomButton = 'Envoyer'");
}
?>
j'ai créer bien sur un tableau avec nombutton et nbrclik
mais je voudrais faire cela par rapport a mes message alétaoire , je voudrais modifier ce compteur de clique que pour a la place d'additionnner 1 a la valeur du clique contenue dans le tableau , qu'il y est +1 au nbrclick lorsque le message :"message 1" apparait quand on appuie sur submit , qu'il y est +2 si le message est "message 2"........
Bonjours
Alors voici déja le code
echo '<p>vie:</p>';
$_SESSION['vie'] = 25;
echo $_SESSION['vie'];
echo '<p>experience:</p>';
$_SESSION['experience'] = 00;
echo $_SESSION['experience'];
echo '<p>attaque:</p>';
echo '<p>min:</p>';
$_SESSION['min'] = 5;
echo $_SESSION['min'];
echo '<p>max:</p>';
$_SESSION['max'] = 7;
echo $_SESSION['max'];
?>
<?php
?>
<form action="index.php" method="post">
<p>
<input type="submit" name="envoyer" value="Envoyer" />
</p>
</form>
<?php
?>
<?php
{
$quotes[] = "message 1";
$quotes[] = "message 2";
$quotes[] = "message 3";
$quotes[] = " message 4";
srand ((double) microtime() * 1000000);
$randomquote = rand(0,count($quotes)-1);
echo "<p>" . $quotes[$randomquote] . "</p>";
if( $quotes[$randomquote] == "message 1" )
$_SESSION['experience'] += 10;
if( $_SESSION['experience'] == 60 )
{
}
}
?>
bon ce que je veux faire c'est que en appyant sur envoyer il y a un message aléatoire qui s'affiche , mais lorsque le message s'affichant est "message 1 " , je veux que cela rajoute +10 au la valeur 00 de ' experience' bon je pense avoir trouvé comment faire en mettant
mais bon cela ne marche pas car page recharger réassigne 00 dans la variable 'experience' et donc la je suis bloquer et je ne sais pas comment faire
Pages : 1