Программное обеспечение для запуска игр Buzz «вручную»

У меня есть 2 Playstation Buzz! USB-контроллеры, так что параллельно могут участвовать 8 человек. Я также знаю, что эти зуммеры могут быть подключены к ПК.

Пример использования: я провожу тренинги по разным вещам (Wireshark, отладка, ...). После урока я хотел бы провести викторину с участниками. Участники могут выиграть небольшие призы, например, сладости. Раньше я все делал вручную, но иногда возникали споры, кто первый даст ответ. Поскольку все тренировки глубоко технические, я подумал, что использование зуммеров будет хорошим трюком.

Я сейчас ищу программное обеспечение, которое

  • работает на Windows 7 x64 и Windows 10
  • распознает все контроллеры (поддерживает не менее 2)
  • позволяет модератору начать вопрос (подготовьте зуммер)
  • узнает первый человек, который нажмет на зуммер
  • воспроизвести звук при нажатии первого зуммера
  • останавливает вопрос (ставит зуммеры на удержание)
  • подсвечивает зуммер человека, который нажал первым (красный свет)

Это уже все. Поддержка оставшихся 4-х кнопок мне не нужна, так как ответ на вопрос беру на себя.

Я знаю Buzzmania , но это уже слишком автоматизировано, и я не хочу заранее генерировать вопросы. Я не мог заставить You not know JackBuzz работать.

Ответы (1)

Вау, я не думал, что это будет так просто. Я все установил и запустил за 45 минут с помощью пакета BuzzIO Nuget для .NET.

Вот минимальное приложение без объектно-ориентированного дизайна.

using System;
using System.Collections.Generic;
using System.Linq;
using BuzzIO;

namespace BuzzExample
{
    class Program
    {
        private static IEnumerable<IBuzzHandsetDevice> _handsets;

        static void Main()
        {
            _handsets = new BuzzHandsetFinder().FindHandsets();
            foreach (var handset in _handsets)
            {
                handset.SetLights(true, true, true, true);
                handset.ButtonChanged += HandsetOnButtonChanged;
            }

            Console.WriteLine("Press Enter to end");
            Console.ReadLine();
        }

        private static void HandsetOnButtonChanged(object sender, BuzzButtonChangedEventArgs args)
        {
            for (int i = 0; i < args.Buttons.Length; i++)
            {
                Console.Write($"{i}: ");
                if (!args.Buttons[i].Any) Console.Write("None");
                if (args.Buttons[i].Blue) Console.Write("Blue ");
                if (args.Buttons[i].Green) Console.Write("Green ");
                if (args.Buttons[i].Yellow) Console.Write("Yellow ");
                if (args.Buttons[i].Orange) Console.Write("Orange ");
                if (args.Buttons[i].Red) Console.Write("Buzzer ");
                Console.WriteLine();
            }
            Console.WriteLine();

            var lights = new bool[4];
            for (int i = 0; i < args.Buttons.Length; i++)
            {
                lights[i] = args.Buttons[i].Any;
            }
            _handsets.First().SetLights(lights[0], lights[1], lights[2], lights[3]);
        }
    }
}

Совет для Windows 10: контроллер может быть установлен как «игровой контроллер, совместимый с HID». В этом случае библиотека может не найти подключенные контроллеры. Чтобы это исправить, зайдите в диспетчер устройств и переключите драйвер на «HID-совместимое устройство». У меня идентификатор поставщика (VID) 054C для Sony и идентификатор продукта (PID) 1000.

Для звука зуммера я использовал Audacity и сгенерировал следующий звук

  • тон генератор 2
  • форма волны: пилообразная
  • частота: от 300 до 200 Гц
  • амплитуда: от 0,8 до 0,8
  • интерполяция: линейная
  • продолжительность: 0,2 секунды

Для воспроизведения звука вы можете использовать встроенный ресурс и SoundPlayer:

 // Playing sound from embedded resource
 Stream buzzerStream = Resource.buzz;
 buzzPlayer = new SoundPlayer(buzzerStream);
 ...
 buzzPlayer.Play();