![]() |
|
![]() ![]() ![]() |
|
Никто |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Здрасьте.Я решил написать игру,но у меня появилось несколько вопросов.Я недано занялся C++,поэтому кому-то из вас мои вопросы могут показаться детскими.Поэтому очень не критикуйте.
Почему картинки для спрайтов берутся в формате bmp? Почему форма не открывается из моего сохраненного проекта? Как центрировать спрайт внизу экрана? Возможно открыть exe с помощью Builder? Как сделать полупрозрачный спрайт? Какую библиотеку надо использовать при рисовании двухмерных спрайтов? --------------------
|
|||
|
||||
Nemesis |
|
||||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 20.2.2005 Где: Москва Репутация: нет Всего: 5 |
А действительно почему? Для спрайтов можно брать какой угодно формат картинок, главное чтобы с ним было удобно работать и чтобы он был более сжатым и компактным. Вот с bmp - удобно работать, а компактность к нему мало применима. Обычно для спрайтов используют, к примеру, png-формат или же вообще свой написаный, что гораздо лучше.
Не совсем понимаю... Имеется в виду в режиме конструктора? Тогда может ты ее закрыл? Переключится на форму можно F12(переключение между формой и Unit`ом), либо Shift+F12(показать определенную форму).
Центрировать по горизонтали? Тогда вот так можно: пусть Width и Heigth - ширина и высота нашего экрана, а spriteW и spriteH - ширина и высота спрайта, тогда чтобы вывести спрайт снизу делаем вывод в точке (x,y), где y = Height - spriteH; // выводим снизу экрана x = (Width - spriteW)/2; // центруем по горизонтали предполагается, что система координат Windows`ская, т.е. ось у направлена сверху вниз, а х - слева направо. И что привязка к спрайту осуществляется верхней левой точкой.
Нет, кода в синтаксисе C++ ты не увидишь. Можешь конечно декомпилировать и посмотреть ассемблеровский код, хотя сейчас уже есть средства, которые переводят из асма в С++, но с ними можно замучаться. А чисто в Builder не посмотришь.
Можно его таким сохранить. А если в результате программы надо сделать из непрозрачного в полу- и полностью прозрачный, нужно прибегать к умным алгоритмам.
Смотря какого качетва ты хочешь и производительности. А вообще начиная от WinGDI и заканчивая OpenGL и DirectX. --------------------
|
||||||||||||
|
|||||||||||||
Никто |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Спасибо большое.С выводом формы я разобрался,просто глюк какой-то был.
А как использовать Center()?
В смысле в Фотошопе? --------------------
|
||||
|
|||||
Nemesis |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 20.2.2005 Где: Москва Репутация: нет Всего: 5 |
Если ты имеешь в виду у компонента Image в Builder`е, то есть такое properties, которое если установлено в true, то в качестве точки привязки берется центр изображения, если же false, то точка привязки есть левый верхний угол (то что я подразумевал выше), по умолчанию Center = false;
Да, просто сохраняешь в Фотошопе картинку с нужной степенью прозрачности. --------------------
|
||||
|
|||||
Никто |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Есть еще один вопрос.Я застрял со стокновениями.Дело в том,что я могу сделать проверку для двух предметов,со всеми дальнейшими следствиями.А что,если таких предметов много,то это придется для каждой пары проверку делать?Или неправильно.И еще.На больших скоростях,когда скорость доходит до 50 или 100 пикселов.На пути может стоять преграда.Но в таком случае,например,пуля,просто пройдет через эту стенку.Какое здесь решение.И как делать уровни-на каждый уровень нужен класс или своя форма?
--------------------
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
насчет проверки -- таки для всех пар проверку делать нужно. в чем проблема?
насчет пробития -- считай импульс тела, храни где-то информация о хрупкости преграды, и тупо делаем проверку больше импульс этой "хрупкости" или нет (это если серьезную физику не вносить). -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Никто |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Я не о том.Я имею в виду,что пуля двигается с большой скоростью и просто не попадает в стенку.Потому что стенка может стоять между ее шагами.Напомню,что игра 2D. --------------------
|
|||
|
||||
Thetik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 22.4.2006 Репутация: -1 Всего: нет |
Привет... Пожалуйста,помогите кто-нибудь. Меня просто жизнь сильно ударила о сложный предмет прогр., а я в нем вообще "никак". Может это и глупо, но я не могу перевести данные из типа AnsiString в char**. Огромное спасибо(заранее).
|
|||
|
||||
Никто |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Это почти в каждом справочнике написано. char* __fastcall c_str() const; E.g.: char a[10]; AnsiString b="CBuilder"; strcpy(a, b.c_str()); --------------------
|
|||
|
||||
Nemesis |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 20.2.2005 Где: Москва Репутация: нет Всего: 5 |
Придется делать промежуточные расчеты, т.е. если у пули инкримент скажем S=S0+V*1(sec);, то придется проверять еще и S=S0+V/2, т.е. смотреть что будет ровно на середине движения, если скажем препятствие, то нужно будет удариться об стенку.
AnsiString str = "hello"; char *ch = str.c_str(); --------------------
|
||||
|
|||||
Никто |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Спасибо,попробую. --------------------
|
|||
|
||||
Thetik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 22.4.2006 Репутация: -1 Всего: нет |
Cпасибо, но так[AnsiString str = "hello";char *ch = str.c_str(); ] он просто текст разбивает на буквы, а мне оказывается надо было немножко не то. Вобщем, мне дан список из нескольких слов и необходимо перевести его в двумерный массив, т.е. например X[a][b]=какая-то буква (где a-номер слова, b-номер буквы в слове).
Это сообщение отредактировал(а) Thetik - 23.4.2006, 09:58 |
|||
|
||||
Thetik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 22.4.2006 Репутация: -1 Всего: нет |
...................................................................................................................................................
|
|||
|
||||
Nemesis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 20.2.2005 Где: Москва Репутация: нет Всего: 5 |
Ну смотри, сначала находишь все пробелы - это кол-во слов в тексте(скажем N). Потом проходишься по каждому слову, и вычисляешь кол-во букв в каждом слове(Ni), потом выделяешь память под N элементов и Ni букв. Но можно и проще, сразу делаешь массив скажем array[100][10], т.е. под 100 слов по 10 букв в каждом и начинаешь его заполнять, впихиваешь буквы в array[0], находишь пробел - переключаешься на след array[1] и т.д. array[2] ... array[30]... используй
AnsiString str = "hello"; char *ch = str.c_str(); т.к. будешь анализировать именно ch. --------------------
|
|||
|
||||
Thetik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 22.4.2006 Репутация: -1 Всего: нет |
Ой спасибо милый человек! Только бы работало, надеюсь у меня получится...
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |