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

JavaScript Discussion :

Erreur sur affectation événement


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2019
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2019
    Messages : 80
    Points : 63
    Points
    63
    Par défaut Erreur sur affectation événement
    Bonjour, c'est toujours relatif au même jeu du serpent. Je ne trouve pas l'erreur qui fait que ça ne marche après avoir suivi et répéter le tuto. Je pense qu'il s'agit d'un nombre impaire de d'accolade dans la 1ière partie du code. J'ai trouvé 12 ouvrantes et 11 fermantes. Avant document.onkeydown =

    Le code html reste inchangé :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html>
    <html lang="fr">
        <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
           <title>Jeu du serpent</title>
        </head>
        <body> 
            <h1>hello</h1>
            <script src="script4.js"></script>
     </body>    
    </html>

    et le code javascript est :

    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
    window.onload = function()
    {
        var canvasWidth = 900;
        var canvasHeight = 600;
        var blockSize = 30;
        var ctx;
        var delay = 100;
        var snakee;
     
        init();
     
        function init()
        {
          var canvas = document.createElement('canvas');
          canvas.width = canvasWidth;
          canvas.height = canvasHeight;
          canvas.style.border = "1px solid";
          document.body.appendChild(canvas);
          ctx = canvas.getContext('2d');
          snakee = new Snake([[6,4],[5,4],[4,4]], "right");
          refreshCanvas();
        }
     
        function refreshCanvas()
        {
            ctx.clearRect(0, 0, canvasWidth, canvasHeight);
            snakee.advance();
            snakee.draw();
            setTimeout(refreshCanvas,delay);
        }
     
        function drawBlock(ctx, position)
        {
            var x = position[0] * blockSize;
            var y = position[1] * blockSize;
            ctx.fillRect(x ,y ,blockSize ,blockSize);
        }
     
        function Snake(body, direction)
        {
            this.body = body;
            this.direction = direction;
            this.draw = function()
            {
              ctx.save();
              ctx.fillStyle = "#ff0000";
              for (var i = 0; i < this.body.length; i++)
              {
                  drawBlock(ctx, this.body[i]);
              }
              ctx.restore();
            };
            this.advance = function()
            {
                var nextPosition = this.body[0].slice();
                switch(this.direction)
                {
                    case "left":
                       nextPosition[0]-= 1;
                       break;
                    case "right":
                       nextPosition[0]+= 1;
                       break;
                    case "down":
                       nextPosition[1]+= 1;
                       break;
                    case "up":
                       nextPosition[1]-= 1;
                       break;
                    default:    
                          throw("Invalid Direction");
                }
     
                this.body.unshift(nextPosition);
                this.body.pop();
            };
            this.setDirection = function(newDirection)
            {
                var allowedDirections;
                switch(this.direction)
                {
                       case "left":   
                       case "right":
                       allowedDirections = ["up","down"];
                         break;
                       case "down":
                       case "up":
                       allowedDirections = ["left","right"];
                         break;  
                       default:    
                         throw("Invalid Direction");
                }
                if(allowedDirections.indexOf(newDirection) > -1)
                {
                    this.direction = newDirection;       
                }
            };
        }
     
    document.onkeydown = function.handelKeyDown(e)
    {
        var key = e.keyCode;
        var newDirection;
        switch(key)
        {
            case 37:
                newDirection = "left";
                break;
            case 38:
                newDirection = "up";
                break;
            case 39:
                newDirection = "right";
                break;
            case 40:
                newDirection = "down";
                break;
            default:    
                return;
        }
            snakee.setDirection(newDirection);
    }
    J'ai une croix rouge à la ligne 100 : document.onkeydown = function.handelKeyDown(e)

    Merci d'avance.
    Diego

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Plus de 120 lignes de code, et PAS UN commentaire...

    ...code qui ne marche pas...
    Sérieux ?
    C'est tout ce que tu as trouvé comme titre ??

    Étudie un peu plus TON problème, essaie de cibler ce qui ne va pas,....
    Et tu trouveras un titre plus "adapté".

    ...Je pense qu'il s'agit d'un nombre impaire de d'accolade dans la 1ière partie du code. J'ai trouvé 12 ouvrantes et 11 fermantes...
    Alors tu sais quoi chercher...

    EDIT : ligne 99........
    Franchement, c'est idiot/dommage de faire une SI BELLE INDENTATION... pour ne pas s'en servir, non ?
    Dernière modification par Invité ; 08/04/2020 à 15h58.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2019
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2019
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Bonjour, vraiment toutes mes excuses je suis développeur apprenant.
    J'ai rajouté une accolade fermante ligne 99 mais ça ne change rien.
    Je vais essaye de faire les commentaires ça me forcera à bien comprendre le code d'ailleurs.
    Merci.

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,
    Citation Envoyé par Diegomarck Voir le message
    J'ai une croix rouge à la ligne 100 : document.onkeydown = function.handelKeyDown(e)
    Le deuxième point est en trop : function.handelKeyDown(e) ---> function handelKeyDown(e)...

    Et il manque une accolade fermante, selon ce que tu veux : soit tu la places juste avant la ligne 100 soit à la fin du code...

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2019
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2019
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Super ça marche merci beaucoup!!!!!!!!!!!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bien vu Beginner. !

    J'ai pourtant cherché hier : pas moyen de mettre la main dessus !

    sur Codepen, le message d'erreur disait :
    "SyntaxError: missing ( before formal parameters" line: 85
    (mauvais numéro de ligne -> je cherchais AVANT la ligne 100 !)
    Dernière modification par Invité ; 09/04/2020 à 09h33.

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

Discussions similaires

  1. un code qui ne marche pas
    Par JeanNoel53 dans le forum C++/CLI
    Réponses: 8
    Dernier message: 15/02/2016, 19h11
  2. [XL-2010] code qui ne marche pas avec excel 2003
    Par nibledispo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/08/2013, 06h04
  3. code importation excel=>Access qui ne marche pas
    Par marcuscircus dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/06/2008, 10h34
  4. Réponses: 3
    Dernier message: 24/04/2008, 16h30
  5. code qui ne marche pas
    Par Jihed Amine Maaref dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/08/2005, 13h44

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