Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/516: Рейтинг темы: голосов - 516, средняя оценка - 5.00
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168

Создание игры(2d)

12.05.2009, 21:08. Показов 103609. Ответов 423
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно идея такого создать нечто на подобиe ->
http://www.newgrounds.com/portal/view/494301

Буду сюда задвать свои вопросы,думаю всем кто будет увлечён создание игры тоже будет интресно)

Otaka,этот задний буфер замещает собой background плюс курсор оставляет на неём свои артефакты,как его очищать,да так чтоб ещё и background у нас был.

________________________________________ ________________________________________ _________________________
Основные моменты
Вычисление угла поворота персонажа в зависимости от положения курсора мыши
То же
Поворот изображения(тут еще как смещать точку поворота)
Делаем пули
Все еще непонятки с пулями
Начинаем вычисление коллизий
Идея про то, как это должно быть
Как это должно быть реализовано
Как повернуть массив точек(регион)?
А тут код(в нем есть глюк. Потом есть исправленная версия)
Находим столкновение региона и линии. Исправленная версия столкновения регионов
Как это должно выглядеть в принципе?
Начинается долгое обсуждение того как делать редактор уровней
...
...
Первый вариант редактора
Снова эти пули
Функция которая бьет изображения на мелкие куски(тайлы)
Версия редактора
Загрузка сохранение
Еще версия
4
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2009, 21:08
Ответы с готовыми решениями:

Создание игры
Извините за очередную тему подобного рода, но все же не могу не спросить: Мечтаю о создании игры, пусть и очень простой.. Сейчас для меня...

Создание игры
Доброго времени суток! Лабораторная работа - сделать игру. Есть идея. Нужны любые советы, коментарии, пожелания и критика. Спасибо! ...

Создание игры
Люди есть у кого нибудь исходники игры на подобие игр от ALAWAR, что бы разобрать и поучиться на этом примере? Или подскажите где можно...

423
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
14.05.2009, 23:23  [ТС]
Студворк — интернет-сервис помощи студентам
А детально можешь объяснить что происходит при твоём GPoint а то я понять не могу )

Добавлено через 12 минут 26 секунд
Точнее как мне из неё угол извлечеть,вот чего я так и не понял)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
14.05.2009, 23:34
Цитата Сообщение от Otaka Посмотреть сообщение
Вот теперь я понял, что ты хочешь сделать.
Лови проект. Курсор не оставляет следа. Я проверил.
Но прорисовка заднего фона должна идти не так. Потом обьясню.
А махинация с задним фоном оно для чего? Для того, чтобы не заморачиваться с тем, чтобы сохранять позицию под курсором и потом восстанавливать при уходе мыши на другую позицию?

А вообще, все игры делают так, что текущее состояние с нуля перерисовывают? А то мне почему-то казалось, что перерисовывают только изменённые участки, хотя если вот так подумать, то перерисовывать с нуля проще
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
15.05.2009, 08:09
Да рисовать с нуля гораааааааздо проще. Да и мышь ничем не отличается от персонажа, или объекта фона. Вся картинка доллжна перерисовываться раз 30-60 в секунду, в задний буффер, а потом на экран, ничего тогда не будет моргать, и все будет рисоваться как надо без того, чтобы задумываться о перерисовке изменившихся частей.
KTYJIX, ты еще забыл о том, что твой сталкер будет двигать весь фон. Надо еще организовать смещение фона. Хотя если предположить, что персонаж будет всегда в центре экрана, то StPosX и StPosY и будут смещение фона, но тогданадо немного иенять процедуры отрисовки персонажа и отсчета мыши.


GPoint stalk(StPosX+63,StPosY+57);
GPoint Mouse(MouseX,MouseY);
float angle=stlak.Polar(Mouse)/M_RAD_CONV;
0
 Аватар для KoFeMaH
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
15.05.2009, 08:29
Ребят насколько я помню при работе с изображением чтобы ничего не моргало при там увеличении или других работах с ним нужно прописать в с создании формы DoubleBuffered=true;
1
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
15.05.2009, 13:03
Ребят насколько я помню при работе с изображением чтобы ничего не моргало при там увеличении или других работах с ним нужно прописать в с создании формы DoubleBuffered=true;
<...>...прописываемого в onCreateForm-ы...и всё будет ок.
1
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
15.05.2009, 19:08
Так это ведь для работы с компонентами, или при перерисовке по OnPaint. А при рисованию по таймеру, мне кажется, это дело не поможет. А даже если и поможет, не так уж сложно смастерить свой буффер. Если надо, его и анализировать проще ScanLine ом, и например если делать самому вывод с альфамаской, то самое оно. А VCL doublebuffer, мне не нравится. Всегда без него обходился.
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
15.05.2009, 21:13  [ТС]
C++
1
float angle=stalk.Polar(Mouse)/M_RAD_CONV;
[BCC32 Error] Unit1.cpp(156): E2034 Cannot convert 'GPoint' to 'GPoint *'
[BCC32 Error] Unit1.cpp(156): E2342 Type mismatch in parameter 'p' (wanted 'GPoint *', got 'GPoint')
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
15.05.2009, 21:20

:'(
C++
1
float angle=stalk.Polar(&Mouse)/M_RAD_CONV;
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
15.05.2009, 22:23  [ТС]
Я тебя понял XD

Учу матчасть (:
0
 Аватар для KoFeMaH
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
15.05.2009, 22:52
кстати ребят у вас там адрес картинок прописан так что он будет читать только из папки по этому адресу.если перенесешь игру в другое место будет долго ругаться нехорошими словами) поэтому лучше адрес написать такой
C++
1
2
3
".\\pointer.bmp"
".\\BG.bmp"
".\\Stalker.bmp"
Тогда он будет их читать из папки с exe программы
1
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
15.05.2009, 23:10  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
GPoint stalk(StPosX+63,StPosY+57);
GPoint Mouse(MouseX,MouseY);
float angle=stalk.Polar(&Mouse)/M_RAD_CONV;
 
RotateDC(BG->Canvas->Handle,angle);
SetViewportOrgEx(BG->Canvas->Handle,StPosX+63,StPosY+57,NULL);
RotateDC(BG->Canvas->Handle,angle);
BG->Canvas->Draw(StPosX,StPosY,Stalker);
SetViewportOrgEx(BG->Canvas->Handle,0,0,NULL);
RotateDC(BG->Canvas->Handle,0);
 
Form1->Canvas->Draw(0,0,BG);   //И рисуем все на экран
Всёравно по своей оси он вращаться не хочет,врощаеться вообще не пойми по какой, и деление на 2 тож не помогает
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
15.05.2009, 23:39
Цитата Сообщение от KoFeMaH Посмотреть сообщение
кстати ребят у вас там адрес картинок прописан так что он будет читать только из папки по этому адресу.если перенесешь игру в другое место будет долго ругаться нехорошими словами) поэтому лучше адрес написать такой
C++
1
2
3
".\\pointer.bmp"
".\\BG.bmp"
".\\Stalker.bmp"
Тогда он будет их читать из папки с exe программы
И сделать контроль того, что файл открылся. В противном случае всё очень сильно и фатально порастает
0
 Аватар для KoFeMaH
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
16.05.2009, 11:52
Сижу долбаю код игры.Ктулх ты исправил то что он у тебя крутится как сумашедший?И кстати если он у тебяповарачивается с помощью мышки то зачем на нажатие клавиш A D события?Кстати изменил в коде

SetViewportOrgEx(BG->Canvas->Handle,StPosX,StPosY,NULL);
RotateDC(BG->Canvas->Handle,angle);
вот эту строку BG->Canvas->Draw(40-StPosX,40-StPosY,Stalker);
и он перестал двигаться а стоит на месте и крутится
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
16.05.2009, 13:24  [ТС]
Так парни поздравляю,у нас почти получилось крутить его вокруг своей оси,вот проэкт он сдесь нормально крутиться за мышкой(ток с небольшим отклонением почему то).

Следующая цель завставить его нормально двигаться,просто если во время вращения начать движение опять какаято фигня происходит.

И кстати если он у тебя поварачивается с помощью мышки то зачем на нажатие клавиш A D события?
Re:посмотри как это реализованно в флеш игре (ссылка в шапке).
Вложения
Тип файла: rar Svalker.rar (201.8 Кб, 197 просмотров)
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
16.05.2009, 14:20
Я плачу. Я же столько раз это повтрял. После смещения стартовой точки, больше не нужно рисовать объект по его истинному положению. Надо рисовать по 0,0(а если исходная точка = центру рисунка, то -PicWidth/2 -PicHeight/2);
Я тебе все исправил.

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

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
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
TPoint mp=Form1->ScreenToClient(Mouse->CursorPos);
int MouseX=mp.x;
int MouseY=mp.y;
BG->Canvas->Draw(0,0,CH);
//BG->Canvas->Draw(500,0,CH);
/*Canvas->Pen->Width = 1;
Canvas->Pen->Color = clBlack;  */
if (IsRightDown == true) {
   StPosX = StPosX+speed;
}
if (IsLeftDown == true) {
   StPosX = StPosX-speed;
}
if (IsDownDown == true) {
   StPosY = StPosY+speed;
}
if (IsUpDown == true) {
   StPosY = StPosY-speed;
}
GPoint stalk(StPosX,StPosY); //И тут смещения никакие не нужны, а просто координаты
GPoint Mouse(MouseX,MouseY);
float angle=stalk.Polar(&Mouse)/M_RAD_CONV;
 
RotateDC(BG->Canvas->Handle,angle);
SetViewportOrgEx(BG->Canvas->Handle,StPosX,StPosY,NULL);
BG->Canvas->Draw(-1*Stalker->Width/2,-1*Stalker->Height/2,Stalker);
SetViewportOrgEx(BG->Canvas->Handle,0,0,NULL);
RotateDC(BG->Canvas->Handle,0);
 
BG->Canvas->Draw(MouseX-15,MouseY-15,cross);//Курсор рисуем в конце
Form1->Canvas->Draw(0,0,BG);   //И рисуем все на экран
}
Вложения
Тип файла: rar Stalker.rar (4.7 Кб, 144 просмотров)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
16.05.2009, 14:24
КОгда оно наконец заработает как надо - покажи хотя бы что получилось
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
16.05.2009, 16:07
А отклонения у тебя были,потому что ты неправильно брал точку отсчета
Ты брал вот такую:
C++
1
GPoint stalk(StPosX+63,StPosY+57);
Что в результате выходит как самая правая нижняя точка. А надо брать:
C++
1
GPoint stalk(StPosX,StPosY);
Добавлено через 1 час 42 минуты 2 секунды
Цитата Сообщение от Otaka Посмотреть сообщение
Но для начала в качестве рисунка персонажа ведь у тебя какое-то непонятное создание, так ты его поверни под 90 градусов, чтобы он смотрел влево. В архиве бери.
Я имел ввиду вправо.
0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
16.05.2009, 18:50
А откомпилированная версия вашей 2D-зверя есть? Посмотреть хочется, а чёт не компилится...
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
16.05.2009, 19:00
Так это ж пока KTYJIX просто тренируется делать куски из игры. Там пока ничего нету.
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
17.05.2009, 22:33  [ТС]
Otaka,а не будет ли проще организовать поворот за мышкой по векторам?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2009, 22:33

Создание игры
Здравствуйте форумчане, мой вопрос состоит в том. Я молодой парень, который знает языки C++, C# и т.д. Ести небольшой интерес к созданию...

Создание игры
Добрый вечер. Начал работу над собственным проектом, и задался вопросом. (gamedev и прочие сайты перечитывал, но так ответа и не нашел....

Создание игры
Посмотрел как сейчас на коленке люди клепают инди игры под андроид\иос e.t.c. Созрел вопрос - куда двинуть, что использовать чтобы написать...

Создание игры на C++
Скажите , а можно ли создавать игры на С++? Если да , то буду рад увидеть примеры как это все реализовать и где можно. Возможно это С++...

Создание 3д игры
Извиняюсь, если такая тема уже была, не нашел. Хочу написать свою игрушку. Игрушка по типу что то gta sa. Но со своим смыслом и тп. Я готов...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru