![]() |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Посоны ну неужто никто не знает как сделать нормальный отскок мячика от палки которой управляешь? :(
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Угол падения равен углу отражения.
Что ещё надо? |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Наоботот. Угол отражения равен углу падения.
Насчет пинг-понга - в БМаксе в комплект поставки входят еще примеры, и там присутствует пинг-понг-без-физ-двига. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
В общем с горем по полам сделал, но щас не могу понять как получать противоположный угол. :) Сделал просто angle: -angle, но работает через раз, иногда шарик пролетает сквозь ракетку либо угол тупо ставится в "0/-0" и мячик без конца летает туда-сюда, а так же пробовал angle = -angle, выходит тоже самое. :( Подскажите плиз как надо. :-D |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Для избежания подобной ситуации прибегают к разного рода ухищрениям, как то : высчитывать угол отражения и менять его в зависимости от того, как далеко мяч столкнулся от центра платформы - наверно замечал, что если мяч сталкивается с самым краем платформы, то угол отражения становится очень острым. Еще можно учитывать скорость и направление движения платформы в момент столкновения, они тоже влияют на угол отражения.
Друг, это все элементарно делается векторами. Пользуйся -> Код:
Function Compare:Int(obj:Float2, withObj:Object) |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо, только как этот код использовать? Хотя бы семпл приложил. :)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Ну например нам нужно двигать точку, которая имеет скорость и направление.
Создаем 2 вектора : 1 - это сама точка ( вектор его координат ) 2 - это вектор скорости и направления. КОД: Код:
Graphics 1024, 768 |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Помогите проблемку решить. :)
Написал я парсер файлов для файлов с настройками. По дефолту все данные в String. И вот вопрос: как автоматом переводить данные под нужный тип данных ведь переменные могут быть и Int и Float? |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
есть же:
Код:
String.FromInt() где идёт тупо проверка на содержащиеся "лишние" символы. Для инта это минус и цифры от одного до девяти. Тут кроме тупого перебора строки пока не наткнёшься на "левый" символ ничего хитрого то и не придумаешь. Для флоата всё тоже самое только с точкой String.Find поможет найти точку. Главное перед проверкой на Int/Float делать Trim чтоб всякие переводы кареток да табуляторы убрать. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Вопрос.
Может кто подскажет (линком, функцией, библиотекой...) Есть квадратное изображение. Нужно его поворачивать на определенный угол, но относительно не центра или верх-лево, а, например, верх-право, низ-лево, низ-право. В принципе сделал через перенос координат, но если изображение с картинкой, то получается ерунда... Спасибо. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
SetImageHandle image,x,y
image - хендл вашей картинки x,y - координаты точки, относительно которой хотите вращать картинку. Учтите, после применения функции картинка будет рисоваться(!) также не с левого верхнего угла, а с тех координат, что вы указали. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо.
Но потом можно вернуть все на место....SetImageHandle Image,0,0 Плюс компенсировать по нужной оси размер картинки SetImageHandle Image,0,63 SetRotation(45) DrawImage (Image, х+200, y+64) ' +64 компенсируем SetRotation(0) SetImageHandle Image,0,0 Тогда еще вопрос. Отсчет ведется от 0 до ширины/высоты картинки -1, так? То есть, если нужно повернуть относительно угла верх-право картинку 64х64, тогда SetImageHandle Image,63,63 Правильно я думаю? |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
ЕМНИП, да, так как считаем от нуля.
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
а мне кажется, таки 64\64, ибо точка поворота будет у правого нижнего пикселя + нижнего правого угла. А вообще, полезно создать папку для "тестов" - и отлаживать там всякие спорные моменты (я так отлаживал шум перлина, астар, инверс.кинематику и прочее, очень помогает при написании верных рабочих формул\функций)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Так и сделал ))
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Вопрос.
Есть тайловое игровое поле - большое (1000х1000), когда я двигаюсь и его перерисовываю части изображения начинают как бы "дребезжать и смазываться"... 1. Можно ли как то это устранить, может синхронизацией какой то? 2. Может лучше давать перерисовывать только видимые тайлы , а не все поле? Спасибо. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Рисовать обязательно надо только видимые тайлы. Во-первых, какой смысл рисовать то, что мы не видим? Во-вторых, мало того, что это бесполезно, мы ещё и производительность теряем.
Измени Flip, на Flip(1), должно помочь. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо, попробую.
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Еще раз спасибо, все сделал, все получилось.
Тут возник такой вопрос. Есть главный файл В нем Код:
... Код:
Function CollisionsCheck() Параметр BulletCollided описан в Bullet.bmx Спасибо. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Поидее должно работать но к чему тут Import?
Код:
Include "Bullet.bmx" |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Емнип Import в BlitzMAX это как Include_once, добавляет только если ещё не было добавлено ранее.
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо, заработало. Поменял Import на Include.
/не опытен я еще :-)/ |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Вопрос.
А можно ли как-то узнать координаты точки в которой произошла коллизия? Я имею ввиду не координаты двух обьектов (это мы знаем), а именно координати пикселя где они с толкнулись. Спасибо. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Еще вопрос.:)
Проверяю столкновение. Вот такой вариант работает Код:
Local p:Object[] = CollideImage(BulletImage, BulletX, BulletY, 0, 1, 0) Код:
Local p:Object = CollideImage(BulletImage, BulletX, BulletY, 0, 1, 0) |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
в первом случае кастуешь указатель на объект к тайлу
во втором случае кастуешь указатель на коллекцию обьектов, что неверно, преобразовать тип не удалось, в результате указатель на TTile становится null и еще Цитата:
Цитата:
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Не подскажите, как можно свернуть окно приложения так, чтобы оно не отображалось на панели задач? Желательно также, чтобы в трее тоже не было видно.
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Назрели два вопроса. Буду признателен за помощь.
Первый. Каким образом можно узнать/отсчитывать отрезки времени. Например мне нужно выполнять некоторое действие скажем каждые 10, 15, 30 сек?... Второй. Есть тайл-изображение (32х32, png), есть другой тайл (32х32, png). Нужно обьеденить эти изображения (скажем методом "И"), то есть поверх первого нарисовать другое, и что бы результат действий записался вместо первого изображения. Можно как то это сделать?, а то сейчас просто рисую второе поверх первого, что не есть хорошо. Спасибо. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Код:
Global time=MilliSecs(), interval = 500 |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо за Первый вопрос, пробую.
Касательного второго. Это я понимаю. Проблема в том, что картинок слишком много. В принципе можно сформировать массив нужных картинок заранее (при старте программы), но тогда тоже нужно попиксельно? |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Вопрос по коллизиях.
Проверяю столкновение пули с мобом Код:
... Код:
... Проблема в том, что в переменной е оказывается Null Может неправильно обьявляю в CollideImage параметр id:Object ? |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Вы уверены, что вам нужно именно столкновение картинок?
Очень часто, хватает нахождения расстояния, или пересечения прямоугольников. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Ну хотелось бы сделать именно так.
У меня работает вариант с Масивом тайлов, но там это как бы статически (то есть масив создается в начале игры) и я делаю так: CollideImage(TileImage, TileX, TileY, 0, 0, 1, MapObj[i, j] ). А вот с мобами что-то не работает, не могу понять почему. Другими словами, я не могу узнать в какого конкретного моба из десятка я попал.... |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Насколько я понял, неправильно передаю пареметр id:Object
CollideImage(MobImage, x - xx, y - yy, 0, 0, 2, Object(MobImage)) Потому как в переменной р (p:Object[]) только тип TImage, а не сам обьект с соответствующими полями... |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Все. Как бы сделал. :-) Волшебное слово Self. /Забыл про него/
CollideImage(MobImage, x - xx, y - yy, 0, 0, 2, Self) |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Гм. Вот такой вопрос. (Пробую сграбить изображение с альфа каналом)
Вот так работает: Цитата:
Цитата:
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
во втором объяви z как Float\
и будет тебе щастье |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
Так я так и сделал. Код:
Local z,a:Float |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
в блитзмаксе так нельзя, первая переменная у тебя без типа (значит Int)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Да делал и так, и сяк... нефурычит. Ладно это оставим.
Такой вопрос возник. Есть ли стандартнаэ функция затемнения Картинки типа SetAlpha, но чтобы не прозрачность, а именно просто затемнение? Или самому нужно делать через SetColor? Спасибо. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Через сет колор, а что касается неработающего кода надо кроме того численные константы использовать правильного типа
Цитата:
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо. Понял.
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Функция FileTime() выдаёт некое значение Int. Как из него получить дату и время последнего изменения файла?
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
PHP код:
http://www.cplusplus.com/reference/ctime/strftime/ или http://php.net/manual/ru/function.strftime.php |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Метод в лоб. Не везде прокатит - веб сервер может дропнуть соединение из-за отсутствия юзер агента и прочих
Код:
Local lines:String = LoadString("http::forum.boolean.name") Код:
Global HttpHost:String = "forum.boolean.name" ' Именно хост. Без всяких там http и указания пути |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Как юзать шрифты в БлитзМаксе?
LoadFont есть, но это как вспомогательная функция. Сам шрифт это как я понял модуль brl.freetypefont? Загружаю свой шрифт, вывожу текст и возникают странные вещи. Выводим текст из переменной и с кириллицей все "ок". Выводим текст из файла и с кириллицей борода - каракули в стиле ansi юникода. При использовании utf-8 тоже самое только каракули другие. При этом текст из файла в дебаге в нормальной кодировке. Ради интереса скидываю русскоязычный текст из переменной в файл и в файле оказываются вообще непонятные символы. Текст "Автоматическая дверь" превращается в "2B><0B8G5A:0O 425@L". Так же с файловой системой лажа какая то. Хочу открыть директорию и получить список файлов. ReadDir (CurrentDir ()) возвращает хендл директории, но NextFile () уже ничего не возвращает. В общем как быть, |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
1. Шрифт: подключён ли нужный модуль?
Import brl.freetypefont Использование: Код:
Global fontText:TImageFont = LoadImageFont("data\fnt\fontText.ttf", 13) Требуется Import brl.textstream 3. Файлы: модули подключены? Import brl.stream Import brl.filesystem |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
LoadText (url:Object) Как это понимать? Почему url не String или TStream? И что передавать в этот параметр? :( надо наверно на манки переходить... |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
>> Все нужные модули подключены. Файлы в директории все равно не читает.
Путь содержит русские символы? Если да то увы, с русскими не пашет. >> LoadText (url:Object) Код:
Local text$ = LoadText("data.txt") Код:
Local text:String = LoadText("data.txt") там с файлами особо ничего не поделаешь, нет таких функций. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
Вот код из хелпа: Код:
' readdir.bmx Цитата:
Обидно, что потратил много времени на написание парсера и теперь надо все переделывать либо ставить кучу костылей и потом об них же в будущем спотыкаться... :( |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Да не должно костылей быть с файлами. У тебя БМакс новый? (хз может в каком-то билде была проблема)
1. Попробуй закомментировать подключение модулей, чтобы по дефолту подключались все, вдруг забыл какой-то. 2. Какую конкретно директорию ты пытаешься прочитать? Попробуй читать директорию из другого раздела диска, не из системного. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
1) Попробуй LoadDir()
2) FreeTypeFont - в топку. Есть мое решение шрифтов, более быстрое и с большими возможностями ( ищи в разделе "модули" ) |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
не актуально - проблема решена: http://forum.boolean.name/showthread...488#post280488
но архив у кого есть - можете передать? |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Не работают битовые операции как в Blitz3D.
Например: Print ($01 And $ff) = 1 (в Blitz3D) в BM Print ($01 And $ff) = 255 Тут другие команды работы с битами? Подскажите кто знает. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Цитата:
Or = | Xor = ~ |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо Randomize!
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Всем привет. 2 года назад изучал Blitz3D и с сетью проблем не возникало.Сейчас решил пощупать BlitzMax и не как не разберусь с сетью.
Помогити,напишите простой пример сервера и клиента с коментариями,что бы я смог понять от чего отталкиваться. пример: запущен сервер и клиент.Клиент говорит серверу что хочет кинуть игральный кубик.Сервер принемает запрос на бросание кубика и бросает его,а результат отправляет клиенту. Весь форум прочесал но точного понятия что к чему не нашел. Буду очень блогодарен. |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Код за тебя я думаю мало кто писать будет.
А вот помочь с конкретными проблемами - думаю сможем. Главное начни с простого, сделай два новых приложения, сервер и клиент (пустых), и создай сокет на сервере по порту, и соедени клиент с сервером. Далее, подумай как логически поддерживать несколько клиентов. Это чисто логика. Затем уже думай на счет игрового цикла на сервере и клиенте и синхронизации данных. Начни с простого, по чуток пиши, не спеши. Как будут проблемы, попробуй 5 раз по разному, если не получилось, иди выпей чаю, и снова по разному попробуй, 10 в этот раз. Ну если реально совсем ничего не выходит. То либо стоит бросить это дело (слабый вариант), либо попробовать еще 20 раз, и уж потом постить на форум конкретно сформулированный вопрос о том что и как не выходит, с конкретным кодом (не 100500 строк, а минимум, меньше - лучше), и описанием конкретной проблемы, что пробовал для решения и где думаешь проблема. По факту скажу, если ты начнешь следовать подобному методу в разработке как начинающий, то у тебя и вопросов по сути возникать не будет, т.к. ты просто будешь сам находить решение, получать опыт и т.п. Но если ты не будешь пытаться сам, то да, будут вопросы типа: "сделайте мне игру", или "сделайте мою домашнюю работу". |
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо за совет.Действительно, глаза хотят а руки боятся.Просто я думал, что можно простой сервер написать в строк 7,но видел здесь примерчик что он как то в Типах и все такое.Нет описания на русском операторов связаных с сетью,что бы понять что за что отвечает.Если бы было,мне бы стало проще.Хелп на английском,может у меня и версия BlitzMax-а низкая ( 1.45 ) Начну стараться и грызть науку.
|
Часовой пояс GMT +4, время: 10:52. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot