C
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. ]