Comment generer des grille avec niveau de difficulte ?

kevin2002 Messages postés 16 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2013 - 20 août 2011 à 16:24
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 29 août 2011 à 11:44
 kevin-now: je veux construire une application "sudoku",j'ai fait l'interface mais je suis blocker sur les niveau de difficulter, dans mon application je propos cinq niveau (tres facile,facile,moyenne,difficile,tres difficile).
je veux votre aide SVP

4 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 août 2011 à 15:31
Bonjour,

les niveaux de difficultés sont déterminés par le
nombre de cases pré-remplies.
Plus c'est difficile, moins il y a de chiffres de proposés..(logique)

Une fois, le moteur de remplissage établi, il suffit de programmer
le masquage aléatoire (ou pas) d'un certain nombre de cases sur une solution trouvée par l'ordinateur.

Autrement le jeu consiste à afficher la solution sans montrer
certaines cases.

Ce qui peut se réaliser avec plusieurs composants (StringGrid,cxGrid
ou même certainement quelques Jedi..)

Le problème de savoir combien de cases remplies sont nécessaires au préalable pour rendre la résolution unique est, à ce jour, sans réponse. (Le meilleur résultat, obtenu par des Japonais, est de 17 cases sans
contrainte de symétrie)

Autrement dit pour chaque solution proposée par le joueur, il suffit de lancer le moteur afin de vérifier, si elle est correcte.

cantador
0
kevin2002 Messages postés 16 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2013
25 août 2011 à 17:42
 kevin-now:merci! mais je sais tous ça!.
par exemple j'ai su comment obtenir une grille "tres facile" par l'algorithme suivant:
1 - executer la procedure de verification et de remplisage de la grille (grille 100% remplir et correcte et unique).
2 - supprimer un a un les cases,avec verification (correcte et unique).
3 - repeter l'operation (2) jusqu'a que la supprission ne parmette pas.
et voila une grille avec une difficulte(tres facile),mais le probleme des autres difficulte?
voulez-vous encore m'aider?
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
25 août 2011 à 21:49
Bonjour,

Comment veux-tu qu'on t'aide avec le peu d'informations que tu donnes ? Tu donnes l'impression de vouloir qu'on le fasse à ta place...
Cantador a eu la gentillesse de te donner quelques pistes en fonction des éléments fournis car on ne sait pas sur quoi tu buttes vraiment : un problème d'algorithmique ou de codage ?
Je n'irai pas jusqu'à te demander un cahier des charges mais peux-tu mettre par écrit une description de chaque niveau de jeu, leur pré-requis, les conditions de sortie, etc ?
Tu nous postes tout cela et une âme charitable et bienveillante se penchera peut-être sur ton problème.

May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 août 2011 à 11:44
procedure TForm1.Button1Click(Sender: TObject); 
var 
  ListeDesCas : TStringList; 
  
begin 
  ListeDesCas := TStringList.create; 
  
  try ,
    ListeDesCas.Add ('très facile'); 
    ListeDesCas.Add ('facile'); 
    ListeDesCas.Add ('moyen'); 
    ListeDesCas.Add ('difficile'); 
    ListeDesCas.Add ('très difficile'); 
  
    Case ListeDesCas.IndexOf(Edit1.Text) of 

      0: 
       begin
       // traitement 'très facile'
       end;
      1: 
       begin
      // traitement 'facile'
       end;
      2: 
       begin
      // traitement 'moyen'
       end;
      3: 
       begin
      // traitement 'difficile'
       end
      4: 
       begin
     // traitement 'très difficile''
       end;
 
    end; 

  finally ListeDesCas.Free; 

  end; 
end;



// edit1 peut-être une récupération de texte d'une sélection par l'utilisateur sur un clic ou un choix dans une liste déroulante..


cantador
0
Rejoignez-nous