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

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

12.05.2009, 21:08. Показов 100162. Ответов 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru