Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec mon pacman

Je veux qu'il bouge

    15 mai 2011 à 15:59:31

    Salut à tous et à toutes j'ai commencer un pacman et le problème c'est qu'après avoir crée l'arène je n'arrive pas à faire changer de direction mon pacman(sans le bouger). C'est à dire que je peux pas juste l'orienter vers le bas le haut la droite ou la gauche sans qu'un deuxième pacman ce créer en bas à droite de l'arène. Par contre ce deuxième pacman je peux l'orienter.Ensuite je voudrais savoir si vous auriez des idées de comment le faire se déplacer dans le tableau merci. Avec mon code vous verrez peut être mieux comment m'aider.

    Je voudrais aussi l'orienter grâce au diverses images que j'ai crées c'est a dire pacman orienter vers le haut(pacH) la droite(pacman) la gauche(pacG) et le bas(pacB).


    public class arene extends JFrame implements KeyListener {

    ImageIcon bloc = new ImageIcon("C:/Users/Alexis/Documents/NetBeansProjects/pacman/bloc.PNG");
    ImageIcon point = new ImageIcon("C:/Users/Alexis/Documents/NetBeansProjects/pacman/point.PNG");
    ImageIcon pacman = new ImageIcon("C:/Users/Alexis/Documents/NetBeansProjects/pacman/pacman.PNG");
    ImageIcon vide = new ImageIcon("C:/Users/Alexis/Documents/NetBeansProjects/pacman/vide.PNG");
    ImageIcon pacH = new ImageIcon("C:/Users/Alexis/Documents/NetBeansProjects/pacman/pacmanH.PNG");
    ImageIcon pacB = new ImageIcon("C:/Users/Alexis/Documents/NetBeansProjects/pacman/pacmanB.PNG");
    ImageIcon pacG = new ImageIcon("C:/Users/Alexis/Documents/NetBeansProjects/pacman/pacmanG.PNG");//Import d'images

    Mon arène fait avec des Strings

    String arene[][] =
    {{"D", "D", "D", "D", "D", "D", "D", "D", "D", "D"},
    {"D", "P", "o", "o", "o", "o", "o", "o", "o", "D"},
    {"D", "o", "o", "o", "D", "o", "D", "D", "o", "D"},
    {"D", "o", "D", "o", "D", "o", "o", "o", "o", "D"},
    {"D", "o", "D", "o", "D", "o", "D", "D", "o", "D"},
    {"D", "o", "o", "o", "o", "o", "D", "D", "o", "D"},
    {"D", "o", "D", "o", "D", "o", "o", "D", "o", "D"},
    {"D", "o", "D", "o", "D", "o", "o", "o", "o", "D"},
    {"D", "o", "o", "o", "o", "o", "D", "D", "D", "D"},
    {"D", "D", "D", "D", "D", "D", "D", "D", "D", "D"}};
    JLabel tab;
    int ligne = 1;
    int colonne = 1;
    int x = 0;
    int y = 0;
    Container var = getContentPane();

    public arene() {

    super("PAC-MAN");
    setSize(1200, 750);
    setVisible(true);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    var.setLayout(null);
    tableau();



    setContentPane(var);
    addKeyListener(this);

    }

    public void keyTyped(KeyEvent e) {
    }
    Je pense que le problème est ici

    public void keyPressed(KeyEvent e) {//la ou j'essaye d'orienter mon pacman
    if (e.getKeyChar() == 'l') {
    for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
    if (arene[i][j].equals("P")) {
    tab.setIcon(pacman);
    }
    }
    }
    }

    if (e.getKeyChar() == 'j') {
    for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
    if (arene[i][j].equals("P")) {
    tab.setIcon(pacG);
    }
    }
    }
    }
    if (e.getKeyChar() == 'k') {
    for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
    if (arene[i][j].equals("P")) {
    tab.setIcon(pacB);
    }
    }
    }
    }
    if (e.getKeyChar() == 'i') {
    for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
    if (arene[i][j].equals("P")) {
    tab.setIcon(pacH);
    }
    }
    }
    }
    }

    public void
    keyReleased(KeyEvent e) {//non utilisé
    }

    public void refresh() {
    var.removeAll();
    tableau();

    setContentPane(var);
    }
    Transformation du tableau string en JLabel pour créer l'arène

    public void tableau() {
    for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
    if (arene[i][j].equals("D")) {
    tab = new JLabel(bloc);
    }
    if (arene[i][j].equals("o")) {
    tab = new JLabel(point);
    }
    if (arene[i][j].equals("P")) {
    tab = new JLabel(pacman);
    }
    if (arene[i][j].equals(" ")) {
    tab = new JLabel(vide);
    }



    var.add(tab);

    if (i != 0 && j == 0) {
    colonne = 1;
    ligne++;
    }
    tab.setBounds(x + (50 * colonne), y + (50 * ligne), 70, 70);
    colonne++;
    tab.setEnabled(true);
    }




    }
    }
    }
    Le problème est donc comment faire pour que le pacman de base celui en haut a gauche du tableau puisse s'orienter.
    Merci beaucoup pour les réponses que vous me donnerez :)
    J'espère être plus clair avec le code + les couleurs
    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2011 à 16:21:55

      Salut,

      Utilise des balises pour rendre ton code plus lisible. Sinon, il est impossible de comprendre ton code.
      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2011 à 23:42:29

        Je comprend à peut près le code sauf la fin à partir du dernier if. Est ce que quelqu'un pourrai me l'expliquer ? Merci
        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2011 à 23:47:23

          C'est pour organiser ton tableau en fait ça te permet de faire un tableau régulier qui serai comme une arènede pacman :)
          Sinon en gros c'est pour faire un beau plateau de jeu mieux organiser.
          • Partager sur Facebook
          • Partager sur Twitter
            16 mai 2011 à 22:21:36

            Oui j'avais compris mais y a 2 ou 3trucs que je comprend pas :)
            par exemple :
            if (i != 0 && j == 0) {----déja ca je suis pas sure de comprendre
            colonne = 1; ----et pourquoi colonne=1 ??
            ligne++; ----ligne++ je ne vois pas à quoi ca sert
            }
            tab.setBounds(x + (50 * colonne), y + (50 * ligne), 70, 70);
            colonne++; -----colonne++, comme ligne++ je comprend pas

            je suis debutant desole et pour ton problème je vois pas comment faire, pour mon plateau de jeu j'ai dessiner dans un grand JPanel plutot que d'en crée plusieurs.
            • Partager sur Facebook
            • Partager sur Twitter
              16 mai 2011 à 22:35:35

              Félicatition, tu as réussi à mettre la coloration syntaxique à la main... dommage qu'il n'y ait pas l'indentation afin que cela soit compréhensible.

              Une petite chose dans les idées de bon codage... toujours mettre la constante en premier : Donc, entre
              maVariable.equals("P")
              // Et 
              "P".equals(maVariable)


              Choisir de préférence la seconde solution.

              Par ailleurs, pour ce que tu cherches à faire, il ne faut pas que tu rajoutes une idée de vecteur afin de pouvoir l'orienté.


              Cordialement,
              Patouche

              Qui n'a pas pu lire le code jusqu'au bout....
              • Partager sur Facebook
              • Partager sur Twitter
                17 mai 2011 à 19:46:24

                Je suis au même point que toi maintenant mais avec une méthode différente et faire bouger mon pacman m'interesse grandement je voulais donc savoir comment on ajoutait la notion de vecteur.
                Avec des dessin de rectangle dans un JPanel pour crée le plateau les vecteurs sont également obligatoire ?
                • Partager sur Facebook
                • Partager sur Twitter
                  27 mai 2011 à 20:10:42

                  J'ai réussi a faire avancé mon pac-man mais j'ai un problème pour les murs, il ne crée pas bien le tableau de boolean qui stock les murs alors que le tableau qui stock les cases du chemin fonctionne bien lui.
                  De plus le Jlabel dans lequel je compte le nombre de piece mangé ne s'incémente pas.
                  Voici un lien pour télecharger mon code : http://www.megaupload.com/?d=PBOOAIA6

                  Si vous pouviez m'aider à résoudre ces problèmes se serait vraiment très gentil à vous.

                  Bonne soirée.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Problème avec mon pacman

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown