salut je doit creer un losange dans un tableau 2D, ma fonction recoit en parametre un x et un y qui est le centre du losange et 1 rayon. je sais que je doit creer 2 boucle avec un if mais je n'arrive pas a trouver quoi mettre dans le if pour que le losange s'affiche comme il le faut merci.
voici ce que j'ai a date
int k = 1; //j'hesite si c'est 0 ou 1 qui doit etre la
for (int i = y - rayon + 1; i <= y + rayon - 1; i++)
{
for (int j = x - rayon + 1; j <= x + rayon - 1; j++)
{
if (i >= j - rayon - k && i <= j - rayon + k) //la ligne erroner
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 plus facilement. 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
Merci d'utiliser les balises de 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 celà, il faut utiliser le bouton . Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: c;">Votre code ici</pre>.
Merci de modifier votre message en conséquence via le bouton "Modifier" situé sur son coin supérieur droit, sans quoi le sujet sera fermé.
tu chipotes là ; tu vois où je veux en venir ; pour faire DES losanges (et pas juste un qui est particulier) y'a pas assez d'infos (où il me manque une notion de maths
Censément, quelqu'un de sensé est censé s'exprimer sensément.
Un losange ayant la longueur de son grand axe égale à la longueur de son petit axe est un carré.
En gros, vous cherchez à dessiner un carré ayant ces cotés faisant un angle de Pi/2 radian avec les axes du repère.
"Graphiquement", c'est peut-être un losange parce qu'une fenêtre en mode console n'est pas un isomorphisme, mais pour votre programme, on s'en cogne, c'est un carré.
Reste à savoir s'il est plain ou pas (en wireframe), mais bon, c'est comme le reste, lisez l'algo. avant de l'implémenter.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Et, au vu de votre exemple qui a une "largeur" de "rayon = 3" égale à 5, la hauteur est aussi "2*le rayon -1" => 5.
On retombe donc sur un "carré" plongé dans un espace non isomorphe, "losangifié" dû à la différence du nombre de pixel en hauteur versus en largeur d'une cellule d'affichage d'un caractère dans la console.
La déformation, c'est pas vos noisettes. Affichez "logiquement" un carré tourné de 45°, c'est juste une histoire de décaler d'un caractère le début et la fin des index d'affichage des "*".
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Et, au vu de votre exemple qui a une "largeur" de "rayon = 3" égale à 5, la hauteur est aussi "2*le rayon -1" => 5.
On retombe donc sur un "carré" plongé dans un espace non isomorphe, "losangifié" dû à la différence du nombre de pixel en hauteur versus en largeur d'une cellule d'affichage d'un caractère dans la console.
La déformation, c'est pas vos noisettes. Affichez "logiquement" un carré tourné de 45°, c'est juste une histoire de décaler d'un caractère le début et la fin des index d'affichage des "*".
je sais, c'est jusstement ce que je n'arrive pas a faire car je ne trouve pas le bon if()
possible, moi je le voyais comme un gros carre ou on enlevais 4 petit triangle dans les coins, il fallais donc 2 for pour former le carre et un if dans le 2eme for pour les triangle a enlever. bien sur si tu voit une maniere fait moi signe^^
C'est peut être plus simple de le voir comme 2 triangles empilés, le 2ème "tête en bas" comme le nombre d'espaces et d'étoiles dépend uniquement du "numéro" de ligne
Censément, quelqu'un de sensé est censé s'exprimer sensément.
J'avais même pas vu qu'il s'agissait de remplir un tableau 2D (j'étais parti sur de l'affichage console, du coup je pigeais la nécessité des espaces après)
Avec cette "contrainte" là, une autre approche possible, t'as juste à faire un quart du losange (soit un carré avec une moitié d'espace et l'autre d'étoiles selon la diagonale) ; le reste c'est que des symétries.
Je me demande aussi s'il y aurait pas moyen de faire ça avec une matrice de rotation...
Censément, quelqu'un de sensé est censé s'exprimer sensément.
bon finalement sa m'a donner ca (c'est pas exactement se que je vous avais decrit il avais d'autre condition^^
for (int i = 0; i < Tuiles.GetLength(1) - 1; i++)
{
for (int j = 0; j < Tuiles.GetLength(0) - 1; j++)
{
if (Math.Abs(x - i - 1) + Math.Abs(y - j - 1) <= rayon - 1)
{
Tuiles[j, i] = tuile;
}
}
}
c# losange
× 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.
Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script