c++ Funktion abspielen sobald eine taste gedrückt worden ist.



  • Hallo, ich bräuche etwas hilfe, bezüglich eines Problems.
    Ich bin dabei ein Programm zu entwickeln, welches bei tastendruck eine Funktion abspielt, mein Problem ist aber, dass meine Funktion nur solange arbeitet, solange ich die Taste gedrückt halte, kann mir da jemand helfen?

    Fazit: Ich möchte ein Programm, dass sobald eine taste gedrückt wurde, eine funktion bis zum ende abspielt. 🙂



  • Was genau soll "bis zum Ende abspielen" heißen? Wie machst du das überhaupt mit den Tasten, Standard C++ bietet keine Möglichkeit irgendwie auf Tastendrücke zu reagieren. Das Konzept einer "Taste" existiert in Standard C++ eigentlich gar nicht...



  • Wahrscheinlich mit getch() ... und was heißt Funktion abbrechen? So wie du es beschreibst, kann das nur ein Thread o.ä. sein weil man eine Funtion nicht von Außen einfach beenden kann (ohne den eigenen Prozess/Thread zu killen).



  • getch() hat aber nix mit Tastendrücken zu tun...



  • Also, ich benutze die library allegro, um missverständnisse beiseite zu legen, ausserdem gibt es das konzept einer Taste in c++ undzwar getch() damit kann man tastendrücke abfangen und mit einer variable z.B char dann bearbeiten.

    Hier ist ein kleiner code ausschnitt:

    bool SpaceShip::ShipShoot(){
    
    	while(al_key_down(&kbs, ALLEGRO_KEY_SPACE)){
    
    		return true;
    	}
    
    	return false;
    }
    
    void SpaceShip::MoveRocket(){
    
    	al_draw_bitmap(Rocket, rocketx, rockety, 0);
    
    	if(ShipShoot() == true){
    
    		al_draw_bitmap(Rocket, rocketx, rockety, 0);
    
    		--rockety;
    
    		al_rest(0.001);
    
    	if(rockety < 0 ){
    
    		SetRocketNill();
    	}
    
    	}
    }
    


  • Fawkes1234 schrieb:

    [...] ausserdem gibt es das konzept einer Taste in c++ undzwar getch() damit kann man tastendrücke abfangen und mit einer variable z.B char dann bearbeiten.

    Nein, getch() liest ein Zeichen von einem Stream, mit Tasten hat das rein konzeptuell überhaupt gar nichts zu tun. Die Zeichen können auch aus einer Datei, einer Telefonleitung, von einem Satelliten oder von sonstwo kommen. Was getch() angeht, müsste der Computer auf dem das Programm läuft nichtmal eine Tastatur haben...

    Was genau ist nun dein Problem? Überleg dir nochmal genau was dein Code da oben tut. Hinweis: Dein Problem ist wohl, dass du die Schleife am falschen Ort hast.



  • Fawkes1234 schrieb:

    Also, ich benutze die library allegro, um missverständnisse beiseite zu legen, ausserdem gibt es das konzept einer Taste in c++ undzwar getch() damit kann man tastendrücke abfangen und mit einer variable z.B char dann bearbeiten.

    Geez....

    Du benutzt im Code kein getch() , sondern die Plattformabhängige Lösung von Allegro. Außerdem empfehle ich dir zu SFML zu wechseln... Allegro ist der letzte Scheiß für ordentliche C++-Programmierer wie dich!

    LOLOLOL. Wenn du etwas zurückgibst, wird die Funktion beendet. Du willst da also kein while sondern if - oder gleich den ternären ?: Operator.

    Und jede Funktion die du aufrust, wird auch immer beendet wann sie das will. (Ausnahmen s.o.)



  • Hacker schrieb:

    Fawkes1234 schrieb:

    Also, ich benutze die library allegro, um missverständnisse beiseite zu legen, ausserdem gibt es das konzept einer Taste in c++ undzwar getch() damit kann man tastendrücke abfangen und mit einer variable z.B char dann bearbeiten.

    Geez....

    Du benutzt im Code kein getch() , sondern die Plattformabhängige Lösung von Allegro. Außerdem empfehle ich dir zu SFML zu wechseln... Allegro ist der letzte Scheiß für ordentliche C++-Programmierer wie dich!

    LOLOLOL. Wenn du etwas zurückgibst, wird die Funktion beendet. Du willst da also kein while sondern if - oder gleich den ternären ?: Operator.

    Und jede Funktion die du aufrust, wird auch immer beendet wann sie das will. (Ausnahmen s.o.)

    Danke schonmal dass du dir die Zeit genommen hast, dennoch finde ich es nicht gut, wenn jemand sagt Allegro sei der letzte Scheiss, weil ich mit der Library gut erfahrungen mache und dass hier die erste ist bei der ich Probleme habe.
    Ich werde mir die Library sfml mal anschauen 🙂



  • Bei Hacker brauchste dich nicht bedanken, der gibt immer nur blöde Kommentare ab. Seit ich hier registriert bin kann ich mich an keinen einzigen sinnvollen Post von ihm erinnern.



  • Kellerautomat schrieb:

    Bei Hacker brauchste dich nicht bedanken, der gibt immer nur blöde Kommentare ab. Seit ich hier registriert bin kann ich mich an keinen einzigen sinnvollen Post von ihm erinnern.

    Und das ist mir scheißegal 😉

    Fawkes1234 schrieb:

    Hacker schrieb:

    Fawkes1234 schrieb:

    Also, ich benutze die library allegro, um missverständnisse beiseite zu legen, ausserdem gibt es das konzept einer Taste in c++ undzwar getch() damit kann man tastendrücke abfangen und mit einer variable z.B char dann bearbeiten.

    Geez....

    Du benutzt im Code kein getch() , sondern die Plattformabhängige Lösung von Allegro. Außerdem empfehle ich dir zu SFML zu wechseln... Allegro ist der letzte Scheiß für ordentliche C++-Programmierer wie dich!

    LOLOLOL. Wenn du etwas zurückgibst, wird die Funktion beendet. Du willst da also kein while sondern if - oder gleich den ternären ?: Operator.

    Und jede Funktion die du aufrust, wird auch immer beendet wann sie das will. (Ausnahmen s.o.)

    Danke schonmal dass du dir die Zeit genommen hast, dennoch finde ich es nicht gut, wenn jemand sagt Allegro sei der letzte Scheiss, weil ich mit der Library gut erfahrungen mache und dass hier die erste ist bei der ich Probleme habe.
    Ich werde mir die Library sfml mal anschauen 🙂

    Es gab schon einen Thread darüber. Glaub mir, ich habe schon mit Allegro gearbeitet, das ist nichts gegen SFML. Allegro ist in C für C, SFML in C++ (natürlich auch) für C++ Programmiert.



  • Kellerautomat schrieb:

    Bei Hacker brauchste dich nicht bedanken, der gibt immer nur blöde Kommentare ab. Seit ich hier registriert bin kann ich mich an keinen einzigen sinnvollen Post von ihm erinnern.

    Das SFML leichter handzuhaben ist stimmt IMHO aber. Hab mit beiden was versucht und Allegro hat mir weniger gefallen.



  • Hacker schrieb:

    Und das ist mir scheißegal 😉

    Mir und den anderen Usern aber nicht. Entweder du schreibst was sinnvolles, oder du lässt es bleiben. Wir empfinden dich als unglaublich nervig, weil du so gut wie immer failst und/oder deine Ratschläge nicht passend sind.



  • Kellerautomat schrieb:

    Hacker schrieb:

    Und das ist mir scheißegal 😉

    Mir und den anderen Usern aber nicht. Entweder du schreibst was sinnvolles, oder du lässt es bleiben. Wir empfinden dich als unglaublich nervig, weil du so gut wie immer failst und/oder deine Ratschläge nicht passend sind.

    Gut, ich schreibe ab sofort nützliches Zeug. Das unser TE von Allegro auf SFML umsteigen muss ist aber dringend nötig 😉



  • Hacker schrieb:

    Kellerautomat schrieb:

    Hacker schrieb:

    Und das ist mir scheißegal 😉

    Mir und den anderen Usern aber nicht. Entweder du schreibst was sinnvolles, oder du lässt es bleiben. Wir empfinden dich als unglaublich nervig, weil du so gut wie immer failst und/oder deine Ratschläge nicht passend sind.

    Gut, ich schreibe ab sofort nützliches Zeug. Das unser TE von Allegro auf SFML umsteigen muss ist aber dringend nötig 😉

    Ich muss mich Kellerautomat bedingungslos anschließen. Im C++-Subforum bin ich i.d.R. nur stiller Mitleser, aber seit Du aktiv bist, leidet die Qualität. Du hast hunderte Threads zerstört und imho ist eine längere Auszeit überfällig. Da ist mir Pi hundertmal lieber. Wenn er mal etwas sinnvolles sagt, stimmt es immerhin meistens.



  • Das geht mir genauso. Ich lese hier auch häufig nur mit und seitdem Hacker hier aufgetaucht ist nervt er gewaltig. Ich melde mich nur, wenn ich mir in einem Thema auch sehr sicher bin. Ich bitte Hacker das auch so handzuhaben und sich vor jedem Beitrag erst einmal genauer zu informieren, das würde die Qualität wieder merklich steigern.



  • Da kann ich mich nur anschliessen. In letzter Zeit kommt es leider häufig vor, dass statt einer Antwort auf den Fragesteller eine langwierige Diskussion darüber entsteht, warum Hackers Antwort falsch ist.

    Es ist gut, wenn man sich aktiv an der Community beteiligt, aber bei dir (Hacker) hat man manchmal das Gefühl, du schreibst nur, um etwas geschrieben zu haben. Ich fände es gut, wenn du dich bei Unsicherheiten etwas zurückhalten würdest, damit würden deine Antworten auch qualitativ höher und man nähme dich ernster. Ausserdem kannst du selbst dazulernen, indem du die Antworten anderer abwartest.

    Zudem brauchst du nicht dauernd auf irgendwelchen Spam eines Unregistrierten einzusteigen. Konzentriere dich doch für eine Weile auf nur C++-bezogene Posts 🙂

    Vielen Dank.


  • Mod

    Nexus schrieb:

    Da kann ich mich nur anschliessen. In letzter Zeit kommt es leider häufig vor, dass statt einer Antwort auf den Fragesteller eine langwierige Diskussion darüber entsteht, warum Hackers Antwort falsch ist.

    Es ist gut, wenn man sich aktiv an der Community beteiligt, aber bei dir (Hacker) hat man manchmal das Gefühl, du schreibst nur, um etwas geschrieben zu haben. Ich fände es gut, wenn du dich bei Unsicherheiten etwas zurückhalten würdest, damit würden deine Antworten auch qualitativ höher und man nähme dich ernster. Ausserdem kannst du selbst dazulernen, indem du die Antworten anderer abwartest.

    Zudem brauchst du nicht dauernd auf irgendwelchen Spam eines Unregistrierten einzusteigen. Konzentriere dich doch für eine Weile auf nur C++-bezogene Posts 🙂

    Vielen Dank.

    Aber wenn er das so macht, dann wird die kleine Zahl unter dem Namen, welche die Penislänge anzeigt, nicht so schnell größer.



  • Da hier gerade PI genannt wurde, was ist eigentlich mit dem? Fehlt imho schon ein bischen in diesem Subforum.



  • Ich schätze mal ihm ging es auf den Sack, dass volkard andauernd seine Posts gelöscht hat. Sowas sollte man vielleicht auch mal bei Hacker in Betracht ziehen..



  • Hat der sich nicht vor kurzer Zeit beschwert, dass er gebannt wurde?
    Ich vermiss PI nicht. Selbst wenn er oft recht hatte, warn seine Beitrage schlussendlich genauso nutzlos wie die von Hacker. Sag ich mal so als meist schweigender Mitleser.
    Irgendwie will Hacker immer helfen, kann's aber nicht und pi konnte helfen, wollte aber nicht, sondern lieber klugscheißen... ^^


Anmelden zum Antworten