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

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

1

10.08.2007, 22:09

Sleep() unterbrechen `?

Hey ho ,

ALso es geht um folgendes Ich habe DIaloge mit "cout " und Sleep Nach diesem Schema :

Quellcode

1
2
3
cout <<"Sag was";
Sleep(1000);
cout <<"Was denn?";


Und nun möchte ich fragen ob es eine möglichkeit gibt das Sleep zu unterbrechen wenn eine Taste gedrückt wird . Das ganze sind viele Dialoge.
Sozusagen eine Skipp Funktion zum Nächsten DIalog .. Ist dies Möglich und wenn ja wie ?


MFG Toa

Phili

unregistriert

2

10.08.2007, 22:47

Nein, das ist so nicht möglich.
Könntest aber zum Beispiel

Quellcode

1
2
3
int Time=GetTickCount();
while(!GetAsyncKeyState(VK_SPACE)&&GetTickCount()-Time<1000)
     Sleep(10);

machen

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

3

10.08.2007, 23:01

Wie meinst du das mit dem Ticket COunt , warum misst du da nocheinmal die Zeit ? .. Gibt es keine Möglichkeit einen Dialog wie diesen :

Quellcode

1
2
3
4
5
6
7
8
cout <<"Hallo";
Sleep(600);
cout <<"Hay";
Sleep(700);
coutt <<"Wie gehts";
Sleep(800);

usw


So zu verändern das er zwar nacheinander durchläuft immer mit pausen zum lesen aber durch das Drücken von Leer zb einfach zum nächsten Text geskippt wird , sprich von Hallo zu Hay..

edit :

noch nicht ma das geht :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
while(!GetAsyncKeyState(VK_SPACE))
     {
cout <<"Hallo";
Sleep(600);
cout <<"Hay";
Sleep(700);
coutt <<"Wie gehts";
Sleep(800);
}
cout <<"SPace";

normaler weiße müsste er doch durch drücken der space taste das space ausgeben tun er aber nicht

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

4

10.08.2007, 23:16

Phili hat es doch schon angedeutet. Dasmusst du doch nur noch umsetzen[/cpp]

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

5

11.08.2007, 11:57

Okay jetzt hab ich nur noch eine Frage , es sind sehr viele Dialoge und ich kann doch nicht jedes einzelne cout in eine while schleife packen , habt ihr da eine Idee?

Sheddex

unregistriert

6

11.08.2007, 12:09

Falls du willst, dass sobald wenn eine beliebige Taste gedrückt wird der neue Text kommt, tut es auch _getch() aus conio.h.
Wenn es eine bestimmte Taste sein soll, musst du schon eine Schleife benutzen. Falls du das willst, solltest du dir eine Funktion schreiben, dazu sind sie ja da.

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

7

11.08.2007, 12:46

Ne ne ne , der text soll langsam durchlaufen imma mit sleep aber für die leute die schneller lesen soll diese skipp funktion eingeführt werden .. das wenn er schon fertig gelesen hat eine taste drücken kann und dann geskippt zum nächsten text wird und für die die keine Tasten drücken wollen einfach so der text durch läuft

8

11.08.2007, 12:46

schreib dir einfach ne Funktion:

C-/C++-Quelltext

1
2
3
4
5
6
void sleep_stepped(std::size_t time_to_sleep, std::size_t wake_up_time int key)
{
    int Time=GetTickCount();
    while (!GetAsyncKeyState(key) && GetTickCount()-Time < time_to_sleep)
        Sleep(wake_up_time); 
}
:D

C-/C++-Quelltext

1
2
std::cout << "Du Depp!" << std::endl;
sleep_stepped(600, 10, VK_SPACE);
Kannst ja sogar noch hingehen und auch das Ausgeben mit in die Funktion packen ...

Aja ob der Code geht weiß ich nicht ist halt nur Phili's in ne Funktion verpackt ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

9

11.08.2007, 13:03

Joa da bleibt aber wieder ein Problem übrig , jedes Cout hat seine eigene SleepZeit und wenn man das mit der funktion macht bleibt die Zeit ja immer gleich :/ d.h man kann das nicht richtig einstellen , hoffe du verstehst was ich meine

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

10

11.08.2007, 13:31

Dann übergb der Funktion die gewünschte Sleep-Zeit ?! :roll:

Werbeanzeige