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

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

21

11.04.2010, 19:36

kann man während die schleife läuft auf eine eingabe warten?

okay... kbhit kannte ich bis jetzt noch nicht. damit wirds wohl gehen. bin kein konsolenmensch^^

danke übrigens. das wird bei der nächsten konsolenanwendung sicher nützlich sein.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Viktor

Alter Hase

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

22

11.04.2010, 23:25

C-/C++-Quelltext

1
2
3
4
5
#include <iostream> 
#include <windows.h>
#include <conio.h>
#include "time.h"
using namespace std;


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
int main ()
{
    int BpmStart, BpmEnd, LengthInSeconds; // Usereingaben
    DWORD FirstBeep, LastBeep; // Programmvars

    cout << "Metronom" << endl;

    cout << "Bpm Start:" << endl;
    cin >> BpmStart;
    cout << "Bpm Ende:" << endl;
    cin >> BpmEnd;
    cout << "Spieldauer in Sekunden:" << endl;
    cin >> LengthInSeconds;

    Sleep(500);
    FirstBeep = GetTickCount();
    while(!_kbhit() && FirstBeep+LengthInSeconds*1000 >= GetTickCount())
    {
        LastBeep = GetTickCount();
        Beep(200,10);
        while(LastBeep + (60000 / (BpmStart+(static_cast<float>(GetTickCount()-FirstBeep)/1000)*static_cast<float>(BpmEnd-BpmStart)/LengthInSeconds)) > GetTickCount());
    }

    return 0;
}


und für ein einfaches Metronom:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main ()
{
    int Bpm; // Usereingaben
    DWORD FirstBeep, LastBeep; // Programmvars

    cout << "Metronom" << endl;

    cout << "Bpm:" << endl;
    cin >> Bpm;

    Sleep(500);
    FirstBeep = GetTickCount();
    while(!_kbhit())
    {
        LastBeep = GetTickCount();
        Beep(200,10);
        while(LastBeep + 60000/Bpm > GetTickCount());
    }

    return 0;
}


kleine übung nach c#-exkursion. dann hast du jetzt ja noch knapp 35 minuten, ums einzureichen.
hf

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

23

12.04.2010, 00:38

Mit boost::asio und deren deadline timern kann man das leicht threaded machen, ohne dass man sich großartig darum kümmern muss.

Viktor

Alter Hase

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

24

12.04.2010, 00:46

ich glaube es ging hier darum, ein möglichst einfaches programm ohne viel drum und dran zu erstellen. mal ganz ehrlich, aber mit threads sehe ich da schwarz, wenn da schon die anderen basics fehlen.

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

25

12.04.2010, 11:01

ich glaube es ging hier darum, ein möglichst einfaches programm ohne viel drum und dran zu erstellen. mal ganz ehrlich, aber mit threads sehe ich da schwarz, wenn da schon die anderen basics fehlen.

Das sehe ich genau so, wollte es nur mal als Beispiel für diejenigen einwerfen, die sich jetzt überlegen, wie man sowas mit Threads machen könnte.

Werbeanzeige