Simulation einer Laufschrift

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Simulation einer Laufschrift

    Hi alle zusammen,
    zuerst ich bin neu (hier, und beim PM ca. 3/4 Jahr)

    (kurzer überblick: ich mache eine schulische ausbildung als ITA. Jedenfalls haben wir auch Programmieren als Fach. Wir sind noch am anfang C/C++ in der Konsolle.)

    Die Aufgabe ist KEINE Hausaufgabe! Wer möchte kann mal versuchen nach dem motto bzw ideen!
    Die Idee des Lehrers eine Art Simulation eines Laufschriftes in einer Konsole ablaufen zu lassen.
    z. B. HALLO eine eine Zeile lang laufen zu lassen, Hergeleitet von den LED Anzeigen die halt Laufschrift haben.
    Die einzelnen LEDs werden halt durch ein * ersetzt.

    meine erste Idee war es quasi zu "flashen" das sieht aber nicht aus:

    Quellcode

    1. ....
    2. int main()
    3. {
    4. for(int Tab=0; Tab<=5;)
    5. {
    6. H(Tab);
    7. system("cls");
    8. A(Tab+5);
    9. system("cls");
    10. L(Tab+10);
    11. system("cls");
    12. L(Tab+15);
    13. system("cls");
    14. O(Tab+20);
    15. system("cls");
    16. }
    17. system("pause > nul");
    18. return 0;
    19. }
    20. //------ Funktion A ------
    21. void A (int Tab)
    22. {
    23. int n=5;
    24. n=Tab+n;
    25. cout <<setw(n) <<"**** " <<endl;
    26. cout <<setw(n) <<"* * " <<endl;
    27. cout <<setw(n) <<"* * " <<endl;
    28. cout <<setw(n) <<"* * " <<endl;
    29. cout <<setw(n) <<"**** " <<endl;
    30. cout <<setw(n) <<"* * " <<endl;
    31. cout <<setw(n) <<"* * " <<endl;
    32. cout <<setw(n) <<"* * " <<endl;
    33. } ...
    Alles anzeigen

    PS: H, L, O, sind genauso aufgebaut.

    bei meiner zweiten Idee bin ich mir nicht sicher ob das so geht wie ich mir das vorstelle:
    Als erstes wird alles "Notiert" wird welche "Buchstaben" es geben soll.

    Quellcode

    1. do
    2. {
    3. cout <<"Bitte einen Buchstaben eingeben oder [0] fuer Fertig: " <<endl;
    4. cin >> eing; //fürn anfang NUR H A L L O (also func. A H L O)
    5. switch (eing)
    6. {
    7. case 'H': Sammler(H);
    8. ......
    9. case '0': NewLine();
    10. break;
    11. default: cout <<"Bitte nur Buchstaben oder 0 eingeben!" <<endl;
    12. }
    13. }
    14. while(eing == 0);
    Alles anzeigen

    Sammler soll dann 1 = H() setzen und hochzählen 2 = A() usw.
    (jetzt der teil wo ich nicht weiss ob das irgendwie geht)
    per Pointer oder so, dass das programm in die funk. H springt die erste Zeile ausgibt, was sich ein pointer merkt, dann zurück in die funk. Sammler die dann funk. A aufruft dort die erste Zeile ausgibt und sich das ein pointer merkt.
    Beispiel: H und A erste zeile von acht Zeilen "* * ""**** "
    Wenn dann die Zeile kommplett geschrieben wurde kommt ein <<endl oder halt \n
    durch Funktion "NewLine"
    Anschließend wenn alle Zeilen geschrieben wurden "einfach" um ein Leerzeichen verücken und dann das ganze spiel von vorne via For schleife bis oder so. So das es halt einmal auf dem Bildschirm in der Konsole durchläuft. :)
    kann man dass irgendwie machen wie ich mir das vorstelle und wenn ja wie und wo setzt ich da an?
  • also zu deinem ersten Proble mit dem ClearScreen...
    was passt denn an der Ausgabe nicht? Nen CLS Befehl hab ich bei Linux nicht

    ne andere idee wäre es ein paar leerzeilen dazwischen auszugeben
    sobald du mal die Konsolenhöhe überschritten hast, wird doch alles unten ausgerichtet..
    Wenn du also also nacheinander 50 leerzeilen + inhalt ausgibst, dann sollte deine laufschrift doch unten entlang laufen

    hab auch mal ne lauftext funktion in java geschrieben (aber ohne LEDs)
    http://www.easy-coding.de/java-lauftext-t436.html

    was mir bei dir nicht klar ist, wie du mit der void funktion für die Buchstaben halbe zeichen darstellen willst. also wenn das zeichen gerade vorne durchläuft und hinten wieder auftauchen soll

    ich würd anfangs alles in einen String packen (bzw. einem String Array für die vielen Zeilen) und es dann wie bei meiner java lösung machen, indem du vorne was abschneidest und hinten draufpackst
  • Hier haste ne CLS Funktion (siehe Anhang).

    Einfach die CONSOLE.h mit include einbinden.

    Der Code bringt noch einige Funktionen mehr, als nur einen Clear Screen.
    Hier mal die Prototypen:

    Quellcode

    1. bool cls();
    2. bool setCursor( int zeile, int spalte);
    3. bool setColor( int color );
    4. void cursorOff();
    5. void cursorOn();


    Die Funktionen sollten sich eigentlich von selbst erklären ;)
    Dateien
    • CONSOLE.H

      (4,11 kB, 1.075 mal heruntergeladen, zuletzt: )
  • ne andere idee wäre es ein paar leerzeilen dazwischen auszugeben
    sobald du mal die Konsolenhöhe überschritten hast, wird doch alles unten ausgerichtet..
    Wenn du also also nacheinander 50 leerzeilen + inhalt ausgibst, dann sollte deine laufschrift doch unten entlang laufen


    mit dem setw() setze ich ja quasi leerzeichen aber mit dem unten ausrichten ist mir neu muss ich mal testen denn bei mir auch bis jetzt das problem sobald es hinten angekommen ist und es weiter lief alles verschoben hat in anderhalb zeilen oder sah komisch aus

    bei der ersten variante wollte ich noch irgendwie eine art Grid oder tabelle einsetzen dann müsste das gehn nur scheint es da keins zu geben

    danke schon mal für die hilfe bis jetzt werd mal schauen was ich mit deinem JAVA code anfangen kann sah interressant aus