'how to delete press and hold arrow keys. C#

I developing game and use arrow button for move character but I don’t want to user press and hold keyboard(arrow button) when play my game. how to detect it? Needs details or clarity

My Code: KeyDown is image JumpFrog

private void Game_KeyUp(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            case Keys.Left:
                goLeft = false;
                player.Image = Properties.Resources.frogL;
                
                break;
            case Keys.Right:
                goRight = false;
                player.Image = Properties.Resources.frogR;
                
                break;
            case Keys.Up:
                goUp = false;
                player.Image = Properties.Resources.frog1;
                
                break;
            case Keys.Down:
                goDown = false;
                player.Image = Properties.Resources.frog1D;
                break;
        }
        
        
    }

KeyUp is image frog don't jump.

private void Game_KeyUp(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            case Keys.Left:
                goLeft = false;
                player.Image = Properties.Resources.frogL;
                
                break;
            case Keys.Right:
                goRight = false;
                player.Image = Properties.Resources.frogR;
                
                break;
            case Keys.Up:
                goUp = false;
                player.Image = Properties.Resources.frog1;
                
                break;
            case Keys.Down:
                goDown = false;
                player.Image = Properties.Resources.frog1D;
                break;
        }
       
    }
    private int speed = 25;
    private void MoveFrog()
    { 
        if(goLeft == true && player.Left > 25)
        {
            player.Left -= speed;
           

        }
        if(goRight == true && player.Left < 370)
        {
            player.Left += speed;
            

        }
        if(goUp == true && player.Top > 10)
        {
            player.Top -= speed;
           
        }
        if (goDown == true && player.Top < 395)
        {
            player.Top += speed;
           
        }
    }

I pressed the up arrow key without releasing it, causing my frog to keep moving forward. And the sound of the jump was not over.how can i solve it I want to hold down and the frog doesn't go on and on. Needs details or clarity



Solution 1:[1]

Have you considered python's logging? Here is the documentation

you can create a logger instance that saves to all messages to file. Then you can use it everywhere in your code and log anything you'd like with different logging levels.

Here is how I create and use the logger:

# Method to create an instance of a logger

import logging

def set_logger(context, file_name, verbose=False):
    logger = logging.getLogger(context)
    logger.setLevel(logging.DEBUG if verbose else logging.INFO)
    formatter = logging.Formatter(
        '[%(asctime)s][%(levelname)s]:' + context + ':[%(filename).30s:%(funcName).30s:%(lineno)3d]:%(message)s',
        datefmt='%Y-%m-%d %H:%M:%S\x1b[0m')
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.DEBUG if verbose else logging.INFO)
    console_handler.setFormatter(formatter)
    logger.handlers = []
    logger.addHandler(console_handler)
    file_handler = logging.FileHandler($path_to_save_logger + file_name)
    file_handler.setLevel(logging.DEBUG if verbose else logging.INFO)
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)
    return logger

then create the instance and use it.


from termcolor import colored

my_logger = set_logger(colored('GENERAL', 'yellow'), "/tmp/my_logger.txt", verbose=True)
my_logger.info("this is an info message")
my_logger.debug("this is a debug message")

.....

EDIT: assuming you're using polling2.poll() You can add a logger into you poll() call - documentation

import logging

poll(lambda: getSomething(),
 timeout=100,
 step=1,
 check_success=IsPollingSuccessful,
 log=logging.DEBUG)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1