Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы новичка 
:(
    Опции темы
Никто
Дата 21.3.2006, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Здрасьте.Я решил написать игру,но у меня появилось несколько вопросов.Я недано занялся C++,поэтому кому-то из вас мои вопросы могут показаться детскими.Поэтому очень не критикуйте.
Почему картинки для спрайтов берутся в формате bmp?
Почему форма не открывается из моего сохраненного проекта?
Как центрировать спрайт внизу экрана?
Возможно открыть exe с помощью Builder?
Как сделать полупрозрачный спрайт?
Какую библиотеку надо использовать при рисовании двухмерных спрайтов?
--------------------
   
PM MAIL   Вверх
Nemesis
Дата 22.3.2006, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



Цитата

Почему картинки для спрайтов берутся в формате bmp?

А действительно почему? Для спрайтов можно брать какой угодно формат картинок, главное чтобы с ним было удобно работать и чтобы он был более сжатым и компактным. Вот с bmp - удобно работать, а компактность к нему мало применима. Обычно для спрайтов используют, к примеру, png-формат или же вообще свой написаный, что гораздо лучше.

Цитата

Почему форма не открывается из моего сохраненного проекта?

Не совсем понимаю... Имеется в виду в режиме конструктора? Тогда может ты ее закрыл? Переключится на форму можно F12(переключение между формой и Unit`ом), либо Shift+F12(показать определенную форму).

Цитата

Как центрировать спрайт внизу экрана?

Центрировать по горизонтали? Тогда вот так можно:
пусть Width и Heigth - ширина и высота нашего экрана, а spriteW и spriteH - ширина и высота спрайта, тогда чтобы вывести спрайт снизу делаем вывод в точке (x,y), где

y = Height - spriteH; // выводим снизу экрана
x = (Width - spriteW)/2; // центруем по горизонтали

предполагается, что система координат Windows`ская, т.е. ось у направлена сверху вниз, а х - слева направо. И что привязка к спрайту осуществляется верхней левой точкой.

Цитата

Возможно открыть exe с помощью Builder?

Нет, кода в синтаксисе C++ ты не увидишь. Можешь конечно декомпилировать и посмотреть ассемблеровский код, хотя сейчас уже есть средства, которые переводят из асма в С++, но с ними можно замучаться. А чисто в Builder не посмотришь.

Цитата

Как сделать полупрозрачный спрайт?

Можно его таким сохранить. А если в результате программы надо сделать из непрозрачного в полу- и полностью прозрачный, нужно прибегать к умным алгоритмам.

Цитата

Какую библиотеку надо использовать при рисовании двухмерных спрайтов?

Смотря какого качетва ты хочешь и производительности. А вообще начиная от WinGDI и заканчивая OpenGL и DirectX.
--------------------
PM MAIL   Вверх
Никто
Дата 22.3.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Спасибо большое.С выводом формы я разобрался,просто глюк какой-то был.
Цитата

Центрировать по горизонтали? Тогда вот так можно:
пусть Width и Heigth - ширина и высота нашего экрана, а spriteW и spriteH - ширина и высота спрайта, тогда чтобы вывести спрайт снизу делаем вывод в точке (x,y), где

y = Height - spriteH; // выводим снизу экрана
x = (Width - spriteW)/2; // центруем по горизонтали

предполагается, что система координат Windows`ская, т.е. ось у направлена сверху вниз, а х - слева направо. И что привязка к спрайту осуществляется верхней левой точкой.

А как использовать Center()?
Цитата

Можно его таким сохранить. А если в результате программы надо сделать из непрозрачного в полу- и полностью прозрачный, нужно прибегать к умным алгоритмам.

В смысле в Фотошопе?
--------------------
   
PM MAIL   Вверх
Nemesis
Дата 22.3.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



Цитата

А как использовать Center()?


Если ты имеешь в виду у компонента Image в Builder`е, то есть такое properties, которое если установлено в true, то в качестве точки привязки берется центр изображения, если же false, то точка привязки есть левый верхний угол (то что я подразумевал выше),
по умолчанию Center = false;

Цитата

В смысле в Фотошопе?

Да, просто сохраняешь в Фотошопе картинку с нужной степенью прозрачности.
--------------------
PM MAIL   Вверх
Никто
Дата 21.4.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Есть еще один вопрос.Я застрял со стокновениями.Дело в том,что я могу сделать проверку для двух предметов,со всеми дальнейшими следствиями.А что,если таких предметов много,то это придется для каждой пары проверку делать?Или неправильно.И еще.На больших скоростях,когда скорость доходит до 50 или 100 пикселов.На пути может стоять преграда.Но в таком случае,например,пуля,просто пройдет через эту стенку.Какое здесь решение.И как делать уровни-на каждый уровень  нужен класс или своя форма? 
--------------------
   
PM MAIL   Вверх
_hunter
Дата 21.4.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



насчет проверки -- таки для всех пар проверку делать нужно. в чем проблема?
насчет пробития -- считай импульс тела, храни где-то информация о хрупкости преграды, и тупо делаем проверку больше импульс этой "хрупкости" или нет (это если серьезную физику не вносить). 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Никто
Дата 22.4.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата

насчет пробития -- считай импульс тела, храни где-то информация о хрупкости преграды, и тупо делаем проверку больше импульс этой "хрупкости" или нет (это если серьезную физику не вносить). 

Я не о том.Я имею в виду,что пуля двигается с большой скоростью и просто не попадает в стенку.Потому что стенка может стоять между ее шагами.Напомню,что игра 2D. 
--------------------
   
PM MAIL   Вверх
Thetik
Дата 22.4.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 22.4.2006

Репутация: -1
Всего: нет



Привет... Пожалуйста,помогите кто-нибудь. Меня просто жизнь сильно ударила о сложный предмет прогр., а я в нем вообще "никак". Может это и глупо, но я не могу перевести данные из типа AnsiString в char**. Огромное спасибо(заранее). 
PM MAIL   Вверх
Никто
Дата 22.4.2006, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата(Thetik @ 22.4.2006,  18:21)
Привет... Пожалуйста,помогите кто-нибудь. Меня просто жизнь сильно ударила о сложный предмет прогр., а я в нем вообще "никак". Может это и глупо, но я не могу перевести данные из типа AnsiString в char**. Огромное спасибо(заранее).

Это почти в каждом справочнике написано.
char* __fastcall c_str() const;

   E.g.: char a[10];
         AnsiString b="CBuilder";
         strcpy(a, b.c_str()); 
--------------------
   
PM MAIL   Вверх
Nemesis
Дата 22.4.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



Цитата

Я не о том.Я имею в виду,что пуля двигается с большой скоростью и просто не попадает в стенку.Потому что стенка может стоять между ее шагами.Напомню,что игра 2D. 

Придется делать промежуточные расчеты, т.е. если у пули инкримент скажем S=S0+V*1(sec);, то придется проверять еще и S=S0+V/2, т.е. смотреть что будет ровно на середине движения, если скажем препятствие, то нужно будет удариться об стенку. 

Цитата

Привет... Пожалуйста,помогите кто-нибудь. Меня просто жизнь сильно ударила о сложный предмет прогр., а я в нем вообще "никак". Может это и глупо, но я не могу перевести данные из типа AnsiString в char**. Огромное спасибо(заранее). 


AnsiString str = "hello";
char *ch = str.c_str(); 
--------------------
PM MAIL   Вверх
Никто
Дата 22.4.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата

Придется делать промежуточные расчеты, т.е. если у пули инкримент скажем S=S0+V*1(sec);, то придется проверять еще и S=S0+V/2, т.е. смотреть что будет ровно на середине движения, если скажем препятствие, то нужно будет удариться об стенку.

Спасибо,попробую. 
--------------------
   
PM MAIL   Вверх
Thetik
Дата 23.4.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Thetik
Дата 23.4.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 22.4.2006

Репутация: -1
Всего: нет



...................................................................................................................................................                                                                            
PM MAIL   Вверх
Nemesis
Дата 23.4.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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. 
--------------------
PM MAIL   Вверх
Thetik
Дата 24.4.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 22.4.2006

Репутация: -1
Всего: нет



Ой спасибо милый человек! Только бы работало, надеюсь у меня получится... 
PM MAIL   Вверх
Никто
Дата 25.4.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Какое значение таймера следует выбирать. 
--------------------
   
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.