Avatar billede nejmann Nybegynder
16. oktober 2002 - 08:56 Der er 5 kommentarer og
1 løsning

Vente på tastetryk

Godmorgen!

Jeg står overfor et lille problem, nemlig at jeg skal lave et program således, at når jeg trykker på en bestemt knap, skal der ske en ting, trykker jeg på en anden skal der ske noget andet og så fremdeles... uden at programmet skal stå og vente nogle steder!

Her er hvad mit eget bud var:

if(kbhit())
        if (getch() == '\x77')
        {
            return true;
        }

    else
        return false;

problemet er bare at når programmet kører, og man ikke lige trykker på det tidspunkt hvor man kommer til ovenstående funktion, så sker der ikke noget :(

Håber I kan se mit problem

På forhånd tak

/Nejmann
Avatar billede kamikaze Nybegynder
16. oktober 2002 - 09:22 #1
Er ikke helt sikker på at jeg forstår problemet. Men hvad med:

#include <iostream.h>
#include <conio.h>

char WaitKey()
{
    while (!kbhit());
    return getch();
}

int main()
{
    char key = 0;
    while(key != 'a' && key != 'b' && key != 'c')
    {
        key = WaitKey();
    }
    switch(key)
    {
    case 'a':
        cout << "Du trykkede a" << endl;
        break;
    case 'b':
        cout << "Du trykkede b" << endl;
        break;
    case 'c':
        cout << "Du trykkede c" << endl;
        break;
    }
    return 0;
}
Avatar billede kamikaze Nybegynder
16. oktober 2002 - 09:22 #2
Ovenstående venter på tastetryk, indtil enten a, b eller c er trykket. Er det ikke det du ønsker?
Avatar billede kamikaze Nybegynder
16. oktober 2002 - 09:24 #3
Sorry, du skrev: "uden at programmet skal stå og vente nogle steder!". Mit bud står netop og venter. ARGH!
Avatar billede nejmann Nybegynder
16. oktober 2002 - 09:35 #4
Jeg siger tak, der gik da lige et lys op for mig! Kom lige i tanke om at jeg skal arbejde med flere tråde, så svaret er godtaget, selvom jeg lige var gået igang med switchen selv.

Endnu engang tak!
Avatar billede nejmann Nybegynder
16. oktober 2002 - 09:40 #5
Men du er da velkommen til at komme med et bud, hvor programmet ikke står og venter nogle steder... det skal sikkert klares via software interrupt oder was?!?
Avatar billede kamikaze Nybegynder
16. oktober 2002 - 12:12 #6
Tak for points :o)

Hmmm...Du kan selvfølgelig (som du selv er inde på) lave en tråd der hele tiden tjekker tastetryk. Det er nok mit bedste bud.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester