Druk op spatie om verder te gaan, HOE?!??

Status
Niet open voor verdere reacties.

TheJjokerR

Gebruiker
Lid geworden
25 apr 2008
Berichten
104
Hey allemaal,

Weet iemand hoe ik kan zorgen dat in plaats van:
Code:
getchar();
ik een specifieke toets kan toewijzen dus bijv 'Spatie' of 'Shift' of (de letter) 'J'?

Is het ook mogelijk om er dan meer te vragen bijv 'Control' + 'V'(is wel handig omdat als je in command prompt Control + V doet dan komt er
Code:
^V
te staan :shocked: .

thnx
:thumb:
 
while ( getchar() != ' ' )
;

Deze code zal wachten op een spatie om verder te gaan... Let wel op dit is zeer slechte code! Vermits je wacht in een while loop wat EN cpu vreet EN zorgt dat het programma "stil" blijft staan. Het is beter om met threads te werken ( een daemon om precies te zijn ). Maar ik weet niet of je daar bekend mee bent? Control combinaties zijn ook mogelijk, normaal gezien makelijk te vinden op google hoe. Ik heb hier nog ergens een project staan waarin ik heb uitgewerkt. Moest ik het vinden dan zal ik het posten.
 
Het werkt niet...
als ik in mijn programma op spatie druk komt er alleen maar een spatie te staan :(
 
Het werkt niet...
als ik in mijn programma op spatie druk komt er alleen maar een spatie te staan :(

Geef eens wat code? Ik gok erop dat het komt omdat getchar() buffered input wil hebben
<spatie><enter> zal wel lukken? Onder windows kunt ge getche( ) of onderstaande methode gebruiken. Onder linux is er ook een unbuffered getchar() in de posix library en onderstaande link.

een andere mogelijkheid voor windows:
Code:
#include <conio.h>
bool go = true;

while(go) {
    while(!kbhit()) {
        Sleep(1);    // zodat er geen cpu-cycles worden verkwist
    }
    if(getchar() == ' ')
        go = false; 
}

onder linux is deze functie niet beschikbaar. Maar je kan hem wel implementeren als beschreven op http://www.linux-sxs.org/programming/kbhit.html
 
Hier heb je wat van het script, ik heb het bovenstaande geprobeerd maar dan moet je spatie invoeren en dan op enter drukken, dat is niet mijn bedoeling, ik wil alleen op spatie drukken zodat ik dan verder ga.
Code:
#include <conio.h>
#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
/************Layout************/
 SetConsoleTitle("Title"); 
/************Intro************/
 cout << "The search for <title>" <<endl;
 cout << "=============================================================================" <<endl;
 cout << "                           [Press SPACEBAR to continue]" <<endl;
 getchar();/*Hier wil ik die code inplaats van getchar();*/
 system("cls");
/************Story************/ 
 cout << " STORY:\n One gamer..." <<endl;
 cout << "Press M to go to the Main Menu" <<endl;
 getchar();/*En hier ook*/
};

:thumb:
 
je kan waarschijnlijk ook gebruik maken van getline door de eindparameter in te stellen op het teken dat jij wil. Alhoewel ik vermoed dat getline ook buffered werkt..
Is getch() uit conio.h niet unbuffered ?

EDIT: als je onder DOS-command werkt kan de functie kbhit() mss werken ?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan