<MyRusakov.ru />

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.

Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Обработка нажатия клавиш в C# и WindowsForms на примере синтезатора

Обработка нажатия клавиш в C# и WindowsForms на примере синтезатора

В одной из предыдущих статей мы рассмотрели как создать простейший синтезатор на WindowsForms. На данный момент нажатие по клавишам синтезатора возможно при помощи клика мыши. В сегодняшней статье мы рассмотрим как использовать для этой цели ввод с клавиатуры в C# и WindowsForms.

Наша цель- это использование клавиш клавиатуры для нажатия по кнопкам синтезатора, а также отображение состояния нажатой клавиши.

Ниже приведен полный код.



using System.Media;


namespace WinFormsApp_Piano
{
    public partial class Form1 : Form
    {


        private SoundPlayer _soundPlayer;


        public Form1()
        {
            InitializeComponent();

            // Включаем предварительное прослушивание клавиш формы
            KeyPreview = true;
        }


        # метод для обработки ввода клавиатуры
        private void MainForm_KeyDown(object sender, KeyEventArgs e)
        {
            Button buttonToClick = null;

            switch (e.KeyCode)
            {
                case Keys.Q:
                    buttonToClick = button1;
                    break;
                case Keys.W:
                    buttonToClick = button2;
                    break;
                case Keys.E:
                    buttonToClick = button3;
                    break;
                case Keys.A:
                    buttonToClick = button4;
                    break;
                case Keys.S:
                    buttonToClick = button5;
                    break;
                case Keys.D:
                    buttonToClick = button6;
                    break;
                case Keys.Z:
                    buttonToClick = button7;
                    break;
                case Keys.X:
                    buttonToClick = button8;
                    break;

                }

                 if (buttonToClick != null)
                 {
                    HighlightButton(buttonToClick);
                    buttonToClick.PerformClick();
                    }

            }

         # метод для изменения состояния клавиши
          private void HighlightButton(Button button)
        {
            // Временно меняем цвет фона кнопки
            button.BackColor = SystemColors.GrayText;

            // Создаем обработчики событий GotFocus и LostFocus для кнопки
            button.GotFocus += Button_GotFocus;
            button.LostFocus += Button_LostFocus;

            // Принудительно вызываем событие GotFocus для кнопки
            button.Focus();
        }

        # метод отслеживающий активность клавиши
        private void Button_GotFocus(object sender, EventArgs e)
        {
            // Восстанавливаем исходный цвет фона кнопки при фокусировке
            Button button = (Button)sender;
            button.BackColor = SystemColors.Control;
        }


        private void Button_LostFocus(object sender, EventArgs e)
        {
            // Восстанавливаем исходный цвет фона кнопки при потере фокуса
            Button button = (Button)sender;
            button.BackColor = SystemColors.Control;
            button.GotFocus -= Button_GotFocus;
            button.LostFocus -= Button_LostFocus;
        }


        private void PlaySound(string soundFilePath)
        {
            _soundPlayer = new SoundPlayer(soundFilePath);
            _soundPlayer.Play();
        }


        private void button1_Click_1(object sender, EventArgs e)
        {

            PlaySound(Полный путь к файлу\\zvuk-notyi-do.wav");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            PlaySound("Полный путь к файлу\\zvuk-notyi-sol.wav");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            PlaySound("Полный путь к файлу\\zvuk-notyi-lya.wav");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            PlaySound("Полный путь к файлу\\zvuk-notyi-mi.wav");
        }

        private void button5_Click(object sender, EventArgs e)
        {
            PlaySound("Полный путь к файлу\\zvuk-notyi-si.wav");
        }

        private void button6_Click(object sender, EventArgs e)
        {
            PlaySound("Полный путь к файлу\\zvuk-notyi-re.wav");
        }

        private void button7_Click(object sender, EventArgs e)
        {
            PlaySound("Полный путь к файлу\\zvuk-notyi-fa.wav");
        }

        private void button8_Click(object sender, EventArgs e)
        {
            PlaySound("Полный путь к файлу\\zvuk-notyi-do-vo-vtoro-oktave.wav");
        }
    }

}

Таким образом, при нажатии по кнопкам клавиатуры будут воспроизведены звуки ноты, а также изменится внешний вид клавиши синтезатора.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.