Bonjour,

J'ai écrit un code pour un jeu de casse-tête tout simple et j'aimerais le réécrire en orienté objet, en Java et faire l'interface graphique.

Le principe du jeu est expliqué au début du code C en commentaire

Le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[])
{  
  // Instructions
  printf("          -CECI EST UN PETIT JEU DE REFLEXION.\n");
  printf("          -LE BUT ETANT DE METTRE DES 1 PARTOUT DANS LE TABLEAU.\n");
  printf("          -'CASE NUMERO' CORRESPOND AU NUMERO DE CASE DANS LE TABLEAU.\n");
  printf("          -ON PEUT TAPER DES NUMEROS DE 1 A 25.\n");
  printf("          -A CHAQUE FOIS QU'ON TAPE UN NUMERO, LA CASE CORRESPONDANTE ET CELLES\n");
  printf("           QUI L'ENTOURENT CHANGENT D'ETAT (PASSENT DE 1 A 0 OU L'INVERSE).\n");
  printf("          -CE QUI VEUT DIRE, QUE SI ON TAPE AU DEBUT 13\n");
  printf("           LES CASES : 8,12,13,14,18 VONT PASSER DE 0 A 1.\n");
  printf("          -ET AINSI DE SUITE.\n");
  printf("          -UN COMPTEUR DU NOMBRE DE FRAPPES EST AFFICHE EN TEMPS REEL.\n");
  printf("          -A EVITER : TAPER UN NUMERO SUPERIEUR A 25 OU EGAL A 0 !\n");             
  printf("\n");
  printf("\n");
 
  // Déclaration des variables
  int M[5][5];
  int i, j, k, l, s, n, q, c;
 
 
  // Initialisation des éléments de la matrice à 0
  for (i=1; i<=5; i++){
     for (j=1; j<=5; j++){
         M[i][j] = 0;
     }
  }    
 
  // Affichage de la matrice initiale
  for (i=1; i<=5; i++){
      printf("                ");
     for (j=1; j<=5; j++){
         printf("%d  ",M[i][j]);
     }    
  // Affichage de l'aide à droite
  printf("                ");
     for (q=(((i-1)*5)+1); q<=(((i-1)*5)+5); q++){
         if (i<=2){
         printf("%d  ",q);          
         } 
         else{
            printf("%d ",q);
         }
     }
  printf("\n");
  printf("\n");
  }     
 
  c = 1;
 
  // Lire le numéro de la case k
  Etiquette :
  printf("\n");
  printf("                CASE NUMERO : ");           
  scanf("%d",&k);
  printf("\n");
  printf("                LE NOMBRE DE FRAPPES ATTEINT = %d\n",c);
  printf("\n");
  c++; 
 
  // Attribution des lignes i aux cases selon k
  if (k<21){
     i = 4;
  }
  else{
      i = 5;
  }
  if (k<16){
     i = 3;
  }
  if (k<11){
     i = 2;
  }             
  if (k<6){
     i = 1;
  }
 
  // Attribution des colonnes j selon k
  j = k%5;
  if (j == 0){
      j = 5;
  }    
 
  // Programme principal
  for (l=(i-1); l<=(i+1); l++){
      if (M[l][j] == 0){
          M[l][j] = 1;
      }
      else{
         M[l][j] = 0;                         
      }
  }       
 
  if (j>1){
     if (M[i][j-1] == 0){
         M[i][j-1] = 1;
     }
     else{
        M[i][j-1] = 0;
     } 
  }
 
  if (j<5){
     if (M[i][j+1] == 0){
         M[i][j+1] = 1;
     }
     else{
        M[i][j+1] = 0;
     }
  }
 
  // Affichage de la matrice après déroulement du programme
  for (i=1; i<=5; i++){
      printf("                ");
     for (j=1; j<=5; j++){
         printf("%d  ",M[i][j]);
     }
 
  // Affichage de l'aide à droite
  printf("                ");
     for (q=(((i-1)*5)+1); q<=(((i-1)*5)+5); q++){
       if (i<=2){
         printf("%d  ",q);          
       } 
         else{
            printf("%d ",q);
         }
     }
  printf("\n");
  printf("\n");
  } 
 
  // Calcul de la somme des éléments de la matrice
  n = 0;
  for (i=1; i<=5; i++){
      for (j=1; j<=5; j++){
          n = n + M[i][j];
      }
  }
 
  // Tant que la somme est inférieure à 25 redérouler le programme
  if (n<25){
     goto Etiquette;
  }
 
  // Sinon, c'est bon, le problème est résolu
  else{
     printf("                BRAVO !!!\n");
  }
 
  printf("\n");
  system("PAUSE");    
  return 0;
}
Ce que je veux utiliser comme interface est une matrice 5x5. Les cases seront des boutons et au lieu de taper un numéro de case, on appuie directement sur le bouton. Les boutons s'allumeront quand ils sont à 1 et s'éteindront quand ils sont à 0.

Je laisse le bouton de réinitialisation à la fin.

Quelqu'un saurait-il me donner quelques pistes pour effectuer cette transformation ?

Merci d'avance pour votre aide.