Scrabble facile...

Soyez le premier à donner votre avis sur cette source.

Vue 30 397 fois - Téléchargée 1 039 fois

Description

Bonjour,
Cette source n'as rien de nouveau, puisqu'elle n'utilise ques des classiques : boucles for, array...mais l'idée est unique...ent ou tout cas sur phpcs.com car je n'ai pas trouver de script pour trouvez le maximum de mots avec les lettres tirée du scrabble :
Avec ce script, vous entrez toutes les lettres (7) que vous avez tirer dans le tas, puis valider. Le script vas chercher tous les mots dans la base de donnée que peuvent former les lettres tirée (des mots de 7 lettres...à ceux de 2 ou 3). Puis le script affiche bien sur ces mots..
C'est mon deuxième script posté ici (le premier à été supprimé) et je sais que ca vas casser dur dur...mais bon..j'ai éssayer de faire au mieux en lisant les autres commentaires des autres sources...comme le <? => <?php, ' à la place de "...etc...mais je suis sur que vous allez trouvez quelque chose à modifier...ou des conseils pour la clarté du code ou des 'trucs' pour simplifier.
Pour le faire fonctionner, modifier le fichier mysql.php (conf/mysql.php), et importer le fichier SQL dans votre base.

Source / Exemple :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Scrabble</title>
<style type="text/css">
<!--
body
{
	margin:auto;
	width:50%;
}
-->
</style>
<link href="css/design1.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="bloc">
<?php

	include('conf/mysql.php');//Inclusion du script de connexion
	$lettre[0] = $_GET['lettre1'];
	$lettre[1] = $_GET['lettre2'];
	$lettre[2] = $_GET['lettre3'];
	$lettre[3] = $_GET['lettre4'];
	$lettre[4] = $_GET['lettre5'];
	$lettre[5] = $_GET['lettre6'];
	$lettre[6] = $_GET['lettre7'];
?>
<table align="center" width="75%" border="1">
<tr align="center" style="font-weight:bold"><td>Mot</td><td>Taille</td></tr>
<?php

   $qry = 'SELECT * FROM dico'; //remplacer * par lettre, mot
   $requete = mysql_query($qry) or die('Erreur MySQL : <br />' . mysql_error());
   while($data = mysql_fetch_array($requete))
   {
        if($data['long'] <= 7)//Pour les mots <= à 7 (7 lettres par tirage au Scrabble)
        {
            $taille = strlen($data['mot']);//Détermination de la longeur du mot
            for($i=0;$i<$taille;$i++)
            {
                $dico[$i] = substr($data['mot'],$i,1);//Création de l'array du mot du dico
            }
            $nbjuste = 0;
            for($j=0;$j<7;$j++)
            {
                for($h=0;$h<$taille;$h++)//Pour chaque lettre de chaque mot puis on compare a l'array envoyé en PSOT
                {
                    if($lettre[$j] == $dico[$h])
                    {
                        $dico[$h] = "0";
                        $nbjuste = $nbjuste + 1;
                        $h = $taille + 1;
                    }
                }
            }
            if ($nbjuste==$taille)
	    {
                echo '<tr align="center"><td>' . $data['mot'] . '</td><td>' . $data['long'] . '</td></tr>';//On crée une ligne de tableau par mot trouvé...
            }
          
        }
}

?>
</table>
<input type="button" onclick="document.location='index.html'" value="Autre tirage" tabindex="1" />
</div>
</body>
</html>

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6
Date d'inscription
lundi 10 novembre 2003
Statut
Membre
Dernière intervention
18 mars 2010

Hello
Qui a une solution pour supprimer les doublons dans les résultats et en compter le nombre. Merci par avance.
Cordialement à tous les phpistes.

CODE index.html ça peut intéresser quelqu'un !
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>SCRABBLE</title>
<STYLE>

.over{font-size:12;font-weight:demi-bold;font-family:Verdana;color:#000000;background:#FFFF00}
.down{font-size:12;font-weight:demi-bold;font-family:Verdana;color:#000000;background:#FF0000}
.out{font-size:12;font-weight:demi-bold;font-family:Verdana;color:#FFFFFF;background:#000000}
input.btn{font-size:12;font-weight:demi-bold;font-family:Verdana;color:#FFFFFF;background:#000000}
input{text-align:center;font-size:12;font-weight:demi-bold;font-family:Verdana;color:#FFFFFF;background:#000000}
input.nx{text-align:center;font-size:14;font-weight:demi-bold;font-family:Verdana;color:#000000;background:#FFFFFF}
textarea{text-align:left;font-size:12;font-weight:demi-bold;font-family:Verdana;color:#F0F0F0;background:#000000}
HR {color:#FFFF00}
</STYLE>

</head>

<center>


<form action="scrabble.php" method="get">
<fieldset>
<legend>TIRAGE</legend>
<label> Entrez vos 7 lettres : </label>

Tirage minimum <select name="mini">

<option value='2'>2 lettres</option>
<option value='3'>3 lettres</option>
<option value='4'>4 lettres</option>
<option value='5'>5 lettres</option>
<option value='6'>6 lettres</option>
<option value='7'>Scrabble</option>

</select>
</fieldset>


</form>

</html>

CODE scrabble.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>SCRABBLE</title>
<style>
a:link {color: #FFEFB5; text-decoration: none}
a:visited {color: #000000; text-decoration: none}
a:hover {color: #ffffff; text-decoration: none}
</style>
<script type="text/javascript">
/*
SCRIPT DE L'EDITEUR JAVASCRIPT
http://www.editeurjavascript.com
*/
go_visibility = new Array;

function goblink()
{
if(document.getElementById && document.all)
{
blink_tab = document.getElementsByTagName('blink');
for(a=0;a
<STYLE>
.over{font-size:12;font-weight:demi-bold;font-family:Verdana;color:#000000;background:#FFFF00}
.down{font-size:12;font-weight:demi-bold;font-family:Verdana;color:#000000;background:#FF0000}
.out{font-size:12;font-weight:demi-bold;font-family:Verdana;color:#FFFFFF;background:#000000}
input.btn{font-size:12;font-weight:demi-bold;font-family:Verdana;color:#FFFFFF;background:#000000}
input{text-align:center;font-size:12;font-weight:demi-bold;font-family:Verdana;color:#FFFFFF;background:#000000}
input.nx{text-align:center;font-size:14;font-weight:demi-bold;font-family:Verdana;color:#000000;background:#FFFFFF}
textarea{text-align:left;font-size:12;font-weight:demi-bold;font-family:Verdana;color:#F0F0F0;background:#000000}
HR {color:#FFFF00}
</STYLE>
</head>

<center>
<center>
<?php

include('conf/mysql.php');//Inclusion du script de connexion
$lettre[0] = $_GET['lettre1'];
$lettre[1] = $_GET['lettre2'];
$lettre[2] = $_GET['lettre3'];
$lettre[3] = $_GET['lettre4'];
$lettre[4] = $_GET['lettre5'];
$lettre[5] = $_GET['lettre6'];
$lettre[6] = $_GET['lettre7'];
$mini = $_GET['mini'];

?>

<?php

$maxi=8;
$qry = "SELECT DISTINCT mot FROM dico WHERE length(mot)<$maxi and length(mot)>=$mini order by length(mot) ";
$requete = mysql_query($qry) or die('Erreur MySQL :
' . mysql_error());
$nb_resultats = mysql_num_rows($requete);

$lettre1= $lettre[0];
$chaine1 = strtoupper("$lettre1");

$lettre2= $lettre[1];
$chaine2 = strtoupper("$lettre2");

$lettre3= $lettre[2];
$chaine3 = strtoupper("$lettre3");

$lettre4= $lettre[3];
$chaine4 = strtoupper("$lettre4");

$lettre5= $lettre[4];
$chaine5 = strtoupper("$lettre5");

$lettre6= $lettre[5];
$chaine6 = strtoupper("$lettre6");

$lettre7= $lettre[6];
$chaine7 = strtoupper("$lettre7");

echo'Recherche parmis '.$nb_resultats.' mots
avec les lettres

<table align="middle" valign="middle" border="0" cellspacing="0" cellpadding="0">----, <center>'.$chaine1.' </td>
<center>'.$chaine2.',
<center>'.$chaine3.',
<center>'.$chaine4.',
<center>'.$chaine5.',
<center>'.$chaine6.',
<center>'.$chaine7.'

| [javascript:history.go(-1) Retour] |';
echo'

Mots trouvés, Nombre de lettre, Points, ';
while($data = mysql_fetch_array($requete))
{

$taille = strlen($data['mot']);//Détermination de la longeur du mot
if($taille == 7)//Pour les mots de 7 lettres par tirage affiche scrabble
{
$scrabble=' scrabble ';
}
elseif($taille ! =7)
{
$scrabble=$taille; //affiche la taille
}

for($i=0;$i<$taille;$i++)
{
$dico[$i] = substr($data['mot'],$i,1);//Création de l'array du mot du dico
}
$nbjuste = 0;
for($j=0;$j<7;$j++)
{
for($h=0;$h<$taille;$h++)//Pour chaque lettre de chaque mot puis on compare a l'array envoyé en POST
{
if($lettre[$j] == $dico[$h])
{
$dico[$h] = \"0\";
$nbjuste = $nbjuste + 1;
$h = $taille + 1;
}
}

$mot= $data['mot'];

$chaine = strtoupper(\"$mot\");

if ($nbjuste==$taille)
{

echo '----
' . $chaine.', '.$scrabble.' , , ';//On crée une ligne de tableau par mot trouvé...
}

}
}

?>

</td></tr></table>

</html>
Messages postés
1
Date d'inscription
vendredi 4 mai 2007
Statut
Membre
Dernière intervention
18 novembre 2007

mot de passe pour le fichier Mysql
Messages postés
147
Date d'inscription
lundi 16 août 2004
Statut
Membre
Dernière intervention
14 novembre 2009

Pour améliorer le rendement, il faudrait peut-être commencer par supprimer les doublons de la table; en entrant les lettres du mot "memoire", on obtient 3 fois "meme", 2 fois "memoire", 3 fois "mer", etc...
Ensuite, puisque seuls les mots comportants 7 caractères au plus sont intéressants, pourquoi ne pas les sélectionner directement dans ta requête :
SELECT * FROM `dico` WHERE length(mot)<8
Cas extrême, si ta table ne sert que pour cette requête, tu peux même envisager la suppression de tous les mots de longeur supérieure à 7 caractères.
Messages postés
72
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
5 février 2010

Salut
Merci de tous ces commentaires.
Pour pouvoir completer un mot tel que entendu, il faudrai entrer tous les mots présents sur le plateau de jeux...ca risque d'etre assez bazard à la fin tout ça, ou alors il faut faire tout le jeux en php, avec le plateau, les lettres les cases triple..Etc...
Vu le newbie que je suis je pense que d'ici 15 ou 20 ans j'y serai arrivé ;-)
En fais j'ai fais ce code pour ma copine qui me saoule quand elle joue genre 'tu voit pas un mot avec ca !?' donc le but premier est en fait de 'tricher' au scrabble, mais si on devai faire un jeux complet en php, il ne faudrait surtout pas reprendre mon code, mais comme je l'ai dis ce n'était pas mon attention non plus !!
Merci encore de vos commentaire (PS: en tant que Newbie, l'utilisation des classes est encore floue pour moi !!)
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Plusieurs choses quant à ce que tu dis...

Effectivement, le fait que ton algo ne trouve pas tous les mots peut être vu comme une limitation. J'ai bien dit, PEUT, parce que c'est proche de ce que fait l'humain : rares sont les personnes capables de trouver TOUS les mots possibles avec un tirage en moins de XX secondes. Cependant, ce n'est peut-être pas ce qu'on attend d'un logiciel.

Tu dis qu'il ne trouvera pas malus à mettre sur le u de entendu. Certes. Mais était-ce bien là le but de cette source ? Si j'ai bien compris ce que j'ai vu, elle sert surtout à dire quels sont les mots possibles avec un tirage. Après, ce serait à l'humain de voir lesquels peuvent être placés, combien de points chacun rapporte, comment gêner l'adversaire en prenant le mot compte triple avant lui, etc.

Pour la construction de malentendu à partir de entendu, je ferais pas comme ça... Partant de ce mot, je cherche ceux qui existent qui le contiennent. Je vérifie pour chaque mot quelles sont les lettres nécessaires et une simple regex me dit si je les ai ou pas. Je ne comprends pas ton histoire d'alternance gauche/droite... C'est pas de la politique au moins ?
Afficher les 20 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_spoonisback)