"Uhr" erstellen unter WIN32 Konsole
-
Hallo Leute!!
Mein Problem sieht so aus!
/*************************************************************************/ /* E3X_5 Das Programm stellt die Uhrzeit in Stunden, Minuten und */ /* Sekunden als waagerechte Balken auf dem Bildschirm dar. */ /*************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <conio.h> #include <conioex.h> /*-----------------------------------------------------------------------*/ /* Definition der Konstanten */ /*-----------------------------------------------------------------------*/ #define ZEICHEN 219 #define STD_Y 10 #define MIN_Y 15 #define SEC_Y 20 #define TIME_X 15 #define TEXT_X 2 #define STUNDEN 24 #define MINUTEN 59 #define SEKUNDEN 59 /*-----------------------------------------------------------------------*/ /* Funktionsprototypen */ /*-----------------------------------------------------------------------*/ void P1_Stunden_aktualisieren( int std_neu ); void P2_Minuten_aktualisieren( int min_neu ); void P3_Sekunden_aktualisieren( int sec_neu ); void zeichne( int y, int anzahl, int unterstrich ); void beschrifte( int y, char *text, int zeit ); /*************************************************************************/ /* Haupfunktion */ /*************************************************************************/ void main(void) { time_t zeit; /* time_t entspricht long int */ struct tm *zeit_neu; /* Zeiger auf statische Struktur */ int std_neu, min_neu, sec_neu; /* Stunden, Minuten, Sekunden */ zeit = time(NULL); /* time liefert die Zeit in sec als*/ /* longint seit dem 1.1.1970 */ zeit_neu = localtime( &zeit ); /* localtime() rechnet die Sekunden*/ /* in Jahre, Monate bis Sek. um und*/ /* schreibt sie in eine tm struct */ std_neu = zeit_neu->tm_hour; /* Stunden, Minuten, Sekunden aus */ min_neu = zeit_neu->tm_min; /* dem tm struct auslesen und */ sec_neu = zeit_neu->tm_sec; /* zwischenspeichern */ beschrifte( STD_Y, "Stunden" , std_neu); /* gespeicherte Zeit */ beschrifte( MIN_Y, "Minuten" , min_neu); /* darstellen */ beschrifte( SEC_Y, "Sekunden", sec_neu); zeichne( STD_Y, std_neu, STUNDEN ); /* Stunde 1 bis aktuelle */ zeichne( MIN_Y, min_neu, MINUTEN ); /* Minute 1 bis aktuelle */ zeichne( SEC_Y, sec_neu, SEKUNDEN ); /* Sekunde 1 bis aktuelle */ do { !!!!! HIER SOLL DIE AUSGABE STEHEN !!!!! } while (!kbhit()); } und So in etwa soll sie aussehen 12 ____________ Stunden ------------------------ 56 ________________________________________________________ Minuten ----------------------------------------------------------- 19 ___________________ Sekunden ----------------------------------------------------------- Die durchgezogenen Striche sollen im Sekunden, Minuten und Stundentakt weiterlaufen Hat jemand eine Idee??? Würde mich shon über einen guten Ausgabeansatz, der leicht weiter zu entwickeln ist freuen. Bin nämlich Anfänger!!!!!! Danke an Alle die mir helfen /*************************************************************************/
EditBySideWinder: Jetzt sieht dein Problem gleich viel besser aus! Bitte in Zukunft selbstständig Code-Tags benützen!
[ Dieser Beitrag wurde am 29.08.2002 um 14:10 Uhr von SideWinder editiert. ]
-
main gibt int zurück nicht void!
Du merkst dir immer die vorherige Zeit, falls eine Taste gedrückt ist, vergleichst du sie mit der aktuellen Zeit und zeichnest dementsprechend neu.
Wo genau liegt da dein Problem? Brauchst du Hilfe beim Zeichnen, oder bei der Zeitmessung? Gib uns mal ein paar genauere Informationen :).
MfG SideWinder
-
Also ich denke mit:
Würde mich shon über einen guten Ausgabeansatz, der leicht weiter zu entwickeln ist freuen.
sagt er schon ziemlich genau was er brauch *g*.
also ich würde sagen die sache ist ziemlich simpel:
#define done_char '_' #define undone_char ' ' #define total_char '-' void updateStatus (int posx, int posy, int value, int max); void printStatus (int posx, int posy, char* name,int value, int max); void printStatus (int posx, int posy, char* name,int value, int max) /* Zeichnet die konstanten Elemente */ { gotoxy (posx,posy+1); printf ("%s",name); gotoxy (posx+15, posy+1); for (int i=0; i<max; i++) { printf ("%c",total_char); } updateStatus (posx, posy, value, max); } /************************************************** ***************************************************/ void updateStatus (int posx, int posy, int value, int max) /* Gibt die veränderlichen Elemente aus */ { gotoxy (posx+10, posy); printf ("%2.2d", value); gotoxy (posx+15, posy); for (int i=0; i<max; i++) { printf ("%c",(i<value)?done_char:undone_char); } }
Das ist eine sehr billige und einfache Lösung über einen Haufen gotoxys.
Falls ich gleich noch ne sekunde Zeit habe poste ich dier das komplette Porg. (die Sekunde brauche ich zum Tippen, nicht zum posten *g*)mfg
-bg-[ Dieser Beitrag wurde am 29.08.2002 um 16:15 Uhr von -bg- editiert. ]
-
So, nun das komplette prog. Nur noch auschneiden compilieren und sehen wie die wenige Zeit, die wir zum leben haben, gezählt wird *g*
#include "stdio.h" #include "conio.h" #include "time.h" #define done_char '_' #define undone_char ' ' #define total_char '-' void updateStatus (int posx, int posy, int value, int max); void printStatus (int posx, int posy, char* name,int value, int max); void printStatus (int posx, int posy, char* name,int value, int max) /* Zeichnet die konstanten Elemente */ { gotoxy (posx,posy+1); printf ("%s",name); gotoxy (posx+15, posy+1); for (int i=0; i<max; i++) { printf ("%c",total_char); } updateStatus (posx, posy, value, max); } /************************************************** ***************************************************/ void updateStatus (int posx, int posy, int value, int max) /* Gibt die veränderlichen Elemente aus */ { gotoxy (posx+10, posy); printf ("%2.2d", value); gotoxy (posx+15, posy); for (int i=0; i<max; i++) { printf ("%c",(i<value)?done_char:undone_char); } } /************************************************** ***************************************************/ int main (int argc, char* argv) { time_t tmp; tm *t; clrscr(); _setcursortype (_NOCURSOR); printf ("Konsolen Uhr"); printStatus (2, 5,"Sekunden", 0, 59); printStatus (2, 8,"Minuten", 0, 59); printStatus (2, 11,"Stunden", 0, 24); time (&tmp); while (!kbhit()) { if (tmp==time(NULL)) continue; time (&tmp); t = gmtime (&tmp); updateStatus (2, 5,t->tm_sec ,59); updateStatus (2, 8,t->tm_min ,59); updateStatus (2, 11,t->tm_hour ,24); gotoxy (2,2); // printf ("dbg: %2.2d - %2.2d - %2.2d",t->tm_hour,t->tm_min,t->tm_sec); } return 0; }
Du kannst das ganze jetzt noch mit n paar schönen Kommentaren versehen *g*
mfg
-bg-[ Dieser Beitrag wurde am 29.08.2002 um 17:01 Uhr von -bg- editiert. ]
-
Hallo!!!!
Recht schönen Dank!!!!!!!!!!!!!
Jetzt brauch mir nur noch gedanken darüber zu machen, wie das ganze in dem vorgegebenen Teil umsetzen kann. SUUUUUUUUPEE!!!!!!!