TortueGraphique 2.0.0

dotnet add package TortueGraphique --version 2.0.0
                    
NuGet\Install-Package TortueGraphique -Version 2.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TortueGraphique" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TortueGraphique" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="TortueGraphique" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TortueGraphique --version 2.0.0
                    
#r "nuget: TortueGraphique, 2.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TortueGraphique@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TortueGraphique&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=TortueGraphique&version=2.0.0
                    
Install as a Cake Tool

🐢 TortueGraphique

Bibliothèque de dessin graphique style Logo/Tortue pour .NET 8.0 Windows Forms.

Créez facilement des dessins, des animations et des jeux éducatifs avec une API simple et intuitive inspirée du langage Logo.

NuGet License: MIT

✨ Fonctionnalités

  • 🐢 API style Logo : Commandes intuitives (Avancer, Tourner, etc.)
  • 🎨 Primitives de dessin : Points, traits, cercles, polygones, texte
  • 🎭 Couches transparentes : Superposez plusieurs dessins
  • Rendu haute qualité : Antialiasing et optimisation GDI+
  • 🎨 Gestion des couleurs : Color, RGB, RGBA avec transparence
  • 📐 Formes géométriques : Carré, rectangle, cercle, polygones réguliers
  • 📝 Support du texte : Polices personnalisables, tailles, styles
  • 🔄 Pattern Dispose : Gestion automatique des ressources

📦 Installation

Via .NET CLI

dotnet add package TortueGraphique

Via Package Manager Console

Install-Package TortueGraphique

Via Visual Studio

  1. Clic droit sur le projet → Gérer les packages NuGet
  2. Rechercher "TortueGraphique"
  3. Cliquer sur Installer

🚀 Démarrage rapide

Exemple simple : Dessiner un carré

using TortueGraphique.Lib.Graphics;
using System.Drawing;
using System.Windows.Forms;

// Créer une tortue sur fond blanc (800x600)
using var tortue = new Tortue(800, 600);

// Dessiner un carré rouge
tortue.ChangerCouleur(Color.Red);
tortue.ChangerEpaisseur(3);
tortue.BaisserStylo();

for (int i = 0; i < 4; i++)
{
    tortue.Avancer(100);
    tortue.TournerDroite(90);
}

// Afficher dans un PictureBox
pictureBox.Image = tortue.ObtenirBitmap();

Résultat

Un carré rouge de 100 pixels de côté avec un trait de 3 pixels d'épaisseur.

📚 Documentation

Commandes de déplacement

tortue.Avancer(100);           // Avance de 100 pixels
tortue.Reculer(50);            // Recule de 50 pixels
tortue.TournerDroite(90);      // Tourne de 90° vers la droite
tortue.TournerGauche(45);      // Tourne de 45° vers la gauche
tortue.DefinirAngle(0);        // Définit l'angle absolu (0° = droite)

Gestion du stylo

tortue.BaisserStylo();                    // Active le dessin
tortue.LeverStylo();                      // Désactive le dessin
tortue.ChangerCouleur(Color.Blue);        // Change la couleur
tortue.ChangerCouleur(255, 0, 0);         // Rouge en RGB
tortue.ChangerEpaisseur(5);               // Change l'épaisseur du trait

Positionnement

tortue.AllerA(400, 300);       // Téléporte sans tracer
tortue.AllerVers(400, 300);    // Déplace en traçant (si stylo baissé)
tortue.Centrer();              // Revient au centre du canvas
tortue.Reinitialiser();        // Réinitialise position, angle et stylo

Formes rapides

tortue.Carre(100);             // Carré de 100 pixels de côté
tortue.Rectangle(150, 80);     // Rectangle 150x80
tortue.Cercle(50);             // Cercle de rayon 50
tortue.Polygone(6, 80);        // Hexagone (6 côtés de 80px)

Texte

// Texte simple
tortue.Texte("Hello!", 24);

// Avec police personnalisée
tortue.Texte("Bonjour", 20, "Arial");

// Avec style
tortue.Texte("Bold", 18, "Arial", FontStyle.Bold);

// Avec couleur spécifique
tortue.Texte("Red", 16, "Arial", Color.Red);

Primitives de dessin

// Point
tortue.Point(100, 100, Color.Red, diametre: 5);
tortue.Point(150, 150, 255, 0, 0, diametre: 10);  // RGB

// Trait
tortue.Trait(0, 0, 100, 100, Color.Blue, TypeBoutTrait.Arrondi, epaisseur: 3);

🎭 Couches transparentes

Utilisez TortueCouche pour créer des dessins superposés avec fond transparent.

using TortueGraphique.Lib.Graphics;
using System.Drawing;

// Couche de fond (opaque)
using var fond = new Tortue(800, 600);
fond.ChangerCouleur(Color.Blue);
fond.Cercle(150);

// Couche transparente
using var couche = new TortueCouche(800, 600);
couche.ChangerCouleur(Color.FromArgb(128, 255, 0, 0)); // Rouge semi-transparent
couche.AllerA(400, 300);
couche.Carre(100);

// Fusionner les couches
Bitmap resultat = new Bitmap(fond.ObtenirBitmap());
using (Graphics g = Graphics.FromImage(resultat))
{
    g.DrawImage(couche.ObtenirBitmap(), 0, 0);
}

pictureBox.Image = resultat;

🎮 Exemple : Spirale colorée

using var tortue = new Tortue(800, 600);
tortue.BaisserStylo();

int[] couleurs = { 
    Color.Red.ToArgb(), 
    Color.Orange.ToArgb(), 
    Color.Yellow.ToArgb(), 
    Color.Green.ToArgb(), 
    Color.Blue.ToArgb(), 
    Color.Purple.ToArgb() 
};

for (int i = 0; i < 360; i++)
{
    tortue.ChangerCouleur(Color.FromArgb(couleurs[i % couleurs.Length]));
    tortue.Avancer(i * 0.5f);
    tortue.TournerDroite(59);
}

pictureBox.Image = tortue.ObtenirBitmap();

🎨 Exemples d'utilisation

Fractale : Arbre

void DessinerArbre(Tortue tortue, float longueur, int profondeur)
{
    if (profondeur == 0) return;

    tortue.Avancer(longueur);
    
    // Branche droite
    tortue.TournerDroite(30);
    DessinerArbre(tortue, longueur * 0.7f, profondeur - 1);
    tortue.TournerGauche(30);
    
    // Branche gauche
    tortue.TournerGauche(30);
    DessinerArbre(tortue, longueur * 0.7f, profondeur - 1);
    tortue.TournerDroite(30);
    
    tortue.Reculer(longueur);
}

// Utilisation
using var tortue = new Tortue(800, 600);
tortue.AllerA(400, 550);
tortue.DefinirAngle(90); // Vers le haut
tortue.ChangerCouleur(Color.Green);
tortue.BaisserStylo();
DessinerArbre(tortue, 100, 8);

Jeu simple

Consultez le projet d'exemple JeuxBalle pour voir comment créer un jeu de casse-briques complet avec gestion des collisions et animations.

🛠️ Configuration requise

  • .NET 8.0 ou supérieur
  • Windows (utilise GDI+ via System.Drawing)
  • Windows Forms pour l'affichage

📄 Licence

Ce projet est sous licence MIT.

🤝 Contribution

Les contributions sont les bienvenues ! N'hésitez pas à :

  • Signaler des bugs
  • Proposer de nouvelles fonctionnalités
  • Soumettre des pull requests

👤 Auteur

Marc - Développeur passionné par la programmation graphique et l'éducation

🙏 Remerciements

Inspiré par le langage Logo et les tortues graphiques de Seymour Papert.

📝 Changelog

Version 1.0.0 (2025-01-21)

  • 🎉 Première version publique
  • ✨ API complète de dessin style Logo
  • 🎭 Support des couches transparentes
  • 📝 Support du texte avec polices personnalisées
  • 🎨 Rendu haute qualité avec antialiasing
  • 🔄 Pattern IDisposable pour gestion des ressources

💡 Astuce : Utilisez using avec vos tortues pour libérer automatiquement les ressources !

using var tortue = new Tortue(800, 600);
// Pas besoin d'appeler Dispose() manuellement

🔄 Version 2.0.0 - Breaking Change

**Important 😗* À partir de la version 2.0.0, le système de coordonnées a changé !

Avant (v1.x)

// Centre du canvas 800x600 était à (400, 300)
Tortue tortue = new Tortue(800, 600);
tortue.AllerA(400, 300);  // Centre

Maintenant (v2.x)

// Centre du canvas est maintenant à (0, 0)
Tortue tortue = new Tortue(800, 600);
tortue.AllerA(0, 0);      // Centre
tortue.Centrer();         // Ou utilisez Centrer()

Migration

Pour migrer votre code de v1.x vers v2.0 :

  • Coordonnées X : nouveauX = ancienX - largeur/2
  • Coordonnées Y : nouveauY = ancienY - hauteur/2

Exemple pour un canvas de 800x600 :

  • AllerA(400, 300) devient AllerA(0, 0)
  • AllerA(200, 150) devient AllerA(-200, -150)
  • AllerA(600, 450) devient AllerA(200, 150)

✨ Nouveautés v2.0.0

Méthodes ArcDroite et ArcGauche

Dessinez des arcs de cercle courbes :

tortue.ArcDroite(90, 100);   // Arc de 90° à droite, rayon 100
tortue.ArcGauche(180, 50);   // Arc de 180° à gauche, rayon 50

Les arcs respectent l'état du stylo (levé/baissé).

Product Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 is compatible.  net9.0-windows was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0-windows7.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 93 1/20/2026
1.0.0 92 1/20/2026

Version 2.0.0 (BREAKING CHANGE) :
- Nouveau système de coordonnées : (0, 0) est maintenant au centre du canvas
- Ajout des méthodes ArcDroite() et ArcGauche() pour dessiner des arcs courbes
- Les arcs respectent maintenant l'état du stylo (levé/baissé)
- Amélioration de la cohérence avec les autres méthodes de déplacement
ATTENTION : Migration nécessaire - les anciennes coordonnées doivent être ajustées