Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec canvas

Affichage de canvas innatendu

    17 janvier 2023 à 21:24:48

    Bonjour à toutes et tous .

    En utilisant la balise canvas, pour coder les pions dans un jeu de dames, j'ai obtenu un résultat vraiment innatendu et assez étrange .

    En quelques mots, j'ai créé une classe Pions, munie d'une fonction Dessine(), qui utilise ctx.arc(x, y, rayon, 0, 2*Math.PI),

    a priori, rien que du trés classique, sauf que le résultat l'est beaucoup moins .

    Je cherche à obtenir 2 séries de pions, chacune sur une rangée, à son extrémité du damier, mais j'obtiens une sorte de rectangle entre les 2

    et une seule couleur, alors que j'ai 2 fillStyle .

    De plus, l'endroit ou appa 

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2023 à 7:27:01

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Manque de précisions

      Vous êtes ici sur un forum d'entraide communautaire et non pas sur un forum de demande de service, le but n'est donc pas de fournir une réponse toute faite ou de directement fournir la solution à quiconque viendrait sans la moindre trace. Afin d'obtenir de l'aide et une solution à votre problème, il est fortement recommandé de présenter clairement l'état actuel du problème en nous fournissant :

      • Un descriptif clair et précis du problème
      • La tentative actuelle de résolution que vous avez effectué : le code HTML et JS
      • Le résultat attendu et le résultat actuel : un schéma serait pertinent
      • Toutes pistes de recherches pouvant aider à la résolution

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue.

      Merci de modifier votre message d'origine en fonction.


      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.

      (titre originel : Problème avec canvas)

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        29 janvier 2023 à 1:28:40

        Bonjour à toutes et à tous .

        Je code actuellement un jeu utilisant Canvas JS, et la méthode filter, appliquée sur un tableau d'objets .

        Toutefois, le résultat est vraiment inattendu,  j'aurais besoin d'avis complémentaires et de conseils pour aboutir au résultat escompté . Le but était d'obtenir 2 jeux de pions l'un marron, l'autre blanc, chacun à une extrémité du terrain de jeu . Comme on peut le voir sur l'image jointe, il y a troute une zone qui se colore avec canvas, alors que ça ne devrait pas . Auriez vous des conseils , des avis . Merci

        • Partager sur Facebook
        • Partager sur Twitter
          29 janvier 2023 à 3:33:04

          Bonjour:

          "Il est possible que vous ayez oublié de fermer le path créé par ctx.arc() entre chaque pion,

          ce qui peut causer un effet de remplissage "entrelacé" entre les pions.

          Assurez-vous d'utiliser ctx.beginPath() avant de dessiner chaque pion et ctx.closePath() après pour fermer le path.

          Il est également possible que vous utilisiez la même variable pour stocker les fillStyle pour les deux séries de pions, ce qui cause l'utilisation d'une seule couleur pour tous les pions.

          Assurez-vous d'utiliser une variable différente pour stocker la couleur de chaque série de pions.

          Sinon, il est difficile de comprendre exactement où se situe le problème sans avoir accès au code complet.

          Si vous avez encore des problèmes, n'hésitez pas à fournir plus de détails sur votre code et je pourrai vous aider à résoudre le problème."

          Un exemple de code qui désine des pion de dames:

          class Pion {
            constructor(x, y, couleur) {
              this.x = x;
              this.y = y;
              this.couleur = couleur;
            }
          
            dessine(ctx) {
              ctx.beginPath();
              ctx.arc(this.x, this.y, 20, 0, 2 * Math.PI);
              ctx.fillStyle = this.couleur;
              ctx.fill();
              ctx.closePath();
            }
          }
          
          const canvas = document.getElementById("canvas");
          const ctx = canvas.getContext("2d");
          
          const pionsNoirs = [
            new Pion(50, 50, "black"),
            new Pion(100, 50, "black"),
            new Pion(150, 50, "black"),
            new Pion(200, 50, "black"),
            new Pion(250, 50, "black"),
            new Pion(300, 50, "black"),
            new Pion(350, 50, "black"),
            new Pion(400, 50, "black"),
          ];
          
          const pionsBlancs = [
            new Pion(50, 400, "white"),
            new Pion(100, 400, "white"),
            new Pion(150, 400, "white"),
            new Pion(200, 400, "white"),
            new Pion(250, 400, "white"),
            new Pion(300, 400, "white"),
            new Pion(350, 400, "white"),
            new Pion(400, 400, "white"),
          ];
          
          pionsNoirs.forEach((pion) => pion.dessine(ctx));
          pionsBlancs.forEach((pion) => pion.dessine(ctx));
          

          Position des pions a adapter en fonction des dimensions du Canvas évidement.



          Réponse et code générer par ChatGPT.

          -
          Edité par SamuelGaborieau3 29 janvier 2023 à 3:36:25

          • Partager sur Facebook
          • Partager sur Twitter

          suggestion de présentation.

            5 février 2023 à 1:30:00

            Bonjour Samuel .

            Merci pour votre réponse, je vais essayer de recoder en suivant vos conseil .

            Si ça ne fonctionne pas, il me semble que le mieux serait que je propose un dépôt GIT 

            • Partager sur Facebook
            • Partager sur Twitter

            Problème avec canvas

            × 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