Results 1 to 4 of 4

Thread: Which Key?

  1. #1

    Thread Starter
    Addicted Member Ramandeep's Avatar
    Join Date
    Feb 2000
    Posts
    158

    Question Which Key?

    Hi, How can I find out which key the user pressed?

    I'm writing the game SNAKE in C++ as one of my first games in C++ and need to know how I can get the key pressed by the user.

    Thanks In Advance!!!

  2. #2
    Monday Morning Lunatic parksie's Avatar
    Join Date
    Mar 2000
    Location
    Mashin' on the motorway
    Posts
    8,169
    Windows or Console?
    I refuse to tie my hands behind my back and hear somebody say "Bend Over, Boy, Because You Have It Coming To You".
    -- Linus Torvalds

  3. #3
    Frenzied Member Vlatko's Avatar
    Join Date
    Aug 2000
    Location
    Skopje, Macedonia
    Posts
    1,409
    If you are making a CONSOLE APP you can use the getch function. It returns the character read.


    Code:
    Example 
    
    /* GETCH.C: This program reads characters from
     * the keyboard until it receives a 'Y' or 'y'.
     */
    
    #include <conio.h>
    #include <ctype.h>
    
    void main( void )
    {
       int ch;
    
       _cputs( "Type 'Y' when finished typing keys: " );
       do
       {
          ch = _getch();
          ch = toupper( ch );
       } while( ch != 'Y' );
    
       _putch( ch );
       _putch( '\r' );    /* Carriage return */
       _putch( '\n' );    /* Line feed       */
    }
    
    
    Output
    
    Type 'Y' when finished typing keys: Y

    You can also use the GetAsyncKeyState API in a windows app
    GetAsyncKeyState
    The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.

    SHORT GetAsyncKeyState(
    int vKey // virtual-key code
    );

    Parameters
    vKey
    Specifies one of 256 possible virtual-key codes. For more information, see Virtual-Key Codes.
    Windows NT: You can use left- and right-distinguishing constants to specify certain keys. See the Remarks section for further information.

    Return Values
    If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. The return value is zero if a window in another thread or process currently has the keyboard focus.

    Windows 95: Windows 95 does not support the left- and right-distinguishing constants. If you call GetAsyncKeyState with these constants, the return value is zero.

    Remarks
    The GetAsyncKeyState function works with mouse buttons. However, it checks on the state of the physical mouse buttons, not on the logical mouse buttons that the physical buttons are mapped to. For example, the call GetAsyncKeyState(VK_LBUTTON) always returns the state of the left physical mouse button, regardless of whether it is mapped to the left or right logical mouse button. You can determine the system's current mapping of physical mouse buttons to logical mouse buttons by calling

    GetSystemMetrics(SM_SWAPBUTTON)

    which returns TRUE if the mouse buttons have been swapped.

    You can use the virtual-key code constants VK_SHIFT, VK_CONTROL, and VK_MENU as values for the vKey parameter. This gives the state of the shift, ctrl, or alt keys without distinguishing between left and right.

    Windows NT: You can use the following virtual-key code constants as values for vKey to distinguish between the left and right instances of those keys.

    Code Meaning
    VK_LSHIFT VK_RSHIFT
    VK_LCONTROL VK_RCONTROL
    VK_LMENU VK_RMENU


    These left- and right-distinguishing constants are only available when you call the GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, and MapVirtualKey functions.

    Windows CE: The GetAsyncKeyState function supports the left and right virtual key constants, so you can determine whether the left key or the right key was pressed. These constants are VK_LCONTROL, VK_RCONTROL, VK_LMENU, VK_RMENU, VK_LSHIFT, and VK_RSHIFT.

    The least significant bit of the return value is not valid in Windows CE, and should be ignored.

    GetAsyncKeyState will return the current key state even if a window in another thread or process currently has the keyboard focus.

    You can also use the VK_LBUTTON virtual-key code constant to determine the state of the stylus tip, (up/down), on the touch-screen.
    I am become death, the destroyer of worlds.
    mail:[email protected]

    • Visual Basic 6.0 & .NET
    • Visual C++ 6.0 & .NET
    • ASP
    • LISP
    • PROLOG
    • C
    • Pascal

  4. #4

    Thread Starter
    Addicted Member Ramandeep's Avatar
    Join Date
    Feb 2000
    Posts
    158
    Console at this stage, as I've just recently started C++. I just need to be able to find out if one of the arrow keys are pressed in order to turn the snake into the appropriate direction.

    Thanks!!!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width