Hilfe bei C++ Konsolenanwendung (Anfänger)


he1n2

Member
Joined
Oct 28, 2005
Messages
110
Hallo,


Wollte meine "Hausaufgaben"(Brufsschulunterricht->) in C++ machen
, es soll eine "Kinokarte ausgegeben werden der Benutzer gibt vorher Kinosaal, Reihe, Platz, Datum,... eingeben...."(Aufgabenstellung) ----
Soweit alles gepackt. Nun wollte ich während der Kinokartenausgabe meinen Namen "Bunt-Leuchtend"(<-Die Buchstaben
wechseln ständig die Farben) lassen, nur zum spaß an der freude ;) :p .

PROBLEM:
- Die "Kinokarte" wird Ausgegeben mit sämmtlichen "Daten" und schick
Formatier im Konsolenfenster. Die Frage:"Programm Wiederholen?", wird
gestellt, es wird um eingabe gefordert. Jedoch kann mein "Leuchteffekt"
(do-while-Schleife mit Zähler zur Wiederhohlung)
nicht gleichzeitig laufen mit der Eingabeaufforderung(cin) kann.


Wie kann ich beides gleichzeitig(oder so) laufen lassen??????

gruß HE1N2....
 
Hallo,

also wenn ich das richtig verstehe dann soll die Schrift noch die Farbe ändern, während du die Eingabe machst.

Auf die Gefahr das mich andere schlagen, sage ich „Das geht nicht“. Du kannst höchstens solange die Farbe ändern, bis man eine Taste drückt. Aber gleichzeitig fällt mir da nichts ein außer der zweite Prozessor :-D.

Gruß

Rene
 
Vielleicht kann ich mit Anschauungsmaterial noch was reißen ;)

211207225337_kinokarte.JPG


HE1N2 oben links, dort sollten die buchstaben nacheinander eingefärbt ( textcolor(COLOR); ) werden, wärend unten in GELB die Eingabe läuft ...
 
Hallo,

also ich würde es so machen, dass der Bildschirm gelöscht (ich glaube system(„cls“) oder so) und wieder neu aufgebaut wird (Schrift jedes Mal mit anderer Farbe). Das würde ich solange machen bis einen Taste gedrückt wird (j oder n).

Gruß

Rene
 
Ich hab zwar von C++ keine Ahnung aber ich bin trotzdem recht sicher, dass das so nichts wird. Die Eingabeaufforderung durch cin stoppt eben nunmal den Programmablauf, wodurch das Problem natürlich zwangsläufig aufkommt. Ist wie beim alten guten QBasic der INPUT Befehl. Klar könnte man das möglicherweise mit Threads lösen aber das ist nichts für Anfänger mehr! Wenn dann müsstest du eine Möglichkeit finden, die Tasten J und N abzufragen - mit einem anderen Befehl.
 
Beltar said:
man könnte es mit kbhit() und getch() machen,
da wird das Programm nicht aufgehalten

Jop, Problem ist, das der Benutzer angeben soll, ob er wiederhohlen (j) oder beenden (z.B. n) möchte(<-Aufgabenstellung).
Mann könnte ja den effekt erst ablaufen lassen(z.B. bis getch() gedrückt ) und dann erst zur Eingabeaufforderung gehen. Dies währe jedoch blödsinn und nicht nach der genauen Aufgabenstellung.

Gibt es echt keine relativ "einfache" lösung?!?

__________
Gruß : HE1N2
 
du könntest mit kbhit fragen ob eine Taste gedrückt wurde, wenn ja einlesen( zb: bei j schreibt er ein j hinaus und macht dann mit dem farbwechsel weiter bis RETURN gedruckt wird)


das Programm ändert immer test und hallo und wenn ich enter drücke bricht es ab:
Code:
<i>
</i>#include <cstdlib>
#include <iostream>
#include <conio>
#include <windows> 

using namespace std;

int main(int argc, char *argv[])
{
    char i=0;
    int k=0;
    for (; i != 13;)
    {
        
        
        if (kbhit())
        {
                  i=getch();
        }
        Sleep(250);
        
    switch(k)
             {
             case 0:
                  system("cls");
                  printf("hallo");
                  break;
             case 1:
                  system("cls");
                  printf("test");
                  break;
             default:
                     k=-1;
                     
             }
       k++;
        
    }
  
    system("PAUSE");
    return EXIT_SUCCESS;
}


HE1N2 said:
Beltar said:
man könnte es mit kbhit() und getch() machen,
da wird das Programm nicht aufgehalten

Jop, Problem ist, das der Benutzer angeben soll, ob er wiederhohlen (j) oder beenden (z.B. n) möchte(<-Aufgabenstellung).
Mann könnte ja den effekt erst ablaufen lassen(z.B. bis getch() gedrückt ) und dann erst zur Eingabeaufforderung gehen. Dies währe jedoch blödsinn und nicht nach der genauen Aufgabenstellung.

Gibt es echt keine relativ "einfache" lösung?!?

__________
Gruß : HE1N2
 
@Beltar: Genau so meinte ich das auch und noch einfacher als diese Lösung geht es glaube ich nicht.

Gruß

Rene
 
Beltar said:
du könntest mit kbhit fragen ob eine Taste gedrückt wurde, wenn ja einlesen( zb: bei j schreibt er ein j hinaus und macht dann mit dem farbwechsel weiter bis RETURN gedruckt wird)


das Programm ändert immer test und hallo und wenn ich enter drücke bricht es ab:
...

Also, so sieht mein "Farblogo" aus...
Code:
<i>
</i>#include <iostream>
#include <conio>
#include "conioex.h"
using namespace std;

int main()
{
    
  int zahler;
  
textcolor(LIGHTGRAY);    
gotoxy(1,1);  cout<<"      *~------"_     'O'Rama_"-------------------------------------~*";
    
            do
             {
             
              
              gotoxy(17,1); textcolor(LIGHTRED); cout<<'H';
              gotoxy(18,1); textcolor(LIGHTGREEN); cout<<'E'; 
              gotoxy(19,1); textcolor(LIGHTBLUE); cout<<'1';
              gotoxy(20,1); textcolor(LIGHTCYAN); cout<<'N';
              gotoxy(21,1); textcolor(LIGHTMAGENTA); cout<<'2';

              
              Sleep(800);
              gotoxy(17,1); textcolor(LIGHTMAGENTA); cout<<'H';
              gotoxy(18,1); textcolor(LIGHTRED); cout<<'E'; 
              gotoxy(19,1); textcolor(LIGHTGREEN); cout<<'1';
              gotoxy(20,1); textcolor(LIGHTBLUE); cout<<'N';
              gotoxy(21,1); textcolor(LIGHTCYAN); cout<<'2';

              Sleep(800);
              gotoxy(17,1); textcolor(LIGHTCYAN); cout<<'H';
              gotoxy(18,1); textcolor(LIGHTMAGENTA); cout<<'E'; 
              gotoxy(19,1); textcolor(LIGHTRED); cout<<'1';
              gotoxy(20,1); textcolor(LIGHTGREEN); cout<<'N';
              gotoxy(21,1); textcolor(LIGHTBLUE); cout<<'2';

              Sleep(800);
              gotoxy(17,1); textcolor(LIGHTBLUE); cout<<'H';
              gotoxy(18,1); textcolor(LIGHTCYAN); cout<<'E'; 
              gotoxy(19,1); textcolor(LIGHTMAGENTA); cout<<'1';
              gotoxy(20,1); textcolor(LIGHTRED); cout<<'N';
              gotoxy(21,1); textcolor(LIGHTGREEN); cout<<'2';

              Sleep(800);
              gotoxy(17,1); textcolor(LIGHTGREEN); cout<<'H';
              gotoxy(18,1); textcolor(LIGHTBLUE); cout<<'E'; 
              gotoxy(19,1); textcolor(LIGHTCYAN); cout<<'1';
              gotoxy(20,1); textcolor(LIGHTMAGENTA); cout<<'N';
              gotoxy(21,1); textcolor(LIGHTRED); cout<<'2';
              
              Sleep(800);

              zahler++;
              }
             while(zahler<999999);
             
             
return EXIT_SUCCESS;
}

Dass soll sozusagen dauerhaft laufen und dabei muss der benutzer zwischen Wiederhohlen(z.B. j) oder beenden (z.B. n) wählen können.
(Das Programm ist die Eingabe und anschließende Ausgabe der Information zur "Kinokarte")...

@Beltar: Glaub mit der Lösung passt nit ganz
:wacko: ????!!?

Vielen dank für euer interesse :D

PS.: Frohe Weinachten !!!!!!!!!!!!!!!!!
 
Hallo,

für eine unendliche Schleife nimm einfach: „while(1)“, das sieht einfach schöner aus als 99999 :D .

Die Schleife kannst du ja einfach solange durchlaufen bis eine Taste gerückt wird, also j oder n und bei j startest du neu und bei n beendest du das Programm.

Du Wohnst nicht rein zufällig in der nähe von Ingolstadt?

Gruß

Rene
 
relei said:
Du Wohnst nicht rein zufällig in der nähe von Ingolstadt?

;) Bei ihm steht als Wohnort Berlin dabei.
Soweit ich mich erinnere, ist das nicht ganz bei Ingolstadt :lol:
 
Ups, wieder mal ohne Sin und Verstand :D , das hab ich gar nicht gesehen .

Gruß

Rene
 
Back
Top