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

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

12.05.2009, 21:08. Показов 100402. Ответов 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
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
10.10.2009, 15:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Adler Посмотреть сообщение
медленно что-то вы делаете), один редактор за 5 месяцев)
Москва тоже не за один день построилась
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
10.10.2009, 19:03  [ТС]
Так,начинаю всё ООПировать.
НЕ спасибо,я одинокий тормаз >
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
11.10.2009, 12:10  [ТС]
Вот,теперь ошибки не выкидывает.
ЗаООПирование помогло,плюс стало удобнее работать,спасибо (:
Ещё вопрос,как мне при нажатие на (Установки->Установить размер поля) выдавать диалоговое окно,где пользователь будет задавать w и h?

На камень внимание не обращайте,там просто текстура не правильная (:
Вложения
Тип файла: rar tile_map(11.10.09).rar (362.4 Кб, 43 просмотров)
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
11.10.2009, 12:33
Создай новую форму, на ней 2 эдита. В .h файле данной формы в паблик секции создай две переменные int w, int h. А еще сделай две кнопки ОК(назначь ей ModalResult=mrOK) и Отмена(modalresult=mrCancel). Для этой формы сделай следующую функцию:
C++
1
2
3
4
5
6
bool TForm2::Execute()
{
int mr=ShowModal();
if(mr==mrOk)return true;
return false;
}
и обработчик onClick для кнопки ОК:
C++
1
2
3
4
5
6
void __fastcall TForm2::btnOKClick(TObject *Sender)
{
w=StrToInt(Edit1->Text);
h=StrToInt(Edit2->Text);
}
//---------------------------------------------------------------------------
А в форме главного приложения нужно писать так(не забудь добавить #include "Unit2.h"):
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Form2->Execute())
        {
        ShowMessage(String("Мы изменили размер формы на:")+IntToStr(Form2->w)+":"+IntToStr(Form2->h));
        }
}
1
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
11.10.2009, 21:57  [ТС]
Так а как быть с сохранением,у меня на форме есть SaveDialog из него я получаю пусть и название фаила
Допустим вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::N5Click(TObject *Sender)
{
 if (SaveDialog1->Execute())
    {
     sPath = ExtractFilePath(SaveDialog1->FileName)+ExtractFileName(SaveDialog1->FileName);
    }
 bool res = Tiles.SaveTiles(sPath);
 if(res == false)
   {
       ShowMessage("Сохранение не удалось.");
   }
}
До этого в классе Tiles2d я объявил:
C++
1
2
3
4
5
6
7
8
9
bool SaveTiles(String path)
{
 ofstream myfile (sPath + ".lvl");
 if (myfile.is_open())
  {
    myfile << "This is test line.\n";
    myfile.close();
  }
}
ofstream myfile (sPath + ".lvl");
[BCC32 Error] tile_map.cpp(108): E2285 Could not find a match for 'ofstream::basic_ofstream(AnsiString)'

Как надо путь указывать?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
12.10.2009, 08:22
Ну, это лишнее:
C++
1
sPath = ExtractFilePath(SaveDialog1->FileName)+ExtractFileName(SaveDialog1->FileName);
Можно и просто:
C++
1
sPath = SaveDialog1->FileName;
А вот тут нужно просто преобразовать AnsiString в массив байтов.
C++
1
2
3
4
5
6
sPath=sPath.LowerCase();
if(sPath.Pos(".lvl")==0)//если SaveDialog не добавил расширение сам, мы его добавим вручную.
   {
   sPath+=".lvl";
   }
ofstream myfile (sPath.c_str());
1
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
12.10.2009, 15:59  [ТС]
Otaka,а ты как считаешь,подойдёт ли нам такая схема обработки таилов?

Добавлено через 10 минут
http://www.mirgames.ru/articles/base/aigame.html
Вот тут посмотри 3 способ.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.10.2009, 16:57
Цитата Сообщение от KTYJIX Посмотреть сообщение
Otaka,а ты как считаешь,подойдёт ли нам такая схема обработки таилов?

Добавлено через 10 минут
http://www.mirgames.ru/articles/base/aigame.html
Вот тут посмотри 3 способ.
Это же всего лишь способ отрисовки. Логика игрового процесса при этом не меняется - у тебя есть поля, где можно находиться и поля, где находиться нельзя. А способ, которым их отображать - это уже дело десятое
1
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
12.10.2009, 17:40  [ТС]
Просто.я никак определиться не могу.Если оставить всё как есть,то надо дописывать код чтоб,редактор знал что делать если таилы находятся на одном уровне + придётся рисовать переходы в ручную.
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
12.10.2009, 18:31
Третий вариант конечно ничего, но ты подумай, нечто подобное и так делает редактор(я имею ввиду эти переходы). Поэтому - не морочь себе голову. Используй первый способ.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.10.2009, 19:41
Я бы для начала опробовал реализовать логику игры с примитивной графикой (да пусть хотя бы белые и чёрные квадраты). Потому как графику можно и на потом отложить
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
12.10.2009, 19:42  [ТС]
Спасибо.
Придётся научиться рисовать (:
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.10.2009, 19:43
Когда игру сделаешь, тогда и будешь учиться рисовать. А то обидно будет, рисовать научишься, а игру надоест делать...
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
12.10.2009, 19:52
Evg, истину говоришь. Абсолютно поддерживаю.
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
12.10.2009, 19:57  [ТС]
Хорошо.
Значит сейчас доделываю сохранение,загрузку.
А дальше к чему переходить?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
12.10.2009, 20:05
Доделываешь еще такую штуку в свой редактор, как объекты. Каждый объект пусть имеет в себе строку.В редакторе пусть объекты рисуются треугольничками Так вот ты в эту строку будешь записывать, например, "МОНСТР1?Ж=250?С=20" или "ПРЕДМЕТ?ИД=АВТОМАТ001", а в игре читать строку, и подменять объект соответсвующим монстром либо предметом. Понятно?
А потом в игре делаешь возможность хождения по уровню с прокруткой.
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
18.10.2009, 08:58  [ТС]
Почему в дочернюю форму нельзя включить главную форму?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vcl.h>
#pragma hdrstop
 
#include "tile_map.h"
#include "Info_w.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
    : TForm(Owner)
{
}
Ссылается на ошибки в главной форме:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef tile_mapH
#define tile_mapH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include .............
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
........................
private:
public:
ExtImage**i_tile;
ExtImage*base;
int TS;
int map_pos_x;
int map_pos_y;
int map_size_x;
int ..........
ExtImage**i_tile;
ExtImage*base;

[BCC32 Error] tile_map.h(48): E2303 Type name expected
[BCC32 Error] tile_map.h(48): E2139 Declaration missing ;
[BCC32 Error] tile_map.h(49): E2303 Type name expected
[BCC32 Error] tile_map.h(49): E2238 Multiple declaration for 'TForm1::ExtImage'
[BCC32 Error] tile_map.h(48): E2344 Earlier declaration of 'TForm1::ExtImage'
[BCC32 Error] tile_map.h(49): E2139 Declaration missing ;
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
18.10.2009, 13:46
Ничего удивительного. Когда инклюдится h файл в другую форму, та ничего не знает о написанных классах.
Где то ты напорол с include. а может быть тебе стоит обернуть весь код в myclasses.cpp в
C++
1
2
3
4
#ifndef MYCLASSES_CPP
#define MYCLASSES_CPP
...//тут весь код из myclasses.cpp
#endif
Правда, это может и поможет с multiple declaration, но не поможет с тем, что класс не определен. Нужно смотреть на все include в cpp и h файлах, и как они друг на друга ссылаются.
0
Задающий вопросы (%
 Аватар для KTYJIX
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
19.10.2009, 23:40  [ТС]
Как мне лучше организовать библиотеку объектов игры(таилы,предметы,и.т.д)?

Отака помнишь как у тебя была организована библиотека таилов для твоего редактора карт?
Подойдёт ли нам такая,табличная система,или надо что то ещё придумывать?
Изображения
 
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
20.10.2009, 14:45
Думаю подойдет.
Ты особо не заморачивай себе этим голову.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.10.2009, 14:45
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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