IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Convertir en Java un jeu développé en C


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Convertir en Java un jeu développé en C
    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.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Bonjour,

    Je te suggère d'utiliser un GridLayout dans un JPanel qui va contenir des boutons, celui-ci placé dans une JFrame et tu auras déjà un bon début.
    Après tu passeras aux événements etc...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Le GridLayout peut être une solution de dépannage pour aborder les concepts un par un.
    L'étape suivante est d'utiliser une image. Voici un exemple possible :

    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
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.image.BufferedImage;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
     
    public class CasseTete extends JPanel implements MouseListener
    {
    	private static final long serialVersionUID = 1L;
    	private BufferedImage image;
    	private Graphics2D graph;
    	private boolean[][] tab = new boolean[ 5 ][ 5 ];
     
    	public static void main( String arg[] )
    	{
    		new CasseTete();
    	}
     
    	public CasseTete()
    	{
    		image = new BufferedImage( 400, 300, BufferedImage.TYPE_INT_ARGB );
    		graph = image.createGraphics();
     
    		for( int i = 0 ; i < 5 ; ++i )
    		{
    			for( int j = 0 ; j < 5 ; ++j ) { tab[ i ][ j ] = false; }
    		}
     
    		ecrire_image();
    		addMouseListener( this );
    		setPreferredSize( new Dimension( image.getWidth(), image.getHeight() ) );
     
    		JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    		frame.getContentPane().add( this );
    		frame.pack();
    		frame.setVisible( true );
    	}
     
    	private void ecrire_image()
    	{
    		int largeur = image.getWidth();
    		int hauteur = image.getHeight();
     
    		for( int i = 0 ; i < 5 ; ++i )
    		{
    			for( int j = 0 ; j < 5 ; ++j )
    			{
    				if( tab[ i ][ j ] ) { graph.setColor( Color.WHITE ); }
    				else { graph.setColor( Color.BLACK ); }
    				graph.fillRect( i * largeur / 5, j * hauteur / 5, largeur / 5, hauteur / 5 );
    			}
    		}
     
    		graph.setColor( Color.RED );
    		for( int i = 0 ; i < image.getWidth() ; i += image.getWidth() / 5 ) { graph.fillRect( i - 2, 0, 4, image.getHeight() ); }
    		for( int i = 0 ; i < image.getHeight() ; i += image.getHeight() / 5 ) { graph.fillRect( 0, i - 2, image.getWidth(), 4 ); }
    	}
     
    	@Override
    	protected void paintComponent( Graphics g )
    	{
    		super.paintComponent( g );
    		g.drawImage( image, 0, 0, this );
    	}
     
    	@Override
    	public void mouseClicked( MouseEvent event )
    	{
    		if( event.getX() < image.getWidth() && event.getY() < image.getHeight() )
    		{
    			int x = event.getX() / ( image.getWidth() / 5 );
    			int y = event.getY() / ( image.getHeight() / 5 );
    			tab[ x ][ y ] = !tab[ x ][ y ];
    			new Thread( new Runnable()
    			{
    				@Override
    				public void run()
    				{
    					ecrire_image();
    					repaint();
    				}
    			} ).start();
    		}
    	}
     
    	@Override
    	public void mouseEntered( MouseEvent arg0 ){}
    	@Override
    	public void mouseExited( MouseEvent arg0 ){}
    	@Override
    	public void mousePressed( MouseEvent arg0 ){}
    	@Override
    	public void mouseReleased( MouseEvent arg0 ){}
    }
    A toi de coder les règles du jeu, d'ajouter des JPanel pour placer des boutons...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Diffusion d'un jeu développé avec xna
    Par Khrono dans le forum XNA/Monogame
    Réponses: 5
    Dernier message: 03/02/2010, 14h28
  2. Réponses: 3
    Dernier message: 04/06/2008, 02h32
  3. [UC] Projet Java/UML Jeu type Memory
    Par akito dans le forum Cas d'utilisation
    Réponses: 11
    Dernier message: 17/04/2008, 13h33
  4. AVIS- Java pour jeu vidéo
    Par ouar dans le forum Multimédia
    Réponses: 2
    Dernier message: 16/03/2007, 16h56
  5. Java 3D jeu
    Par Belegkarnil dans le forum 3D
    Réponses: 8
    Dernier message: 06/04/2006, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo