2016-05-13 23 views
0

Hier ist das Problem: Ich mache eine Snake-Version auf Code :: Blocks (C-Programmierung) für ein Schulprojekt, und ich steckte in dem Versuch, simultane Aktionen in einem einzigen Code auszuführen. Lange Rede, kurzer Sinn, ich würde gerne einen Song ("viele aufeinanderfolgende Beeps") spielen, während der Benutzer seine Option auf einem Give-Menü auswählt. Problem ist, dass das Programm warten muss, bis das Lied beendet ist, bevor es die gegebene Variable scannen kann, genau wie im folgenden Code.Verwenden Sie eine "Beep-Funktion" parallel zu anderen Befehlen?

int main() 
{ 
    song(); 

    scanf(" %c",&option); 

    printf("%c", option); 

    return 0; 
} 

Jeder Vorschlag wäre mehr als willkommen. Vielen Dank.

+0

Eine offensichtliche Option ist die Verwendung eines separaten Prozesses oder Threads, um den Song abzuspielen. – kaylum

+0

Threads sind sehr Betriebssystem-spezifisch, daher können wir nicht antworten, ohne zu wissen, welches Betriebssystem Sie verwenden. Es wäre auch schön zu wissen, welche Bibliotheken Sie für Dinge wie 'song()' verwenden. –

Antwort

-1

Ich empfehle Ihnen verschiedene Threads für beide Prozesse, die Sie gleichzeitig haben möchten.

Werfen Sie einen Blick auf this Frage zu Themen und Gabeln.

this helps :)

EDIT:

Wie @Barmar bemerkt einen genaueren Blick auf den ersten Link nehmen in Bezug auf threads (mehr nützlich für Ihre Frage), wo Sie laufen müssen eine für jede Aufgabe, die Sie gleichzeitig möchten (das ist ein Piepton und eine Benutzereingabe).

Forks wäre nützlich, wenn Sie zum Beispiel Ihren Spielprozess duplizieren müssen, um mehrere Instanzen von ihnen zu haben. Angesichts der Frage, die Sie gestellt haben, Threads sind der Weg zu gehen.

+1

Fork erstellt Prozesse, keine Threads. Die Frage, die Sie verknüpft haben, besagt, dass Sie 'pthread_create()' verwenden soll, um Threads zu erstellen. – Barmar

+0

Ich bin mit mehreren Fragen verknüpft. Die anderen beiden geben mehr Bezug auf Gabeln. Der erste, wie gesagt, spricht von Threads. – DarkCygnus

+1

Aber er muss 'fork()' überhaupt nicht benutzen. Threads sollten für seine Bedürfnisse in Ordnung sein. – Barmar