dessiner une grille sudoku

Ecrire un programme de jeu Sudoku : dessiner la grille

par Ettougourti Mohamed Ali

Le jeu sudoku connait un engouement sans précédent.                     Plusieurs programmes informatiques ont été écrits pour le jeu.          Les plus intéressants sont ceux qui fournissent une aide au joueur pour trouver la solution de la grille proposée.                                           C’est ce qu’on appelle un « solver ».

D’autres programmes génèrent des grilles de jeu. Il faut remarquer à cet égard que toutes les grilles ne sont pas solubles  certaines n’ont pas de solutions.

Dans notre exercice de programmation en c sharp nous avons essayé de mettre au point un programme en c# qui permet au joueur de jouer sur écran, de remplir les cases vides par des chiffres candidats potentiels d’entrer une grille copiée sur un journal ou sur un livre de jeu..et en définitive de résoudre la grille au cas où elle accepterait une solution.

Le premier problème à résoudre fut  celui de dessiner la grille sudoku de 9 cases sur 9 ou de toutes autres dimensions.
Un problème de type graphique.

La fonction responsable de dessiner la grille est drawgrill.
Nous profitons de l’ Evènement paint de la forme windows pour generer la grille.

voici la forme de l’événement paint repris à notre compte.

private void Form1_Paint(object sender, PaintEventArgs e)

{

draw_grill(sender, e);

}

 

Comme vous le voyez la fonction draw_grill reprend les deux paramètres  l’object  sender et le PaintEventArgs e pour son propre compte.

Elle  définit deux crayons P1 et P2 ,  qu’elle utilise en deux couleurs le bleu et le rouge, la fonction graphics dessine pour nous les lignes et les rectangles.

Les variables : cote, step, x, et y sont définies en tant que variables publiques.

private void draw_grill(object sender, PaintEventArgs e)

{

Pen p = new Pen(Color.Red);

Pen p2 = new Pen(Color.Blue);

Point a = new Point(x, y);

Point b = new Point(x+cote, y);

for (int i = x; i < x+cote+step; i+=step)

{

a.Y = i;

b.Y = i;

e.Graphics.DrawLine(p2, a, b);

}

a = new Point(x, y);

b = new Point(x, y + cote);

for (int i = x; i < x + cote+step; i +=step)

{

a.X = i;

a.Y = y;

b.X = i;

b.Y = y+cote;

e.Graphics.DrawLine(p2, a, b);

}

int r = step * 3;

int r2 = cote / 3;

p.Width = 2;

e.Graphics.DrawRectangle(p, new Rectangle(this.x, this.y, cote, cote));

for (int i = 0; i < r * 3; i += r)

{

e.Graphics.DrawRectangle(p, new Rectangle(this.x, this.y+i, r2, r2));

e.Graphics.DrawRectangle(p, new Rectangle(this.x + r, this.y+i, cote / 3, cote / 3));

e.Graphics.DrawRectangle(p, new Rectangle(this.x + r * 2, this.y+i, cote / 3, cote / 3));

}

}

Une fois exécutée la fonction dessine chaque fois que la forme est affichée une grille de 9 cases sur 9 , la variable cote = 540, la variable step = 60, soit 60*9(cases)=540. Les deux points de départ X=40,    Y= 40.

pour télécharge le programme de jeu sudoku

sudoku3




(146)