Kreis unter Dos



  • Wer kann mir sagen, wie man mit IDE Borland Bulder als Konsol anwendung eine Kreis Zeichen und mit Farbe füllen kann??
    [email] [/email]



  • Keine Ahnung wie das geht, da es Compilerspezifisch ist. Mit dem Borland Builder hast du Glück und musst nicht auf Grafiklibs ausweichen, da er bereits eine mitliefert.

    Verschoben nach Andere Compiler.

    MfG SideWinder



  • Hi!!!

    Dein Thema ist doch "Kreis unter DOS" und ich hoffe, dass du wirklich eine DOS-Anwendung meinst und nicht etwa eine Win32-Konsolenanwendung.

    Dazu brauchst du erstmal nen DOS Compiler: Schau mal hier nach

    Als Beispiel hab ich den folgenden Code
    (Stammt net von mir ist aber trotzdem richtig, also nur zu 🕶 ):

    #include <graphics.h>  /* für Funktionen der
                              Grafik-Bibliothek */
    #include <stdlib.h>    /* für exit() */
    #include <stdio.h>
    #include <conio.h>
    
    /* initialisiert die Grafik */
    int set_graph(void);
    
    /* Skaleneinteilung am Bildschirm */            
    void calc_coords(void);
    
    /* zum Zeichnen und Ausfüllen der Planeten */
    void draw_planets(void);
    
    /* zeichnet einen Planeten */
    void draw_planet(float x_pos, float radius,
                     int color, int fill_style);
    
    /* zeigt Text auf dem Bildschirm und
       wartet auf einen Tastendruck */
    void get_key(void);
    
    /* Globale Variablen -- werden von
       calc_coords() initialisiert */
    int max_x, max_y; /* Maximum der x- und
                         y-Koordinaten */
    int y_org;        /* y-Koordinate für alle
                         Zeichnungen */
    int au1;          /* Eine astronomische Einheit in
                         Pixels (innere Planeten) */
    int au2;          /* Eine astronomische Einheit in
                         Pixels (außere Planeten) */
    int erad;         /* Erdradius in Pixels */
    
    int main()
    {
       /* Herausfinden, ob die Bedingungen erfüllt
          sind und Ende, falls nicht EGA oder VGA */
       if (set_graph() != 1)
       {
          printf("Dieses Programm erfordert EGA "
                 "oder VGA\n");
          exit(0);
       }
    
       calc_coords();  /* Skaleneinteilung entsprechend
                          der Grafikkarte */
       draw_planets(); /* Sonne bis Uranus (kein Raum
                          für weitere) */
       get_key();      /* Meldung zeigen und auf
                          Tastendruck warten */
       closegraph();   /* Das Grafiksystem
                          schließen */
    
       return 0;
    }
    
    int set_graph(void)
    {
       int graphdriver = DETECT,
           graphmode, error_code;
    
       /* Grafiksystem initialisieren; Basis ist
          EGA oder VGA; die BGI-Dateien werden im
          Directory ..\\BGI des aktuellen
          Laufwerks erwartet */
       initgraph(&graphdriver, &graphmode, "..\\bgi");
       error_code = graphresult();
    
       /* Keine grafikfähige Hardware gefunden */
       if (error_code != grOk)     
          return(-1);
    
       /* weder EGA noch VGA */
       if ((graphdriver != EGA) && (graphdriver != VGA))
       {
          closegraph();
          return 0;
       }
    
       /* Grafik ist OK, also "true" zurückgegeben */
       return(1);                   
    }
    
    void calc_coords(void)
    {
       /* Globale Variablen fr die Zeichnung
          initialisieren */
       max_x = getmaxx();    /* max. x-Koordinate */
       max_y = getmaxy();    /* max. y-Koordinate */
       y_org = max_y / 2;    /* Y-Koordinate für alle
                                Objekte */
       erad = max_x  / 200;  /* Erdradius in Pixels */
       au1 = erad * 20;      /* Maßstab für die inneren
                                Planeten */
       au2 = erad * 10;      /* Maßstab für die äußeren
                                Planeten */
    }
    
    void draw_planets()
    {
       /* Jeder Aufruf definiert die x-Koordinate in
          AU (astronomical unit), Radius und Farbe */
    
       /* Sonne */
       draw_planet(-90, 100,
                   EGA_YELLOW, EMPTY_FILL);
    
       /* Merkur */
       draw_planet(0.4 * au1, 0.4 * erad,
                   EGA_BROWN, LTBKSLASH_FILL);
    
       /* Venus */
       draw_planet(0.7 * au1, 1.0 * erad,
                   EGA_WHITE, SOLID_FILL);
    
       /* Erde */
       draw_planet(1.0 * au1, 1.0 * erad,
                   EGA_LIGHTBLUE, SOLID_FILL);
    
       /* Mars */
       draw_planet(1.5 * au1, 0.4 * erad,
                   EGA_LIGHTRED, CLOSE_DOT_FILL);
    
       /* Jupiter */
       draw_planet(5.2 * au2, 11.2 * erad,
                   EGA_WHITE, LINE_FILL);
    
       /* Saturn */
       draw_planet(9.5 * au2, 9.4 * erad,
                   EGA_LIGHTGREEN, LINE_FILL);
    
       /* Uranus */
       draw_planet(19.2 * au2, 4.2 * erad,
                   EGA_GREEN, LINE_FILL);
    }
    
    void draw_planet(float x_pos, float radius,
                     int color, int fill_style)
    {
       /* setzt die Farbe, in der gezeichnet wird */
       setcolor (color);
    
       /* zeichnet den Kreis */
       circle(x_pos, y_org, radius);
    
       /* setzt das Fllmuster */
       setfillstyle(fill_style, color);
    
       /* f+llt den Kreis */
       floodfill(x_pos, y_org, color);
    }
    
    void get_key(void)
    {
       /* gibt eine Meldung aus und wartet
          auf einen Tastendruck */
       outtextxy(50, max_y - 20,
                 "Um zu beenden, eine Taste drücken");
       getch();
    }
    

    Viel Spass und cu,
    Lukas

    [ Dieser Beitrag wurde am 08.06.2002 um 17:09 Uhr von Consystor editiert. ]


Log in to reply