Single keypress using C++ getche(), getch() or cin.get() and C getchar() all work fine if coded in the function main(). However, if they are coded in a user defined function then in addition to pressing a key, the return key has to be pressed.
Any ideas?
Tony
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Tony,
You must be doing something wrong. I cannot figure out what it might be, but I am currently developing a game, and I use getch() nearly all the time...
Give a little more info, preferably some code.
Yours sincerely,
Peter.
TDLGames Programmer.
Visit our website at http://www.tdlgames.com
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have been trying various things but still cannot get it to work. In fact getch() causes an implicit declaration error. I am using version 4 as version 5 seems to be in various stages of beta. The code below works correctly using Borland 4.52 I simply need to press the appropriate key, but I have to press the return key with Dev-CPP in both the functions main() and getKey().
Many thanks
Tony
#include<iostream.h>
#include<conio.h>
//function to get a single character
char getKey();
void main()
{//start of function main
char whichKey;
whichKey=getKey();
clrscr();
cout<<"The key pressed was "<<whichKey;
cout<<"\n\nPress any key... ";
cin.ignore();
whichKey=getche();
}//end of function main
/***************************************************\
The function getKey validates for values A, B, C, D
\***************************************************/
char getKey()
{//start of function getKey
char keyPressed;
clrscr();
do
{//start of do loop
cout<<"Press a key between A..D ";
keyPressed=getche();
if(keyPressed>'D')
keyPressed-=32;
}while(keyPressed<'A'||keyPressed>'D');
//keep looping until a valid key is pressed
return keyPressed;
}//end of function getKey
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Tony,
I have tried to fix your problem.
I include the code at the bottom of this post. I made a few minimal changes to the code.
Also please note that both clrscr() and getch() are Borland specific functions, although GCC supports them.
I hope this helps you.
Yours sincerely,
Peter.
TDLGames Programmer.
Visit our website at http://www.tdlgames.com
[Code]
#include<iostream>
#include<conio.h>
using namespace std;
//function to get a single character
char getKey();
int main()
{//start of function main
char whichKey;
whichKey=getKey();
system("cls");
cout<<"The key pressed was "<<whichKey;
cout<<"\n\nPress any key... ";
// cin.ignore();
whichKey=getche();
}//end of function main
/***************************************************\
The function getKey validates for values A, B, C, D
\***************************************************/
char getKey()
{//start of function getKey
char keyPressed;
system("cls");
do
{//start of do loop
cout<<"Press a key between A..D ";
keyPressed=getche();
if(keyPressed>'D')
keyPressed-=32;
}while(keyPressed<'A'||keyPressed>'D');
//keep looping until a valid key is pressed
return keyPressed;
}//end of function getKey
[/Code]
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi guys! Thought I'd share a little recommendation with anyone who's into online casino entertainment. I use https://pacific-spin.ca and it's one of the options I keep around for my gaming sessions. I like having something familiar instead of searching for a different place every time. No big promises or complicated explanations from me. Just sharing something relevant with the group.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Single keypress using C++ getche(), getch() or cin.get() and C getchar() all work fine if coded in the function main(). However, if they are coded in a user defined function then in addition to pressing a key, the return key has to be pressed.
Any ideas?
Tony
Tony,
You must be doing something wrong. I cannot figure out what it might be, but I am currently developing a game, and I use getch() nearly all the time...
Give a little more info, preferably some code.
Yours sincerely,
Peter.
TDLGames Programmer.
Visit our website at
http://www.tdlgames.com
Peter
I have been trying various things but still cannot get it to work. In fact getch() causes an implicit declaration error. I am using version 4 as version 5 seems to be in various stages of beta. The code below works correctly using Borland 4.52 I simply need to press the appropriate key, but I have to press the return key with Dev-CPP in both the functions main() and getKey().
Many thanks
Tony
#include<iostream.h>
#include<conio.h>
//function to get a single character
char getKey();
void main()
{//start of function main
char whichKey;
whichKey=getKey();
clrscr();
cout<<"The key pressed was "<<whichKey;
cout<<"\n\nPress any key... ";
cin.ignore();
whichKey=getche();
}//end of function main
/***************************************************\
The function getKey validates for values A, B, C, D
\***************************************************/
char getKey()
{//start of function getKey
char keyPressed;
clrscr();
do
{//start of do loop
cout<<"Press a key between A..D ";
keyPressed=getche();
if(keyPressed>'D')
keyPressed-=32;
}while(keyPressed<'A'||keyPressed>'D');
//keep looping until a valid key is pressed
return keyPressed;
}//end of function getKey
Tony,
I have tried to fix your problem.
I include the code at the bottom of this post. I made a few minimal changes to the code.
Also please note that both clrscr() and getch() are Borland specific functions, although GCC supports them.
I hope this helps you.
Yours sincerely,
Peter.
TDLGames Programmer.
Visit our website at
http://www.tdlgames.com
[Code]
#include<iostream>
#include<conio.h>
using namespace std;
//function to get a single character
char getKey();
int main()
{//start of function main
char whichKey;
whichKey=getKey();
system("cls");
cout<<"The key pressed was "<<whichKey;
cout<<"\n\nPress any key... ";
// cin.ignore();
whichKey=getche();
}//end of function main
/***************************************************\
The function getKey validates for values A, B, C, D
\***************************************************/
char getKey()
{//start of function getKey
char keyPressed;
system("cls");
do
{//start of do loop
cout<<"Press a key between A..D ";
keyPressed=getche();
if(keyPressed>'D')
keyPressed-=32;
}while(keyPressed<'A'||keyPressed>'D');
//keep looping until a valid key is pressed
return keyPressed;
}//end of function getKey
[/Code]
Hi guys! Thought I'd share a little recommendation with anyone who's into online casino entertainment. I use https://pacific-spin.ca and it's one of the options I keep around for my gaming sessions. I like having something familiar instead of searching for a different place every time. No big promises or complicated explanations from me. Just sharing something relevant with the group.