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

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

12.05.2009, 21:08. Показов 103923. Ответов 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
15.08.2009, 19:59  [ТС]
Студворк — интернет-сервис помощи студентам
Раз будет такая система таилов,то нам надо менять структуру массива
C++
1
2
3
4
map[x][y].mark=layer;
map[x][y].layer=layer;
map[x][y].x=rand_layer[randInt(0,4)];//случаным образом
map[x][y].y=0;
И как ты думаешь нам оставить его линейным
C++
1
tile[y*Tile_C_W + x]
Или сделать двумерным
C++
1
map[x][y]
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
15.08.2009, 20:02
Эта картинка набор отдельных квадратных тайлов. Ты её разбей на части и загрузи в массив TBitmap tiles[Сколько_там_у_тебя_тайлов].

Добавлено через 59 секунд
Рзбивай чем угодно. Хоть Canvas->CopyRect, хоть BitBlt
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
15.08.2009, 20:55  [ТС]
Абстрактый маленький примерчик можешь написать?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
15.08.2009, 21:27
Вот скажи, неужели ты не можешь написать простое приложение орудующее элементарной табличной арифметикой?
Ладно. Получай.

это функция выполняющая разбивку.
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
//Мы получаем большую картинку image и делим её на кусочки
//каждый кусочек будет шириной part_w,part_h
//Исходная картинка должна содержать целое число таких кусков
//то есть, если маленький кусочек - 100х100, то исходная картинка может быть
//например, 1000х100, и не может быть 999х85
 
ExtImage** BreakImageOnParts(ExtImage*image,int part_w,int part_h)
{
//Обязательно целое количество кусочков. Таково мое ограничение
if(((image->Width%part_w)!=0)||((image->Height%part_h)!=0))return NULL;
int w_col=image->Width/part_w;
int h_col=image->Height/part_h;
if((w_col==0)||(h_col==0))return NULL;
 
ExtImage**pic_array=new ExtImage*[h_col*w_col];//выделяем место под картинки
TRect dest(0,0,part_w,part_h);// прямоугольник назначения всегда один и тот же
int pic_num=0;
for(int j=0;j<h_col;j++)
        {
        for(int i=0;i<w_col;i++,pic_num++)
                {
                TRect source(i*part_w,j*part_h,i*part_w+part_w,j*part_h+part_h);
                pic_array[pic_num]=new ExtImage();
                pic_array[pic_num]->Width=part_w;
                pic_array[pic_num]->Height=part_h;
                pic_array[pic_num]->Canvas->CopyRect(dest,image->Canvas,source);
                }
        }
return pic_array;
}
А это пример её использования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ExtImage*base=new ExtImage();
//грузя картинку, я уже знаю сколько должно быть частей.
base->Load("E:\\1.bmp");
ExtImage**image;
image=BreakImageOnParts(base,50,50);
//теперь я их просто нарисую
for(int i=0;i<4;i++)
        {
        image[i]->DrawTo(Canvas->Handle,i*100,10);
        }
}
2
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
19.08.2009, 22:38  [ТС]
Тут сделал кнопку(просто картинка на форме).
Написал функцию проверки попадания щелчка мыши на кнопку.
C++
1
2
3
4
5
6
7
8
9
10
11
bool MouseBTcheck(int x,int y)
{
 TPoint mp = Form2->ScreenToClient(Mouse->CursorPos);
 int XY = mp.x * mp.y;
 
 for(int i=x*y;i<(x+25)*(y+25);i++)
 {
   if (XY == i)return true;
 }
 return false;
}
И вот тут мы её используем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm2::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
  int check = false;
  if(Shift.Contains(ssLeft))
        {
         DrawWithSelectedTile(X,Y);
 
                 check = MouseBTcheck(25,25);
             if (check == true)CurrentSelectedTile = 0;
        }
}
Вот,но почему то,кнопка работает не только в красной области(где она и должна работать),но и в жёлтой.
Миниатюры
Создание игры(2d)  
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
20.08.2009, 12:36
Эх, создаешь ты себе проблемы.
Легче рисовать в TPaintBox, получается цельное поле рисования. А так тебе нужно проверять, если мышь X>100 то мы на поле, X< 100 то мы где-то еще.
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
20.08.2009, 21:47  [ТС]
Это я люблю (:
Но,Otaka,Позволь заметить рисует тайлы отлично)
Вот только с кнопкой проблема,поможешь?)
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
24.08.2009, 16:34  [ТС]
Фуф,доделал (:

Сделал зависимость по уровню покрытия:
вода->песок->трава->скалы->горы
Вложения
Тип файла: rar Svalker_tiling.rar (294.6 Кб, 82 просмотров)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
24.08.2009, 20:28
А игрушку, что там сейчас, выложи. Или с прошлокго раза поменялось несильно?
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
24.08.2009, 23:04  [ТС]
Неа >, щас буду маяться чтоб ещё переходы были.
Сначала редактор,а уж потом всё остальное (:
0
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 6
24.08.2009, 23:06
интересный проект... правда не осилил 20 страниц(( буду следить за развитием...

вся графика будет рисованная? или в будущем будут объекты/персонажи, которые будут моделироваться/анимироваться и рендериться в 2d в определеном ракурсе(вид сверху)? я просто не представляю как можно анимацию покадрово отрисовывать вручную)
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
25.08.2009, 21:35  [ТС]
Да,над этим тоже надо будет подумать,но не сейчас (: ,щас ,до моего недоразвитого сознания дойдёт как сделать хорошую систему тайлинга,и уж тогда приступим ко всему остальному (:

To Otaka:
Как ты объявлял функцию
C++
1
ExtImage** BreakImageOnParts(ExtImage*image,int part_w,int part_h)
в Unit1.h, а то у меня ругается?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
25.08.2009, 21:42
Наверное, он говорит, что не знает, что такое ExtImage?
Перенеси #include<myclasses.cpp> в Unit1.h. Но так вообще-то делать очень нехорошо!
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
25.08.2009, 23:29  [ТС]
Так,всё отлично запустилось,как только кинул функцию в MyClasses,всё делаю переходы.
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
17.09.2009, 16:04  [ТС]
Как сделать так, чтобы массив объектов класса который я объявляю в
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Ttile:TObject
{
 public:
 int p,x,y;
};
 
void TForm1::CreateTileMatrix(int w, int h)
{
Ttile tile[w*h];
for(int i=0;i<w*h;i++)
 {
  tile[i]->p = 0;
  tile[i]->x = rnd(0,3);
  tile[i]->y = 0;
 }
}
был виден в любой части кода:

C++
1
2
3
4
5
6
7
void TForm1::DrawTiles(int x,int y,int tile)
{
 int rx,ry,type;
 type = tile[tile].p;  //Вот
 rx = tile[tile].x;     //Эта часть
 ry = tile[tile].y;    //Не работает
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
17.09.2009, 16:07
Это не "массив объектов класса". Это локальные данные методы. Принципиальное отличие одного от другого в том, что первое присутсвует в каждом экземпляре класса, а второе только в одном экземпляре.

Выходов два.
1. Массив tile сделать глобальной
2. Массив tile поместить в private часть класса и объявить как static (т.е. фактически объявляем глобальный массив, но он будет доступен только методам класса)
0
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 16:13
tile которая Ttile не определена... судя по этому кусочку) в CreateTileMatrix есть
Ttile tile[w*h];
А кто сказал что она будет видима вне той функции?...
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
17.09.2009, 16:22  [ТС]
А я и сказал,что она не видима,как сделать её видимой?

Выходов два.
1. Массив tile сделать глобальной
2. Массив tile поместить в private часть класса и объявить как static (т.е. фактически объявляем глобальный массив, но он будет доступен только методам класса)

1.Количество эллементов массива нам будет известно только после CreateTileMatrix(int w, int h);
2.ТОже самое.
0
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 16:30
Тогда делай его динамическим, а в CreateTileMatrix(int w, int h); как раз создашь его и инициализируешь...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
17.09.2009, 16:33
Цитата Сообщение от KTYJIX Посмотреть сообщение
1.Количество эллементов массива нам будет известно только после CreateTileMatrix(int w, int h);
2.ТОже самое.
Тогда заведи указатель и работай с динамическим массивом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2009, 16:33

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru