Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/79: Рейтинг темы: голосов - 79, средняя оценка - 4.76
 Аватар для Maikl Til
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71

Создание 2D игры.

09.05.2010, 18:45. Показов 16733. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Прочел статью Созданную пользователем KTYJIX и захотелось создать собственную игру. Вот только много есть непонятного.

Если кому не лень, присоединяйтесь к данной теме и попробуем вместе собрать что-то более или менее нормальное с полным описанием всех действий чтобы людям было понятно. KTYJIX и Otaka присоединяйтесь к теме, вы ценные люди.

Давайте возьмем туже тему что и KTYJIX Пример игры

И если не сложно кому, то киньте название книг или ценных материалов по созданию 2D игр.

Добавлено через 1 минуту
Первое что нужно подготовить, так это создать норм папочку, в которую все будем помещать и естественно подпапки с картинками.

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
// Описываем области в которые будем помещать картинки.
Graphics::TBitmap*Buf;        // Buffer - Окно в котором будут отображаться все картинки.
                             // В Буфер никаких картинок грузить не нужно.
 
Graphics::TBitmap*BackGround;// BackGround (Фон)  - Загружаем картинку с фоном.
 
Graphics::TBitmap*Cross;     // Cross (Перекрестие) - Загружаем любу
                             // картинку карторая будет перекрестием.
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//ShowCursor (Показать курсор) (False (Лож)) (True (Истина)).
ShowCursor(false); // Скрываем курсор.
 
BackGround = new Graphics::TBitmap(); // Объявляем новую картинку.
BackGround->LoadFromFile(".\\BackGround\\BackGround1.bmp"); // Загружаем картинку в область BackGround.
 
Cross = new Graphics::TBitmap(); // Объявляем новую картинку
Cross->LoadFromFile(".\\Cross\\RedCross.bmp"); // Загрузить картику в область Cross.
Cross->Transparent = 1;
 
//Width (Ширина).
//Height (Высота).
Buf = new Graphics::TBitmap();  // Объявляем новую область.
Buf->Width=Form1->Width;        // Выравниваем окно области картинки по ширине формы.
Buf->Height=Form1->Height;      // Выравниваем окно области картинки по высоте формы
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
// Enabled (Включено) (false или true) - включаем на всякий случай.
// Interval (Интервал в миллисекундах ) - выставляем 10.
Timer1->Enabled = true;
Timer1->Interval = 10;
 
 
// TPoint (Точка) - позиция.
// mp (MapPoint (Точка на карте)) - позиция на форме.
// ScreenToClient (Экран клиента).
// Mouse (Мышка).
// CursorPos (Cursor Position (Позиция курсора)).
 
TPoint mp=Form1->ScreenToClient(Mouse->CursorPos);
 
// int (Integer (Целое число))
// MouseX - Движение мыши по координате X = Позиции на форме координаты X = 0.
// MouseY - Движение мыши по координате Y = Позиции на форме координаты Y = 0.
int MouseX=mp.x;
int MouseY=mp.y;
 
//Теперь переходим к рисованию на форме.
// Canvas (Холст).
// Draw (Рисовать) - Начинает рисовать по координатам X, Y. в данном случае равные 0.
 
Buf->Canvas->Draw(0,0,BackGround);
Buf->Canvas->Draw(MouseX,MouseY,Cross);
Form1->Canvas->Draw(0,0,Buf);
}
//---------------------------------------------------------------------------
Теперь собственно вопрос:

Как сделать движение персонажа по форме используя клавиши w,s,a,d?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.05.2010, 18:45
Ответы с готовыми решениями:

Создание Игры
Люди, помогите пожалуйста, нужно сделать небольшую игру, только не знаю как написать, впринцыпе понимаю, что да как... вот само...

Создание 2D игры
Всем привет! Недавно появилось желание создать игру. И у меня накопились вопросы. Поэтому прошу вашой помощи, хочу услышать ваши мнения...

Создание игры(2d)
Собственно идея такого создать нечто на подобиe -&gt; http://www.newgrounds.com/portal/view/494301 Буду сюда задвать свои...

17
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
09.05.2010, 20:43
Обычно поверх TImage или формы ложат еще TPaintBox, принцип его действия в том, что при прорисовке чего-либо непостоянного, как раз твоего персонажа например - старая стирается, в итоге можно спокойно управлять и рисовать Draw функцией. Вот я думаю тебе подсказал )
P.S. перехват нажатий на форме: событие OnKeyPress - его и используй для этого
0
 Аватар для Maikl Til
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
09.05.2010, 22:37  [ТС]
Цитата Сообщение от DanUnited Посмотреть сообщение
Обычно поверх TImage или формы ложат еще TPaintBox, принцип его действия в том, что при прорисовке чего-либо непостоянного, как раз твоего персонажа например - старая стирается, в итоге можно спокойно управлять и рисовать Draw функцией. Вот я думаю тебе подсказал )
P.S. перехват нажатий на форме: событие OnKeyPress - его и используй для этого


Спасибо, вот только я имел ввиду, как с помощью кода это реализовать?
Нажатие W = Движение вверх
Нажатие S = Движение вниз и т.д.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
09.05.2010, 23:16
Хм.... Пара простых вопросиков:
1. У вас есть хоть какие-нибудь идеи, касающиеся самой игры???
Если кому не лень, присоединяйтесь к данной теме и попробуем вместе собрать что-то более или менее нормальное с полным описанием всех действий чтобы людям было понятно.
Вот эта фраза меня очень насторожила. Получается вы понятия не имеете что делать, лишь бы что-то делать....
2. Как у вас в "игре" представлены обьекты? В виде списка обьектов, со своими координатами??? В виде массива точек???
3. Что из себя вообще должна представлять игра?
0
 Аватар для Maikl Til
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
10.05.2010, 01:00  [ТС]
Цитата Сообщение от Ni'Tan Посмотреть сообщение
Хм.... Пара простых вопросиков:
1. У вас есть хоть какие-нибудь идеи, касающиеся самой игры???

Вот эта фраза меня очень насторожила. Получается вы понятия не имеете что делать, лишь бы что-то делать....
2. Как у вас в "игре" представлены обьекты? В виде списка обьектов, со своими координатами??? В виде массива точек???
3. Что из себя вообще должна представлять игра?



1. Конечно есть.

Игра будет представлять из себя стратегическую аркаду.
Будет герой и он будет всех убивать (Выполнять поставленные задачи) от уровня к уровню. Так же у героя будут помощники идущие точно следом за ним, которых можно будет от случая к случаю отклеивать (оставлять) от команды в режиме полной боеготовности.

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

Так же масса объектов типа оружия, домов, различных холмов, воды, камней и т.д.
Ну всем известно, что без звукового сопровождения ни одна игра не обходится. Так вот, нужно еще каким-то образом умудриться на определенные действия засунуть звуки. Как правильно это сделать, я тоже не знаю. Если быть точным, то хочется сделать так чтобы был к примеру список определенного звука и он брался в рандомном значении, например один из 10 возможных.

2. Если честно, я не знаю как именно они представлены. Хотелось бы узнать что лучше и почему?
вообще я хочу сделать анимацию движения героя. Ну чтобы было понятно что он ходит, а не левитирует. ^_^ После прорисовать кровь и т.д. ну за анимацию я не беспокоюсь, так как нарисовать смогу как 3D так и 2D и любые эффекты построить. Только непонятно как их правильно закинуть в приложение чтобы они грамотно отображались. А то я тут столкнулся с проблемой, что анимация не работает, если ее загружать к примеру в TImage. Конечно можно использовать TImageList Но как из него правильно брать файлы и вообще как правильно им пользоваться чтобы не было проблем.

3. Отличную игру с красивой анимацией и отличным сюжетом. Анимацию и сюжет я могу сделать как орешки пощелкать. А вот как этому всему придать жизнь, непонятно (

Было бы неплохо Книги какие-нибудь по гейм деву или еще что-то ) А вообще, самое лучшее это советы, комментарии и просто помощь пользователей которые уже сталкивались с этим и пытались что-либо построить.
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
10.05.2010, 01:14
Цитата Сообщение от Maikl Til Посмотреть сообщение

Нажатие W = Движение вверх
Нажатие S = Движение вниз и т.д.
Это для примера.
C++
1
2
3
4
5
6
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key=='W') Image1->Top=Image1->Top-5;
if (Key=='S') Image1->Top=Image1->Top+5;
}
Посмотри тему Несколько небольших игрушек
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
10.05.2010, 01:41
Grey,
Цитата Сообщение от Grey Посмотреть сообщение
if (Key=='W') Image1->Top=Image1->Top-5;
if (Key=='S') Image1->Top=Image1->Top+5;
можно так
C++
1
if (Key == 'W' || Key == 'S') Image1->Top = Image1->Top - 5*(Key-85);
2
 Аватар для Maikl Til
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
10.05.2010, 01:42  [ТС]
Цитата Сообщение от Grey Посмотреть сообщение
Это для примера.
C++
1
2
3
4
5
6
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key=='W') Image1->Top=Image1->Top-5;
if (Key=='S') Image1->Top=Image1->Top+5;
}
Посмотри тему Несколько небольших игрушек


Спасибо. И как же я не нашел на форуме этого.

По поводу кода. Это работает если я буду использовать картинку в TImage. А как ребята делали чтобы битовый образ записанный к примеру в Graphics::TBitmap*Hero можно было двигать используя клавиши? А то если я заменю слова Image на описанный Hero, то нифига работать не будет. Да и тем более нужно ведь метод который мог бы выдавать определенные картинки на каждое действие, я как понял это можно реализовать с помощью списка картинок используя TImageList.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
10.05.2010, 09:56
Цитата Сообщение от Maikl Til Посмотреть сообщение
Игра будет представлять из себя стратегическую аркаду.
Будет герой и он будет всех убивать (Выполнять поставленные задачи) от уровня к уровню. Так же у героя будут помощники идущие точно следом за ним, которых можно будет от случая к случаю отклеивать (оставлять) от команды в режиме полной боеготовности.
Герой и его спутники будут точно следить за действием мыши, то есть где мышь, туда и смотрят герой и его подручные.
Так же масса объектов типа оружия, домов, различных холмов, воды, камней и т.д.
Ну всем известно, что без звукового сопровождения ни одна игра не обходится. Так вот, нужно еще каким-то образом умудриться на определенные действия засунуть звуки. Как правильно это сделать, я тоже не знаю. Если быть точным, то хочется сделать так чтобы был к примеру список определенного звука и он брался в рандомном значении, например один из 10 возможных.
Честно - у вас это не получится. Как я понимаю - это у вас первая игра? Ну вам один небольшой пример из Геймдева: Практически всегда конечный результат не похож на то, что задумывали.
Схожесть может достигать 5-10%. Вы бы прочитали книжку Half-Life - Raising the Bar.
Там рассказывается как создавалась 1 и 2 часть Half-Life. Вы удивитесь, узнав как изначально выглядила первая "Халфа".
Мой вам совет: Для начала сделайте вот что:
1.Есть локация.
2.Есть ГГ(главный герой).
3.Есть обьекты, которые ГГ не может проходить (препятствия).
4.Есть противник, которого нужно убить.
*.При желании можно еще и звук добавить.
Как только у вас получится это, переходите к следующей стадии:
Много противников.
Аптечки.
NPC.....
Поверте - при таком подходе все ваши "Напалеоновские планы" рухнут в один момент и вы вернетесь на Землю.

Добавлено через 6 минут
Цитата Сообщение от Maikl Til Посмотреть сообщение
Если честно, я не знаю как именно они представлены. Хотелось бы узнать что лучше и почему?
Что лучше и почему я незнаю.
1.Можно обьекты представлять как список:
Object37;Tupe 3;Texture jek.bmp;X 155;Y 226;
Object38;Tupe 3;Texture jek.bmp;X 37;Y 334;

А затем проходить циклом по этому списку, проверять координаты, столкновения и т.д.
2.Создать собственный класс. Так, я думаю, будет лучше.
3.Представить карту как массив клеток (шахматная доска). Я использую именно этот варииант, потому что он легче и удобнее для меня. Единственный минус - каждый обьект привязан к клетке. И двигаться может только по клеткам.

Добавлено через 4 минуты
Цитата Сообщение от Maikl Til Посмотреть сообщение
А как ребята делали чтобы битовый образ записанный к примеру в Graphics::TBitmap*Hero можно было двигать используя клавиши?
Как ребята делали спроси у них. Двигать Битмап очень просто.
Создаем 2 переменный отвечающие за координаты обьекта. При нажатии клавиши перемещения прибавляем к этим переменным соответствующие значения. Затем отрисовываем этот Битмап по новым координатам.

Добавлено через 30 минут
http://bcb-games.narod.ru/ - это то, что вам нужно.
1
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
10.05.2010, 13:37
Лучший ответ Сообщение было отмечено как решение

Решение

Короче говоря, что касается темы:
1. Maikl Til, вам еще рано создавать игры - это однозначно, это я вам точно говорю, бросте сразу и подучите язык с++ со всеми входящими структурами для опыта, а потом изобретайте своё, или вы это дело сами бросите, когда поймете, что дальше по ступеньке вы не сможете ничего сделать.
2. Все в теме несут полный бред, особенно с перемещением картинки, за исключением более вразумительного смысла в сообщениях Ni'Tan.
3. Кстати на счет перемещения картинки по клавишам.
Я вам говорил, есть OnKeyPress событие и есть у TCanvas функция Draw.
Знаете такую? Она описывается как Draw(x,y) - где x,y координаты картинки и это я просил рисовать на TPAintBox.
3
 Аватар для Maikl Til
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
10.05.2010, 14:16  [ТС]
Цитата Сообщение от DanUnited Посмотреть сообщение
Короче говоря, что касается темы:
1. Maikl Til, вам еще рано создавать игры - это однозначно, это я вам точно говорю, бросте сразу и подучите язык с++ со всеми входящими структурами для опыта, а потом изобретайте своё, или вы это дело сами бросите, когда поймете, что дальше по ступеньке вы не сможете ничего сделать.
2. Все в теме несут полный бред, особенно с перемещением картинки, за исключением более вразумительного смысла в сообщениях Ni'Tan.
3. Кстати на счет перемещения картинки по клавишам.
Я вам говорил, есть OnKeyPress событие и есть у TCanvas функция Draw.
Знаете такую? Она описывается как Draw(x,y) - где x,y координаты картинки и это я просил рисовать на TPAintBox.



Вот только я сдаваться не привык ) Так что продолжу и буду усердно трудиться.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
10.05.2010, 14:36
Перемещение "Битмапа":
Unit1.CPP
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Graphics::TBitmap *her=new Graphics::TBitmap;
int x=50,y=50; //Координаты нашего Хера.
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    her->Width=50; //Ширина Хера
    her->Height=50; //Высота Хера
    her->Canvas->Rectangle(3,3,47,47); //Ресуем квадрат на Хере
    her->Canvas->Brush->Color=clGreen; //Цвет кисти зеленый
    her->Canvas->FillRect(Rect(4,4,46,46)); //Заливаем Хера зеленым цветом
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 if(Key == 'W') y-=5; // Здесь, думаю, все понятно
 if(Key == 'S') y+=5;
  if(Key == 'A') x-=5;
   if(Key == 'D') x+=5;
   Redraw(); //Отрисовываем Хера по новым координатам
}
//---------------------------------------------------------------------------
void Redraw() //Сама функция перерисовки
{
Form1->PaintBox1->Repaint(); //Перерисовываем PaintBox
Form1->PaintBox1->Canvas->Draw(x,y,her); //Ресуем Хера по координатам
}
//---------------------------------------------------------------------------
Unit1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TPaintBox *PaintBox1;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall FormKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift);
        void __fastcall FormShow(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
void Redraw(); //Функия перерисовки
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
На форме PaintBox1.
1
 Аватар для Maikl Til
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
10.05.2010, 15:22  [ТС]
Пасибо =)
0
 Аватар для besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
10.05.2010, 15:29
вопрос родственный с этой темой, может и автору пригодиться поэтому написал тут.

кто знает подскажите как получить HWND главного окна,
допустим пытаюсь нарисовать линию таким способом:
C++
1
2
3
hwnd=Application->MainForm->Handle;
hdc=GetDC(hwnd); // hdc hwnd обьявлены ранее
LineTo(hdc,200,200);
вылетает с ошибкой, если в первой строке поставить Form1->Handle ниче не происходит
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
10.05.2010, 19:38
Цитата Сообщение от DanUnited Посмотреть сообщение
2. Все в теме несут полный бред, особенно с перемещением картинки, за исключением более вразумительного смысла в сообщениях Ni'Tan.
Ну почему бред? Если у меня поле на весь экран и не перемещается, мне проще картинку перемещать чем всё это отрисовывать в битмап.
И картинка была только для примера.
А за остальное спасибо.
0
 Аватар для besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
10.05.2010, 20:02
C++
1
2
3
4
5
hwnd=this->Handle;
hdc=GetDC(hwnd);
LineTo(hdc,200,200);
RoundRect(this->Canvas->Handle, 10, 10,  200, 300, 30, 40);
ReleaseDC(hwnd,hdc);
вот так оказывается, теперь можно делать блитинг
1
 Аватар для Maikl Til
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
11.05.2010, 12:45  [ТС]
Цитата Сообщение от besh]<a Посмотреть сообщение
C++
1
2
3
4
5
hwnd=this->Handle;
hdc=GetDC(hwnd);
LineTo(hdc,200,200);
RoundRect(this->Canvas->Handle, 10, 10,  200, 300, 30, 40);
ReleaseDC(hwnd,hdc);
вот так оказывается, теперь можно делать блитинг

Бешь, объясни зачем вообще это нужно ? и что есть что? и что тут еще нужно описывать или какие-то нужно библиотеки подключать ? А то что-то он при запуске выдает что символы hwnd, hdc не индефицированы! )))
0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
11.05.2010, 13:10
HWND hwnd,hdc
- идет инициализация рабочей оласти.
К примеру, если ты в коде напишешь:
hdc=GetDC(NULL);
- то он будет работать на нулевой, главной рабочей области THAndle, а значит это что?
Верно, это и есть экран, т.е. поверх всего )
А т.к. у тебя там this->handle - то это и есть канва формы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2010, 13:10
Помогаю со студенческими работами здесь

Создание 2d игры
Я создаю 2d игру. Пока пишу редактор карт. Пока у меня проблемы с изменением масштаба карты. Я выкладываю весь код своего редактора....

Создание игры на С++
Это моя курсовая работа , нужно написать игра на любом языке . Я выбрал с++.Дайте пожалуйста пару советов , м.б. книги какие нибудь...

Создание 3d игры на Borland C++
Я однажды читал одну статью про 3d на borland C++! Он бесплатно выгружает свою статью в help файл! И он всем разрешает публиковать свои...

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

Создание игры Викторина
я даже не знаю чего начать помогите )))!!(((


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru