[PHP5][POO][JEUX] SUDOKU

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 20 avril 2006 à 07:48
nlion Messages postés 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 1 mars 2009 - 3 sept. 2008 à 14:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37150-php5-poo-jeux-sudoku

nlion Messages postés 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 1 mars 2009
3 sept. 2008 à 14:20
Entièrement d'accord avec athanor70. Dommage !

Une piste : faire un algo de résolution par méthode de déduction (raisonement humain) pour tester ta grille générée.

Les méthodes de résolutions utilisées peuvent être :
- valeurs interdites
- solitaire nu
- paires nues visibles
- paires nues cachées

On peut ajouter triples nues visibles et cachés, X-Wing et Swordfish. X-Wing et Swordfish risquent d'être un peu lourd pour du php... Je n'ai pas encore testé... Je ne sais pas trop comment m'y prendre pour le moment...

Le niveau de difficulté peut être ainsi déterminé par la méthode de résolution.

Je vois que le dernier post est de 2007. Peut-être que ton projet a évolué depuis ?

Voici ma version si tu veux t'en inspirer ;) et si tu as des idées...
http://www.phpcs.com/codes/PARTIE-SUDOKU-CHOISSISSEZ-DIMENSION-NIVEAU-DIFFICULTE-TYPE-GRILLE_46204.aspx

++
athanor70 Messages postés 3 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 26 mai 2007
26 mai 2007 à 01:09
petits problèmes :

- plusieurs solutions pour une grille
- niveau de difficulté créé par le nombre de cases vides, ce qui n'est pas une bonne façon de proceder. Le niveau de difficulté ne depend pas que de cela, mais plutot des methodes que doit employer le joueur pour trouver LA solution (t'en fais pas, j'ai mis des mois et des mois a trouver pour mon jeu sudoku imperator en delphi)
stqv Messages postés 4 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 22 octobre 2006
22 oct. 2006 à 14:10
bonjour,

j'essaie d'integrer ton code sur mon srv local, et je rencontre un problème.

n'utilisant pas les sessions, je ne voi pas comment remplacer la ligne "$sudoku=unserialize($_SESSION['sudoku']);" dans mon code
cs_dorad Messages postés 1 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006
1 sept. 2006 à 12:51
Bjr,
pour ma part, j utilise un algo different,
que je mettrais en ligne dés qu'il sera finalisé,

C.A.D. :

je me heurte comme toi, au fait qu il reste plusieurs
solutions à une grille donnée, et cela ne me convient pas,
je cherche la soluce dans les maths, notamment sur la definition des masques des chiffres affichés.


A++; bon courage et bon php a tous
Nifhell Messages postés 48 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 23 avril 2006
29 août 2006 à 13:19
Certes il y a une erreur, merci de me l'avoir signaler et je fais la mise à jour de suite.

Cependant as tu jeté un coup d'oeil à la ligne 486 du fichier csudoku.php5?
blolenain Messages postés 12 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
26 août 2006 à 10:20
J'ai la même erreur que fudark maintenant!!

Fatal error: Call to undefined method CSuDoKu::toCTable() in /mnt/108/sdc/8/4/rdv.blaireaux/jeux/sudoku/csudoku.php5 on line 486

Si vous pouvez nous aider ...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 août 2006 à 18:21
Je veux dire l'extension des pages, hein...évidemment.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 août 2006 à 18:20
Renomme tes pages en .php5 (essaye avec ce code-ci), t'auras une surprise... ;-)
blolenain Messages postés 12 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
25 août 2006 à 18:11
Oui mais là c'est free qui gère ^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 août 2006 à 18:09
Il ne te reste plus qu'à installer PHP5 ;-)
blolenain Messages postés 12 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
25 août 2006 à 18:03
Ah oui effectivement !
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 août 2006 à 17:58
phpinfo ();
blolenain Messages postés 12 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
25 août 2006 à 17:54
Comment on fait pour le savoir ?
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 août 2006 à 17:52
Blolenain => c'est un code PHP5. Tu utilises PHP4.
blolenain Messages postés 12 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
25 août 2006 à 17:48
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/108/sdc/8/4/rdv.blaireaux/jeux/sudoku/csudoku.php on line 15

Moi j'ai cette erreur là!
comment y remedier ?
fudark Messages postés 1 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 24 août 2006
24 août 2006 à 13:06
il m'a rendu une error:
Fatal error: Call to undefined method CSuDoKu::toCTable() in C:\AppServ\www\test\csudoku.php on line 486
et donc, qu'est ce que je pourais faire
CodaVirgule Messages postés 28 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 18 juin 2006
18 juin 2006 à 11:56
Bravo.
Merci pour cette source.
cs_spyro666 Messages postés 137 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 28 août 2007
5 mai 2006 à 09:24
Absolument impressionnant :|
Nifhell Messages postés 48 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 23 avril 2006
26 avril 2006 à 12:47
Bon,
j'ai trouvé un bug... la méthode CSuDoKuSquare::isValid() ne renvoie rien...
Je ferai une MAJ dés que j'aurais corrigé...
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 avril 2006 à 19:04
en même temps qui sait, c'est l'heure du serveur, peut-être que chez lui il est 4 heures du mat si il n'est pas en france ^^
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
24 avril 2006 à 17:20
"Bienvenue à geekland, et fier de l'être!!! LOL)"=> sur tes 7 messages, t'en as pas de posté à 4h du mat ^^
Nifhell Messages postés 48 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 23 avril 2006
24 avril 2006 à 16:32
Merci pour le "coup de coeur", t'aurais vu la version précédente de ce site, des caractères "orange" sur un fond "navy" => fabuleux!!!
Du coup j'ai arrété l'hémorragie :)

Pour ce qui est de la patience, ben "quand on aime on ne compte pas", ben là c'est un peu pareil... (esperons que ma petite amie ne lise jamais ça!!! Bienvenue à geekland, et fier de l'être!!! LOL)
Pyrghos Messages postés 9 Date d'inscription vendredi 26 décembre 2003 Statut Membre Dernière intervention 16 janvier 2007
24 avril 2006 à 16:15
Merci Nifhell ;)

Au fait j'ai bien aimer le graphisme de ton site, sa sent le coup de coeur de l'artiste ^^

Je code aussi mais je n'ai pas ta patience, et j'ai pourtant bien l'impression que la patience est d'or en programmation... enfin bon me defend quand meme un peut :)

Bonne continuation, et encore merci.
Nifhell Messages postés 48 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 23 avril 2006
24 avril 2006 à 15:27
Pyrghos,

Warning: main(d:/sitescsudoku.php) [function.main]: failed to open stream: No such file or directory in d:\Sites\Sudoku\exemples.php on line 4

Warning: main() [function.include]: Failed opening 'd:/sitescsudoku.php' for inclusion (include_path='.;C:\php5\pear') in d:\Sites\Sudoku\exemples.php on line 4

Ces 2 erreurs sont dues au fait que le chemin passé en paramètre à la fonction include_once du fichier exemple.php est faux, il manque un "/" ou "" => "d:\sites\csudoku.php" à la place de "d:\sitescsudoku.php". Du coup il trouve pas le fichier "csudoku.php" et te sort l'erreur:
Fatal error: Class 'CSuDoKu' not found in d:\Sites\Sudoku\exemples.php on line 6

La 3éme alerte est du au fait que les erreurs précédentes ont déja fait envoyer des données par le serveur au client, du coup les fonctions de session ou de cookies ne peuvent plus être effectives.

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at d:\Sites\Sudoku\exemples.php:2) in d:\Sites\Sudoku\exemples.php on line 5

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at d:\Sites\Sudoku\exemples.php:2) in d:\Sites\Sudoku\exemples.php on line 5


Le fichier exemple est la à titre d'exemple, il faut adapater un peu pour le faire tourner sur ton serveur... :)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
24 avril 2006 à 09:32
"- Les grilles ne sont pas forcément à solution unique "=>
pour ma part, je les importe à partir de websudoku (j'ai trois sources qui font ça, une qui est comme la tienne, mais en gtk, l'autre qui ne fait que la résolution, et une dernière qui ne fait que l'importation pour imprimer)

Je crois que la seule solution pour faire une grille à solutions uniques, c'est de résoudre la grille, et de voir si il reste plusieurs solutions dans une case, alors on y place un chiffre.

pour ta résolution, tu ne fais pas une résolution par déduction, tu la fais par supposition, c'est domage, personellement, j'ai choisi un mélange des deux, et j'ai des performances satistaisantes...
Pyrghos Messages postés 9 Date d'inscription vendredi 26 décembre 2003 Statut Membre Dernière intervention 16 janvier 2007
24 avril 2006 à 09:19
Salut, l'idée est exelente, je me suis rendu sur ton site afin de le tester ce qui a fini de me convaincre ;)

Tu ne vera pas mon nom dans tes stats, je ne suis malheureusement pas du niveau souhaitez :/

Un souci cependant, j'ai télécharger ton fichier ZIP afin de le tester en local, mais impossible de le faire fonctionner. Voici les message d'erreur qui me sont renvoyer :

--------------------------------------\

Warning: main(d:/sitescsudoku.php) [function.main]: failed to open stream: No such file or directory in d:\Sites\Sudoku\exemples.php on line 4

Warning: main() [function.include]: Failed opening 'd:/sitescsudoku.php' for inclusion (include_path='.;C:\php5\pear') in d:\Sites\Sudoku\exemples.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at d:\Sites\Sudoku\exemples.php:2) in d:\Sites\Sudoku\exemples.php on line 5

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at d:\Sites\Sudoku\exemples.php:2) in d:\Sites\Sudoku\exemples.php on line 5

Fatal error: Class 'CSuDoKu' not found in d:\Sites\Sudoku\exemples.php on line 6

--------------------------------------/

Si tu peut m'expliquer comment m'y prendre pour que cela fonctionne chez moi je t'en serait trés reconnaissant.

^^
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
23 avril 2006 à 11:26
Trés joli source, tu ne la pas coder pour rien,
bref je pense que tu mérite largement ton 10/10 !!!
et Encore bravo pour cette joli source et bonne continuation ;)
Nifhell Messages postés 48 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 23 avril 2006
23 avril 2006 à 10:41
Non non désolé Mawashigeri,

Ce code peut générer des Sudoku qui ont plus d'une solution, ce qui n'est pas un "sudoku officiel"
Mawashigeri Messages postés 1 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 21 avril 2006
21 avril 2006 à 18:36
Oui joli, joli,

Dis moi, est ce que c'est le code officiel que tu as retravaillé ?
Ce que je veux dire c'est que l'algorithme est il celui du sudoku officiel -> donc, pas de possibilité de "faux-sudoku"?
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 avril 2006 à 10:09
Faiut que je le teste, mais décidément, en approfondissant le code,
je trouve ça très joli :-) 10.
cs_johann1 Messages postés 170 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 9 janvier 2008
20 avril 2006 à 15:29
Ca à l'air chouette Nifhell, je veux me tenir informé de la suite.
Merci et bonne continuation
galadriann Messages postés 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006
20 avril 2006 à 10:26
ok. .. j'attend ca avec impatience ...

Merci
Nifhell Messages postés 48 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 23 avril 2006
20 avril 2006 à 09:33
Oui, effectivement, il s'agit juste d'un exemple incomplet d'utilisation de l'objet sudoku avec les sessions: il manque toute la gestion des sessions
D'ailleurs dans l'exemple, j'utilise un objet $session qui n'est pas instancié, mais qui chez moi est une instance de classe "CSession" qui gére l'ouverture, fermeture et la sécurisation des sessions des utilisateurs authentifiés sur mon site.

Bref je fais une mise à jour ce soir, parce que là je suis au taf ;p
galadriann Messages postés 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006
20 avril 2006 à 08:47
Ca a l'air interessant et bien fait mais j'obtiens un erreur lors de l'execution :

Fatal error: Call to a member function setValue() on a non-object in B:\www\Sudoku\sudoku.php on line 5

line 5 : $session->setValue('sudoku',serialize($sudoku),false);

il ne manquerait pas la declaration de $session ?
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
20 avril 2006 à 08:30
Salut :-)

10, c'est vraiment pas mal du tout (je suis pas un matheux donc bon...) ;-)

Pas grand chose à redire niveau PHP, peut-être niveau XHTML l'attribut name du formulaire qui est déprécié...

Bref 10/10 pour ma part.

Bonne continuation :-)

Antho
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 avril 2006 à 07:48
Hello,

je serais toi, je mettrais aussi un zip...c'est pas que, mais c'est lon à copier ton truc :-)
Bon sinon il est un peu tôt, là, mais...ça a l'air très joliment codé !
Je mate ça de plus près un peu plus tard.
Rejoignez-nous