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 fr 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 Fllmuster */ 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. ]