Думаю, каждый из нас хотел когда-то или даже хочет сейчас написать интересную игру. Благо, эпоха многомиллионных игровых суперблокбастеров и огромных творческих команд постепенно проходит, уступая место разработчикам-индивидуалам и небольшим студиям на три-четыре сотрудника. Да и от фотореалистичного 3D многие уже устали. Теперь у многих в почете теплые ламповые игры со Смыслом, а не с Картинкой.
Предлагаю стать на один шаг ближе к мечте: создать первое шаблонное приложение с помощью библиотеки SDL.NET, враппера известной библиотеки sdl.
В первую очередь, нам необходимо скачать саму библиотеку. Сделать это можно со страницы проекта на SourceForge: https://sourceforge.net/projects/cs-sdl/files/SDL.NET/6.1.0/sdldotnet-6.1.0.zip/download. Как несложно понять, я использую версию 6.1.0.
Далее, мы создаем пустой проект:
Создадим в проекте статический класс Game, являющийся каркасом для функционала игры. На данном этапе нам необходимы два свойства, описывающие горизонтальное и вертикальное разрешения экрана, и приватное поле, которое будет содержать экземпляр Surface - основную "поверхность", на которой мы будем впоследствии рисовать все остальные элементы.
Ну вот, теперь приложение получает заголовок, и устанавливаются его размеры. Но... оно все еще не запускается. Причиной тому - необходимость подключить обработчики к некоторым событиям:
Событие KeyboardDown срабатывает при нажатии кнопок клавиатуры, и мы используем это, организовав выход их приложения по нажатию на Escape и Q.
Событие Tick срабатывает каждый раз при смене кадра. Именно в обработчике этого события мы и будем отрисовывать все элементы игры.
Ну а событие Quit срабатывает тогда, когда пользователь любым способом пытается закрыть игру. В данном обработчике мы можем, в частности, спросить у пользователя - правда стоит выйти, или он нажал не на ту кнопку, или вставить код создания игрового сохранения.
Команда Events.Run() запускает главную петлю приложения.
Для успешного старта осталось только создать класс Program, а в нем - статический метод Main:
Иии... Работает!
Предлагаю стать на один шаг ближе к мечте: создать первое шаблонное приложение с помощью библиотеки SDL.NET, враппера известной библиотеки sdl.
В первую очередь, нам необходимо скачать саму библиотеку. Сделать это можно со страницы проекта на SourceForge: https://sourceforge.net/projects/cs-sdl/files/SDL.NET/6.1.0/sdldotnet-6.1.0.zip/download. Как несложно понять, я использую версию 6.1.0.
Далее, мы создаем пустой проект:
Создадим в проекте статический класс Game, являющийся каркасом для функционала игры. На данном этапе нам необходимы два свойства, описывающие горизонтальное и вертикальное разрешения экрана, и приватное поле, которое будет содержать экземпляр Surface - основную "поверхность", на которой мы будем впоследствии рисовать все остальные элементы.
public static class Game
{
#region PRIVATE
private static Int32 screenWidth = 800;
private static Int32 screenHeight = 600;
private static Surface screen;
#endregion
#region PUBLIC
/// <summary>
/// Горизонтальное разрешение экрана
/// </summary>
public static Int32 ScreenWidth {
get {
return screenWidth;
}
set {
screenWidth = value;
}
}
/// <summary>
/// Вертикальное разрешение экрана
/// </summary>
public static Int32 ScreenHeight {
get {
return screenHeight;
}
set {
screenHeight = value;
}
}
#endregion
}
Создадим метод Run(), запускающий игру:
public static void Run(){
Video.WindowIcon();
Video.WindowCaption = "SDL.NET. Simple Application";
screen = Video.SetVideoMode(ScreenWidth, ScreenHeight);
}
Ну вот, теперь приложение получает заголовок, и устанавливаются его размеры. Но... оно все еще не запускается. Причиной тому - необходимость подключить обработчики к некоторым событиям:
public static void Run(){
Video.WindowIcon();
Video.WindowCaption = "SDL.NET. Simple Application";
screen = Video.SetVideoMode(ScreenWidth, ScreenHeight);
Events.KeyboardDown += new EventHandler<KeyboardEventArgs>(KeyDown);
Events.Tick+=new EventHandler<TickEventArgs>(Tick);
Events.Quit += new EventHandler<QuitEventArgs>(Quit);
Events.Run();
}
private static void KeyDown(object sender, KeyboardEventArgs e){
if (e.Key == Key.Escape || e.Key == Key.Q)
{
Events.QuitApplication();
}
}
private static void Tick(object sender, TickEventArgs args){
screen.Fill(Color.AliceBlue);
screen.Update();
}
private static void Quit(object sender, QuitEventArgs e)
{
Events.QuitApplication();
}
Событие KeyboardDown срабатывает при нажатии кнопок клавиатуры, и мы используем это, организовав выход их приложения по нажатию на Escape и Q.
Событие Tick срабатывает каждый раз при смене кадра. Именно в обработчике этого события мы и будем отрисовывать все элементы игры.
Ну а событие Quit срабатывает тогда, когда пользователь любым способом пытается закрыть игру. В данном обработчике мы можем, в частности, спросить у пользователя - правда стоит выйти, или он нажал не на ту кнопку, или вставить код создания игрового сохранения.
Команда Events.Run() запускает главную петлю приложения.
Для успешного старта осталось только создать класс Program, а в нем - статический метод Main:
public class Program
{
[STAThread]
static void Main(string[] args){
Game.Run();
}
}
Иии... Работает!
Комментариев нет:
Отправить комментарий