Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.02.2009, 20:15

Ein Zeichen für eine bestimmte Zeit anzeigen lassen

Hallo! Ich will einen Konsolen Bildschirmschoner im Matrixstil mit C++ schreiben. Dazu soll ein Zeichen für eine bestimmte Zeit angezeigt werden. Ich weiß nicht genau wie ich das hinkriege.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;

int main ()
{
    char Zeichen = '#';
    unsigned short int Sekunden = 3;

    while(???<=Sekunden)
    {
        cout << Zeichen;
    }

    return 0;
}


Es soll da ja so eine sleep() Funktion geben oder eine Funktion die die Zeit seit dem Systemstart angibt und dann habe ich was über Ticks der CPU gelesen aber leider hat mir das noch nicht weitergeholfen (time.h? WinAPI?). Kann mir da jemand weiterhelfen?
"Der Wald wäre sehr leise, wenn nur die begabtesten Vögel singen würden."

2

09.02.2009, 20:36

ich kenn nur timeGetTime(), die liefert die zeit in milisekunden seit systemstart. mit windows.h hast du die auf jeden fall drinnen, glaub ich.

3

09.02.2009, 20:38

Oder GetTickCount. Gibt ein DWORD (millisekunden) zurück.
In Windows.h definiert.
fka tm

4

10.02.2009, 01:34

Hier mein erster Versuch ein bewegtes Zeichen darzustellen :?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <windows.h>

using namespace std;

int main ()
{
    const int iHeight = 20;
    const int iWidth = 50;
    unsigned char aScreen[iHeight][iWidth];
    for(int i=0; i<iHeight; i++)
    {
        for(int j=0; j<iWidth; j++)
        {
            aScreen[i][j] = 0;
        }
    }

    for(int i=0; i<iHeight; i++)
    {

        aScreen[i][0] = 176;
        DWORD Zeit = GetTickCount()+100;
        while(GetTickCount() <= Zeit){}
        system("cls");

        for(int j=0; j<iHeight; j++)
        {
            for(int k=0; k<iWidth; k++)
            {
                cout << aScreen[j][k];
            }
            cout << endl;
        }

        aScreen[i][0] = 0;
    }
    return 0;
}
"Der Wald wäre sehr leise, wenn nur die begabtesten Vögel singen würden."

5

10.02.2009, 11:30

Die Konsole ist auch wirklich nicht dafür gedacht, grafisch anspruchsvolles zu machen. Bissle rumspielen mag ok sein, aber sich darüber ärgern, dass man es nicht so richtig toll hinbekommt, sollte man nicht, sondern eben lieber z.B. zu Ogl oder DX wechseln.
Lieber dumm fragen, als dumm bleiben!

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

6

10.02.2009, 11:54

Ich find die Idee lustig, keep on in :D
Btw: In Matrix sind es (gespiegelte) japanische Katakana. Hier schonmal in Unicode, aber ich glaube fuer die windows-konsole musst du mit ner anderen Codepage arbeiten..

ァァアアィィイイゥゥウウェェエエォォオオカカガガキキギギククググケケゲゲココゴゴササザザシシジジススズズセセゼゼソソゾゾタタダダチチヂヂッッツツヅヅテテデデトトドドナナニニヌヌネネノノハハババパパヒヒビビピピフフブブププヘヘベベペペホホボボポポママミミムムメメモモャャヤヤュュユユョョヨヨララリリルルレレロロヮヮワワヰヰヱヱヲヲンンヴヴヵヵヶヶ
"Have you tried turning it off and on again?"

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

10.02.2009, 13:01

Sowas gabs im c-plusplus forum mal. Dann haben ein paar andere auch noch ihre Versionen vorgestellt..

http://www.c-plusplus.de/forum/index.php

Musst halt suchen, habe im Moment nicht so viel Zeit, um mich mit der Forensuche dort rumzuschlagen. ;)

8

11.02.2009, 13:33

Danke an Chase für die Zeichen und danke drakon für den Hinweis mit dem Forum. Meintest du diesen Link http://www.c-plusplus.de/forum/viewtopic…-is-224717.html? Hier etwas was bei meinen bisherigen Versuchen rausgekommen ist.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <windows.h>

using namespace std;

struct Feld
{
    unsigned int Zaehler;
    unsigned char Zeichen;
};

int main ()
{
    system("color 0A");
    Feld aScreen[20][50];
    for(int i=0; i<20; i++)
    {
        for(int j=0; j<50; j++)
        {
            aScreen[i][j].Zeichen = ' ';
        }
    }

    for(int i=0; i<20; i++)
    {
        for(int j=0; j<50; j++)
        {
            if(i==0)
            {
                int Zufall = rand()%50;
                aScreen[i][Zufall].Zeichen = 'X';
                aScreen[i][Zufall].Zaehler = 5;
            }
            else if(aScreen[i-1][j].Zaehler <= 5 && aScreen[i-1][j].Zaehler > 0)
            {
                aScreen[i][j].Zeichen = 'X';
                aScreen[i][j].Zaehler = aScreen[i-1][j].Zaehler -1;
            }
            else if(aScreen[i-1][j].Zaehler == 0)
            {
                int Zufall = rand()%50;
                aScreen[i][Zufall].Zeichen = 'X';
                aScreen[i][Zufall].Zaehler = 5;
            }
        }
    }

    for(int i=0; i<20; i++)
    {
        for(int j=0; j<50; j++)
        {

            cout << aScreen[i][j].Zeichen;
            
        }
        cout << endl;
        DWORD Zeit = GetTickCount()/1000;
        while(GetTickCount()/1000<=Zeit) {}
    }

    return 0;
}
Folgenden Artikel werde ich mir gleich mal antun... :shock: http://www.c-plusplus.de/forum/viewtopic…-is-161855.html
"Der Wald wäre sehr leise, wenn nur die begabtesten Vögel singen würden."

9

11.02.2009, 17:17

Wie kann ich denn ein Unicodezeichen einer bestimmten Schriftart in der Konsole ausgeben lassen?
"Der Wald wäre sehr leise, wenn nur die begabtesten Vögel singen würden."

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

10

11.02.2009, 18:33

Ne, das war es nicht.. Ich werde nachher mal danach suchen.. War wirklich unter irgendwie "Matrix Effekt", oder so..

Werbeanzeige