Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SUKUDO SOLVER AVEC DES CASES PRÉREMPLIES


Information sur la source

Catégorie :Jeux Classé sous : sukudo, jeux, processmessages Niveau : Débutant Date de création : 11/03/2007 Vu / téléchargé: 5 507 / 374

Note :
3,25 / 10 - par 4 personnes
3,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

logiciel permet de trouver au moins une solution possible pour le jeu japonais sukudo avec des cases préremplées
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   sukudo solver

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de John Dogget le 12/03/2007 18:52:19

Le sukudo, ça existe pas, le sudoku par contre ...
Ensuite, à 2/3 bidouilles près, c'est exactement la même source que celle qui a été retiré du site.

Donc c'est toujours aussi maladroit :
- boucle à n'en plus finir
- structure de données pas adaptés
- l'ecriture du code n'est pas regulière

Il faudrait (simple conseil) :
- étudier mieux tes algos pour eviter d'utiliser des "goto" ou des boucles sur 20 lignes
- choisir des structures de données adaptés à ce que tu fais, dans ce cas l'utilisation de tableaux  serait judicieuse (ça evite d'avoir des tonnes de variables, ça simplifie l'écriture du code etc)
- tu dois absolument te trouver une manière d'ecrire ton code proprement et regulièrement, si tu décides par exemple de l'indenter, tu devra le faire sur toute ta source et pas sur deux lignes

signaler à un administrateur
Commentaire de f0xi le 12/03/2007 21:34:34 administrateur CS

tu devrait commencer ici :

borland delphi style guide, ou tu vas apprendre a ecrire ton code correctement :

http://dn.codegear.com/article/10280

pour le reste, je ne saurai que trop te conseiller d'etudier d'autres sources, de lire des exemples, de faire des recherches sur le net pour apprendre les mecanismes et algorithmes.

deja, on peu voir que tu t'as totalement mis a coté de la plaque, puisqu'a aucun moment
on ne vois ceci :

TSudoku = array[0..8,0..8] of ...

qui est la base meme d'un jeu de sudoku (une grille 9,9)

ensuite, il est interdit de placer un goto dans une boucle qui renvois a l'exterieur de cette boucle. c'est inconcevable de voir cela.

de plus, 51 variables c'est trop! tableau tableau tableau et tableau!
plus simple a manipuler, plus propre.

logiquement un sudoku se presente donc comme cela :

{ la grille de sudoku }
type
  TSudoku = array[0..8,0..8] of byte;


{ notre grille de jeu }
var
  Sdk : TSudoku;


{ des grilles pour verifier le bon fonctionnement de nos fonctions de test }
const
  { Convertion du boolean }
  BTC : array[boolean] of string = ('La grille est fausse','La grille est bonne');

  { Grille de test bonne }
  SdkCheckTestTrue : TSudoku  = ((1,2,3,4,5,6,7,8,9),
                                 (7,8,9,1,2,3,4,5,6),
                                 (4,5,6,7,8,9,1,2,3),
                                 (9,1,2,3,4,5,6,7,8),
                                 (6,7,8,9,1,2,3,4,5),
                                 (3,4,5,6,7,8,9,1,2),
                                 (8,9,1,2,3,4,5,6,7),
                                 (5,6,7,8,9,1,2,3,4),
                                 (2,3,4,5,6,7,8,9,1));
  { Grille de test fausse }
  SdkCheckTestFalse : TSudoku = ((1,2,3,4,5,6,7,8,9),
                                 (9,1,2,3,4,5,6,7,8),
                                 (8,9,1,2,3,4,5,6,7),
                                 (7,8,9,1,2,3,4,5,6),
                                 (6,7,8,9,1,2,3,4,5),
                                 (5,6,7,8,9,1,2,3,4),
                                 (4,5,6,7,8,9,1,2,3),
                                 (3,4,5,6,7,8,9,1,2),
                                 (2,3,4,5,6,7,8,9,1));

                            
{ verifie que la ligne a l'index donné comporte bien 1 a 9 sans doublons }
function CheckRow(const Sudoku : TSudoku; const index : integer) : boolean;
var N : integer;
    S : set of byte;
begin
  S := [];
  result := true;
  for N := 0 to 8 do
  begin
    result := result and (not (Sudoku[index,N] in S));
    if result then
       S := S + [Sudoku[index,N]]
    else
       exit;
  end;
end;

{ verifie que la colone a l'index donné comporte bien 1 a 9 sans doublons }
function CheckCol(const Sudoku : TSudoku; const index : integer) : boolean;
var N : integer;
    S : set of byte;
begin
  S := [];
  result := true;
  for N := 0 to 8 do
  begin
    result := result and (not (Sudoku[N,Index] in S));
    if result then
       S := S + [Sudoku[N,Index]]
    else
       exit;
  end;
end;

{ verifie que le bloc 3,3 a l'index donné comporte bien 1 a 9 sans doublons }
function CheckCub(const Sudoku : TSudoku; const index : integer) : boolean;
var X,Y : integer;
    S : set of byte;
const
  ITX : array[0..8] of byte = (0,3,6,0,3,6,0,3,6);
  ITY : array[0..8] of byte = (0,0,0,3,3,3,6,6,6);
begin
  S := [];
  result := true;
  for Y := ITY[Index] to ITY[Index]+2 do
      for X := ITX[Index] to ITX[Index]+2 do
      begin
        result := result and (not (Sudoku[Y,X] in S));
        if result then
           S := S + [Sudoku[Y,X]]
        else
           exit;
      end;
end;

{ Test des fonction avec la grille bonne }
procedure TForm1.Button1Click(Sender: TObject);
var N : integer;
    B : boolean;
begin
  B := true;
  for N := 0 to 8 do
  begin
    B := B and CheckCol(SdkCheckTestTrue,N)
           and CheckRow(SdkCheckTestTrue,N)
           and CheckCub(SdkCheckTestTrue,N);
    if not B then
       break;
  end;
  Button1.Caption := BTC[B];
end;

{ test des fonction avec la grille fausse }
procedure TForm1.Button2Click(Sender: TObject);
var N : integer;
    B : boolean;
begin
  B := true;
  for N := 0 to 8 do
  begin
    B := B and CheckCol(SdkCheckTestFalse,N)
           and CheckRow(SdkCheckTestFalse,N)
           and CheckCub(SdkCheckTestFalse,N);
    if not B then
       break;
  end;
  Button2.Caption := BTC[B];
end;


voila comment doit fonctionner un sudoku ...

signaler à un administrateur
Commentaire de Nicolas___ le 12/03/2007 23:37:45

hé bien voila le voila notre sudoku , merci Foxi ;)

hé mihoubi ctrl+c, ctrl+v :)

Ciao

signaler à un administrateur
Commentaire de Lassal le 14/03/2007 09:58:03

Que de variable... Pas super optimisé tout celà.
Et l'indentation, au secours.
Faudrait voir à faire un effort quand même par respect pour ceux qui regardent les sources.
Un minimum de commentaires, une indentation lisible.
Après en ce qui concerne le code, il y a pas mal de chose à faire pour faire un truc plus propre, mais justement ce site est aussi là pour ça, donc pas de souci de ce côté là.

Mais s'il te plait, fais un effort pour diffuser des sources plus lisible car c'est nawak là.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Jeux du type serpent... [ par g0belin ] Ben voila, je souhaiterai faire un jeu comme le serpent du Nokia (principe simple bouffe souris=grandis)mais je ne sais pas comment faire le serpent e Debugger et jeux récent! [ par Don0Choa ] Bonjour, voila j'ai voulu installer 2 jeux tres réssent(Mafia et Age OfEmpre qui ne sort que le mois prochain) , mais apres l'installation, lorsque je Conseil pour Moteur 3D [ par dami ] Bonjour a tous .Je développe actuellement un jeux de stratégie 3D temps réel. J'ai décidé d'importer les objects via un loader 3ds que j'ai fais, je l Saut, jeux [ par lan0sic ] Bonjour,J'aimerait fair bouger une image, comme si c'etait un type qui saute. (donc l'image doit monter et redecendre). Eseque quelqu'un pourrait m'ai Scanner serveurs de jeux [ par Tagada ] Bonjour,je souhaiterai réaliser un scanner de serveurs de jeux online, plus particulièrement pour quake3. Je n'ai malheureusement rien trouvé d'intere jeux de voiture [ par DJFBY ] Bonjour à tous,Je cherche quelqu'un qui puisse m'expliquer comment gérer le son d'une accélération de voiture par un petit programme en C pour un jeux gestion souris, clavier, dans des jeux PC [ par juda13 ] salutje suis une vrai noob en delphi, mais la gestion des periph avait l'air simple alor sje m'y met :)je voudrait simuler des click souris et clavier JEUX : controle de la caméra [ par fryser_d ] Bonjour !Je suis présentement dans un projet de jeu video 2d, programmé en Delphi/Pascal. Mais j'ai un petit probleme: je sais pas quelles approches f pb de timer [ par exyacc ] voila le pb...j'utilise un timer et fais une boucle de 90000 pour simuler un traitement quelconque (genre requete,etc.), le timer me sert a faire avan vendre un logiciel [ par djfeeler2 ] Je voudrais créer un jeux sous delhi. Si ce jeux plaît est-ce j'aurais le droit de le vendre ???


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.