IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Jeu "instant gagnant" en PHP [Fait]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut [Tableaux] Jeu "instant gagnant" en PHP
    Bonjour,

    Je suis en pleine étude de réalisation d'un jeu d'instant gagnant. Si quelqu'un l'a déjà fait, pourrait-il me dire si il faut utiliser une technologie particulière dans php ou si il suffit de php et mysql. Car mon problème se pose si j'obtiens plusieurs gagnants en même temps ce qui est impossible théoriquement en instant gagnant. Comment faire pour qu'il n'y est qu'un seul gagnant.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 250
    Points : 15 553
    Points
    15 553
    Par défaut
    Donne nous plus de détails sur ton problème. Qu'est ce que tu as comme tables ? Qu'est ce qui ne fonctionne pas ? Qu'est ce que tu t'attendais à avoir comme résultat ? Qu'est ce que tu as déjà fait comme tests ?

  3. #3
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    tu peux faire un "lock" sur la table stockant les gagnants et une vérif dans ton PHP lors de l'insertion qu'il n'y a pas déja un gagnant.
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    est-ce que tu peux clarifier la fonction lock ? Et comment l'utiliser pour mon jeu d'instant gagnant

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	$query="update pointspeed set nombre=nombre+1";
    	$result = mysql_query($query, $connection) or die('error making query');
    	$query2="select * from pointspeed";
    	$result2 = mysql_query($query, $connection) or die('error making query');
    	$data2=mysql_fetch_array($result2);
    	if ($data2[nombre]==10) {
    		echo 'gagne';
    		$query3="update pointspeed set nombre=0";
    		$result3 = mysql_query($query3, $connection) or die('error making query');
     
    	}
    	else {
    		echo 'perdu';
    	}

  6. #6
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Il faut faire comme Lorenzo te l'a suggéré: il te faut bloquer ta table avant de déclarer si le joueur est perdant ou gagnant. Si le script est executé à nouveau pendant la mise à jour de la table, il attendra que l'autre termine avant de fouiller. De cette manière, il n'y aura pas 2 gagnants simultanément.

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Si j'ai bien compris mais pas sur il faut que je locke la table avant mon code là
    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
    //ON BLOQUE LA TABLE POINTSPEED
    	$query="update pointspeed set nombre=nombre+1";
    	$result = mysql_query($query, $connection) or die('error making query');
    	$query2="select * from pointspeed";
    	$result2 = mysql_query($query, $connection) or die('error making query');
    	$data2=mysql_fetch_array($result2);
    	if ($data2[nombre]==10) {
    		echo 'gagne';
    		$query3="update pointspeed set nombre=0";
    		$result3 = mysql_query($query3, $connection) or die('error making query');
    	}
    	else {
    		echo 'perdu';
    	}
    //ON DEBLOQUE

    et sinon on puet locker juste une ligne d'une table ou pas?

  8. #8
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Non, quand on locke, c'est la table. Mais ne t'inquiete pas c'est ultra rapide... de l'ordre du millionième de secondes. Le fait de locker une table empeche que deux personnes interrogent la table en meme temps....

    @+
    cadou
    LMN24 - Site d'actualité internationale multilingue
    http://www.lmn24.com

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    mais dans ton cas chaque joueur va locker la table pour jouer et donc va jouer l'un après l'autre pour éviter qu'ils ne jouent ensemble c'est bien çà ???
    Et je suppose que deux lock table en même temps c'est impossible ???
    Et sinon par rapport à mon code au dessus je fais un lock table au début et je délocke à la fin et c'est tout?
    Avec tout çà je suis certain qu'un n'y aura qu'un seul gagnant ???
    Je trouve çà bizarre quand même car quand je vois le prix des scripts d'instants gagnants c'est chère voire très cher alors que selon vous il suffit de locker la table.

  10. #10
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Tu entend quoi par "deux locks en même temps" ?
    C'est un cas qui, par définition ne peux pas se produire.

    Le premier gars se pointe, il fait une consultation, ca lock la table. Tant qu'il n'a pas fini de lire, personne ne peut agir sur la table.

    Le suivant se pointe, avant que le premier ait fini, il va avoir la table locké.
    Le premier fini, le suivant peut aller lire (ou écrire hein ^^)

    A aucun moment deux personnes ne peuvent être entrain de lire en même temps, c'est l'interet du lock.

    Et quand au prix des scripts qui font ca... je dois avouer que quand j'ai besoin d'un script j'ai tendance à le faire moi même, donc je crains de ne pouvoir te renseigner correctement sur la question...
    J'imagine naivement, qu'il y a d'autre choses a gerer, comme les fonctions qui permettent l'appel par exemple, une éventuelle connection a la banque pour débiter des sous, ou je ne sais quoi encore...

    --
    Rakken
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  11. #11
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    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
    $query4="LOCK TABLES pointspeed write";
    	$result4 = mysql_query($query4, $connection) or die('error making query');
    	$query="update pointspeed set nombre=nombre+1";
    	$result = mysql_query($query, $connection) or die('error making query');
    	$query2="select * from pointspeed";
    	$result2 = mysql_query($query, $connection) or die('error making query');
    	$data2=mysql_fetch_array($result2);
    	if ($data2[nombre]==10) {
    		echo 'gagne';
    		$query3="update pointspeed set nombre=0";
    		$result3 = mysql_query($query3, $connection) or die('error making query');
    	}
    	else {
    		echo 'perdu';
    	}
    //ON DEBLOQUE
    	$query5="UNLOCK TABLES";
    	$result5 = mysql_query($query5, $connection) or die('error making query');
    Donc voilà le code que j'ai fait.
    Donc en imaginant un cas ou un grand nombre de joueurs jouent ensemble aux jeux ils vont chacun exécuter mon script ci-dessus et donc appeler l'instruction lock c'est çà que je trouve bizarre !!!
    Une petite explication ne serait pas de trop merci beaucoup

  12. #12
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    est-ce quelqu'un pourrait m'expliquer svp ???
    L'utilisation de lock et tout ce qui va avec et la syntaxe parce que j'ai essayé et çà ne marche pas.

  13. #13
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Instant-Gagnant multiple avec rentabiliweb
    Par AnGe7s dans le forum Langage
    Réponses: 20
    Dernier message: 16/08/2006, 12h20
  2. [Tableaux] souci avec des simples quotes
    Par Jean Fi dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo