2017-01-14 3 views
0

У меня есть эта проблема, я хочу создать небольшую игру для университетского проекта с использованием C#, мне нужно создать небольшую библиотеку dll, которая содержит логику игры, но ядро ​​логики обрабатывает события клавиатуры , Я знаю, что «System.Form ..» позволяет прослушивать события клавиатуры, но существует ли способ обработки отдельных событий клавиатуры без использования библиотеки форм? Мне нужно создать событие, которое «запущено» при нажатии кнопки клавиатуры, событие «нравится»: public OnKeyPress (KeyCode c)Событие клавиатуры C#

Существует метод? Спасибо заранее.

ответ

0

Вам нужно что-то, что загружает и использует DLL. DLL сама по себе не собирается запускаться. Нам нужна дополнительная информация о том, как эта библиотека будет использоваться. Вы можете создать библиотеку, которая имеет только классы обработки/функции, но где-то нужно будет контролировать клавиатуру.

Here is a post, который обсуждает глобальный мониторинг клавиатуры. Ответ на этот вопрос связан с an MSDN article.

Назад к тому, что я изначально упомянул, вам не нужно , чтобы иметь реальные события в вашей библиотеке. Вы можете создать библиотеку, содержащую только функциональный код. Затем этот код можно было бы вызывать с более высокого уровня в общем приложении, где обрабатываются события. Вот очень упрощенно, и честно хак, пример:

public static class MyKeyboardActions 
{ 
    public void HandleKeyCharPress(char keyPressed) 
    { 
     switch(keyPressed) 
     { 
      case 'A': 
      // do code for key: A 
      break; 
      case 'B': 
      // do code for key: B 
      break; 
      // etc... 
     } 
    } 
} 

Если вы хотите что-то более конкретное, чем это, вам нужно будет разработать больше о своем проекте в вашем вопросе, то я могу расширить свой ответ более, если это необходимо , Как вы можете видеть, нет необходимости в ссылке System.Windows.Forms с этим кодом.

+0

Спасибо за ваш ответ, я не очень хорошо выразил свой вопрос, в общем случае dll содержит функциональный код, dll используется приложением формы или консольным приложением внутри dll. Я хочу определить точку начала игры, когда игра начинается с каждого события клавиатуры, нужно «внутри» DLL, которая обрабатывает событие «в реальном времени», и меняет некоторые переменные игры, и, наконец, dll обновляет консоль или форму. –

+0

Игра основана на наборе слов для правильной записи в кратчайшие сроки, когда на клавиатуре вводится символ пробела, для запуска пойманного события обновляется то, что вы пишете персонаж по символу. Я думаю, что ваш ответ - хорошее решение. –

+0

Вторая часть моего ответа должна быть именно то, что вам нужно. Вам нужна простая библиотека, содержащая только логический код игры. Вы хотите, чтобы он был отделен от кода пользовательского интерфейса. К сожалению, без образцов вашего игрового кода или спецификаций относительно того, что должен делать функциональный код, это касается как конкретного ответа, как мы можем это сделать. Вам нужно будет сделать свой анализ, чтобы определить, какая библиотека вам понадобится, и какие подписи должны иметь ваши члены класса. – gmiley

Смежные вопросы