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 :

Generer des obstacles-Débutant-


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut Generer des obstacles-Débutant-
    Salut,

    Alors voila,
    J'aimerais faire un petit jeu,pour m'entrainer ,ou le but et d'eviter des obstacles qui apparaissent(un peu comme ICopter et Flappibird...).
    J'ai un probleme pour l'alghorythmes generant les obstacles.

    Voici mon code:

    Classe fenetre:
    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
    //Genere les obstacles
        private void go01(){
     
            //Var
            //
            boolean condition1;
            //
            int x1=JPan1.getWidth();
            int y1=JPan1.getHeight();
            //
            int x2=JPan1.getPosX();
            int y2=JPan1.getPosY();
     
            for(int i=0;;i++){
                //Espace entre chaque obstacle
                if(i==75){
                    condition1=true;
                }else{
                    condition1=false;
                }
                //On dessine le rectangle
                if(condition1=true){
                    x2=i;
                    JPan1.setPosX(x2);
                    JPan1.setPosY(x1-200);
                    JPan1.repaint();
                    i=0;
                }
            }
        }
    Classe Panneau:
    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
    public void paintComponent(Graphics g){
        //Image de fonds
        try {
          Image img = ImageIO.read(new File("img/fond01.jpg"));
          //Pour une image de fond
          g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
        } catch (IOException e) {
          e.printStackTrace();
        }
        //Rectangle
        g.setColor(Color.white);//couleur
        g.fillRect(posX,posY,40,200);//dimension--fillRect(position x,y ; largeur,longeur)
        //generer les obstacles
      }  
     
     
     
    //Les Rectangles
    //Premier Rectangle
    private int posX=400;
    private int posY=200;
    //getter--obtenir la position du rectangle
    public int getPosX(){
        return posX;
    }
    public int getPosY(){
        return posY;
    }
    //setter--changer la position du rectangle
    public void setPosX(int posX) {
        this.posX = posX;
      }
    public void setPosY(int posY){
        this.posY=posY;
    }
     
     
    }
    Le prb est que lorsque je clique sur le bouton "play" l'ordi tourne ds le vide.

    Rem:Si vs avez besoin de tt le code de la classe Fenetre dites le

    Merci de votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Peut-être faudrait-il songer à sortir de la boucle quand tu as fait quelques obstacles.
    Et faire un seul repaint() au lieu de le faire dans la boucle.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut
    Voila le code,mais il n'est pas encore parfait,cependant mon prb est résolu:
    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
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    package main;
     
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
     
    public class Jeu_Fenetre extends JFrame {
     
    	//
        private Jeu_Panneau JPan1 =new Jeu_Panneau();
        JPanel pan =new JPanel();
     
        public Jeu_Fenetre(){
            this.setTitle("TP-Calculette");
              this.setSize(550, 500);
              this.setLocationRelativeTo(null);
              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              pan.setLayout(new BorderLayout());//indique qu'il faut prendre compte le positionnemt des touches
              getContentPane().add(pan);//ajout du JPanel pour le rendre visible
              //Apparence
              affichage01();
              pan.add(JPan1);//fond et autres
            //rendre visible
              this.setVisible(true);
              //
              go01();
        }
     
     
        //---------------------------------------------Animation du joueur---------------------------------------------
        //---------------------------------------------Action lors du clic--------------------------------------------- 	
        protected void affichage01(){
            //cretaion du JPanel qui contiendra des boutons
            JPanel pan_b=new JPanel();//b=bouton
            pan.add(pan_b , BorderLayout.SOUTH);
     
          //Creation des boutons
        	JButton bHaut=new JButton ("Haut");
        	JButton bBas=new JButton ("Bas");
            //Ajout d'action au boutons
            bHaut.addActionListener(new bH_Listener());
            bBas.addActionListener(new bB_Listener());
            //Ajout des boutonss dans le Panel
            pan_b.setLayout(new GridLayout(1,0,5,2));//ds l'ordre (ligne,colonne,espacement de 5px(x;y)
            pan_b.add(bHaut);
            pan_b.add(bBas);
        }
     
     
     
        //Var
        //"Thread"Variable qui permettra de lancer l'action
        private Thread t1;//vers le haut
        private Thread t2;//vers le bas
       //Va ns permettre de savoir quel bouton est cliqué
        boolean animated_bH;
        boolean animated_bB;
        //Va nous permettre de savoir la position du joueur
        int x_j=JPan1.getPosX_j();
        int y_j=JPan1.getPosY_j();
     
        //
        //---------Fct des animations-------
     
        //Animation vers le haut
        public void Jgo01(){
        		for(;;){
        			y_j--;
        			JPan1.setPosY_j(y_j);
        			JPan1.repaint();
        			if (Math.abs( y_j ) <=0){
        				JPan1.setPosY_j(0);
        			}try {
                        Thread.sleep(0);
                    } catch (InterruptedException e) {
                      e.printStackTrace();
                    }
     
        		}
        }
    	//Animation vers le bas
    	public void Jgo02(){
    	for(;;){
    		y_j++;
    		JPan1.setPosY_j(y_j);
    		JPan1.repaint();
    		if (Math.abs( y_j ) >=0){
    			JPan1.setPosY_j(getHeight());
    		}try {
                Thread.sleep(0);
            } catch (InterruptedException e) {
              e.printStackTrace();
            }
     
    	}
    }
     
     
        public class bH_Listener implements ActionListener{//(*)Ici les classes ineternes st decrites
            public void actionPerformed(ActionEvent arg0) {
            	//
            	animated_bH=true;
            	animated_bB=false;
            	//
            	t1 = new Thread(new PlayAnimation());
                t1.start();
                t2.stop();
        }
        }
        public class bB_Listener implements ActionListener{//(*)Ici les classes ineternes st decrites
             public void actionPerformed(ActionEvent arg0) {
                	//
                	animated_bH=false;
                	animated_bB=true;
                	//
                	t2 = new Thread(new PlayAnimation1());
                    t2.start();
                    t1.stop();
                }
            }
     
        //
        class PlayAnimation implements Runnable{
    	    public void run() {
    	      Jgo01();
    	    }               
    	  }
        class PlayAnimation1 implements Runnable{
    	    public void run() {
    	      Jgo02();
    	    }               
    	  }
     
     
     
     
     
      //---------------------------------------------FIN Action lors du clic---------------------------------------------
     
     
        //---------------------------------------------Animation des obstacles ---------------------------------------------
        public void go01(){
        	int i;
        	for(i=0;;i++){
        		//
        		int x = JPan1.getPosX(), y = JPan1.getPosY();
            	int xl =JPan1.getPosXl(),yl=JPan1.getPosYl();
            	//
        		x--;
        		JPan1.setPosX(x);
        		JPan1.setPosY(y);
        		JPan1.repaint();
        		if(Math.abs( x ) <=0){
                	  JPan1.setPosX(1000);
                	  JPan1.setPosY(200);
                	  //
                	  JPan1.setPosYl(900);
                  }try {
                      Thread.sleep(5);
                  } catch (InterruptedException e) {
                    e.printStackTrace();
                  }
                  i=0;
        		}		
        }
     
        //---------------------------------------------FIN Animation des Obstacles---------------------------------------------
     
     
     
     
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant]Generer des textbox en fonction d'un nombre donné
    Par am@123 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/05/2007, 20h47
  2. [Info] Générer des numéros de licence
    Par nico2280 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 24/08/2005, 15h35
  3. Classe pour generer des logs
    Par freddyboy dans le forum MFC
    Réponses: 9
    Dernier message: 13/07/2005, 12h54
  4. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45
  5. Comment générer des fichiers html ?
    Par keke33 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 04/06/2004, 16h28

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