Farbige Gestaltung des Menüs

Stormrider80

Grünschnabel
Hy Leute,

ich hab hier ein Problem und komm damit einfach nicht weiter. Vielleicht (hoffentlich) kann mir jemand helfen. Ich muß bei dem untenstehenden Programm das Menü das aufgerufen wird wenn es compiliert und gestartet wird (Programm läuft einwandfrei) farbig gestalten. Leider hab ich keine Ahnung wie das gehen soll. Hab schon in mehreren Büchern nachgeschlagen aber nix gefunden. Ich bin für jeden Tip dankbar.


#include <stdio.h>
#include <conio.h>
#include <math.h>

#define SCHALL 330.0 /* Schallgeschwindigkeit 330 m/s. */
#define ERDBESCHL 9.81 /* Erdbeschleunigung 9.81 m/(s^2).*/
#define ABWEICHUNG 0.001 /* zugel. Abweichung bei Iteration*/
//#define BIL clrscr(); /* Bildschirm loeschen */

void wait(void);

void main(void)
{
char kennbuchst,ret;
double zeit,zeit2; /* Gesamtzeit in Sekunden. */
double tiefe,tiefe1,tiefe2; /* Tiefe des Brunnens in Meter. */
double diff, x, y; /* Hilfsvariablen */
int i;

do /* Beginn der do-while-Schleife */
{
//BIL;
setbuf(stdout,NULL);
printf("\n\n\n\t\t");
printf(" L ");
printf(" Berechnen der Tiefe mit der Loesungsformel");
printf("\n\n\t\t");

printf(" I ");
printf(" Berechnen der Tiefe mittels Iteration");
printf("\n\n\t\t");

printf(" x ");
printf(" Programm beenden");
printf("\n\n\t\t Programmfortsetzung: ");
kennbuchst = getche();

//BIL;
switch(kennbuchst)
{
case 'l': /* Berechnen der Tiefe nach Eingabe */
case 'L': /* der gemessenen Zeit */
printf("\n\n\n\t\t Zeit vom Loslassen des Steins bis zum ");
printf("\n\t\t Eintreffen des Schalls in Sekunden :");
scanf("%lf%c",&zeit,&ret);

x = zeit/SCHALL + 1.0/ERDBESCHL;
y = zeit/SCHALL;
tiefe = (double)(SCHALL * SCHALL * ( x - sqrt(x * x - y * y )));

printf("\n\t\t Der Schacht ist %6.2f Meter tief",tiefe);
printf("\n\n\n\n");
wait();
break;

case 'i': /* Berechnen der Tiefe nach Eingabe */
case 'I': /* der gemessenen Zeit */
printf("\n\n\n\t\t Zeit vom Loslassen des Steines bis zum ");
printf("\n\t\t Eintreffen des Schalls in Sekunden : ");
scanf("%lf%ret",&zeit,&ret);

tiefe1 = zeit * zeit * ERDBESCHL / 2; /* Berechnung der */
zeit2 = tiefe1/SCHALL; /* beiden Grenzwerte */
tiefe2 = (zeit - zeit2) * (zeit - zeit2) /* 'tiefe1' u.'tiefe2'*/
* ERDBESCHL / 2;

printf("\n\n\t\t Oberer Grenzwert: = %lf Meter" ,tiefe1);
printf("\n\t\t Unterer Grenzwert: = %lf Meter\n\n" ,tiefe2);
i = 0;
do
{
i++;
tiefe = .5 * (tiefe1+tiefe2); /* Mitte zw. tiefe1 u. tiefe2*/
diff = sqrt(2*tiefe/ERDBESCHL) /* Abweichung der berechneten*/
+tiefe/SCHALL - zeit; /* von der gemessenen Zeit. */

if (diff >= 0.0) /* Das Intervall wird neu */
tiefe1 = tiefe; /* festgelegt. */
else
tiefe2 = tiefe;

printf("\n\t\t %1d .Berechnungslauf: %6.2f Meter",i,tiefe);
} while (fabs(diff) > ABWEICHUNG);/* solange bis die Zeit nur */
/* noch um die festgelegte */
/* Abweichung von der gemessenen entfernt ist */
printf("\n\n\n\n");
wait();
break;

case 'x':
printf("\nProgrammende\n");
wait();
break;

default: /* Anweisungsblock des */
printf("\nFalscher Kennbuchstabe"); /* Fehlerfalles */
wait();
break;
}
}while(kennbuchst != 'x'); /* Ende der do - while-Schleife */
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Die Funktion 'wait' gibt einen Text aus und wartet auf 'RETURN' */
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
void wait(void)
{
puts("Bitte die Taste RETURN druecken!");
while( getch() != '\r' );
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
 
Zitat aus dem MSDN:
SetConsoleTextAttribute
The SetConsoleTextAttribute function sets the foreground (text) and background color attributes of characters written to the screen buffer by the WriteFile or WriteConsole function, or echoed by the ReadFile or ReadConsole function. This function affects only text written after the function call.

BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput, // handle to console screen buffer
WORD wAttributes // text and background colors
);
Das gilt natürlich nur, wenn Du unter Windows programmierst.
 
Zurück