Вверх ↑
Этот топик читают: Гость
Ответов: 7
Рейтинг: 1
#1: 2010-06-06 08:41:40 ЛС | профиль | цитата
Я вот тут пытался разобраться с HiAsm и вроде по немногу получалось, а сегодня открыл то что сделал и не фига не работает
Проблем сразу несколько
1. с компонентом MathParse. цель высчитывать направление от спрайта к указателю мыши(вылетает сразу после запуска или после перемещения мыши). Удалив из общей схемы части которые к этому блоку не относятся MathParse нормально работает а в обшей схеме сразу после запуска выдаёт ошибку то в позиции 22 то в 0 и иногда в 4 (в прилагаемом архиве этот блок отельно скопирован в файл test)
2. Столкновение спрайтов. до сегодняшнего дня тоже нормально было а теперь постоянно выдают все спрайты что сталкиваются со спрайтом "-16". Как вобще может быть минус шестнадцатый спрайт?
http://rapidshare.com/files/395771693/test.rar
Далее пару вопросов.
Выстрелы организовал(частично взял из примера на этом форуме) с помощью контейнера PolymorphMulti, после взрыва спрайт снаряда удаляется а сам контейнер надо удалять из памяти? если да то как именно, ведь одновременно может лететь несколько снарядов.
Как работает массив спрайтов GE_SpriteArray? разобратся не смог так как при добавлении его эксешник просто не запускается.
И это пока не очень важно, если я хочу сделать карту больше разрешения экрана как осуществить её смешение чтобы управляемый обект(в данном случае танк) находился всегда в поле видимости?

З.Ы. если кому не лень разясните пожалуйста по подробнее и если можно с примерами, я не программист. Заранее спасибо
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#2: 2010-06-06 12:11:06 ЛС | профиль | цитата
Макс писал(а):
http://rapidshare.com/files/395771693/test.rar

У меня динамические IP и пишет, что с моего адреса уже скачивается, хотя я ничего не качаю, это раз
Для таких целей служит Файлообмен (ссылка есть вверху страницы форума), это два
Судя по размеру архива, ты впихнул в него exe (если конечно это не спрайты), этого делать не стоит, давай только схему, это три
Ну, пожалуй все пока что
------------ Дoбавленo в 12.11:
Ах, да, и еще ты разделом ошибся, вам в Пакет Windows->Help
карма: 10
0
Ответов: 7
Рейтинг: 1
#3: 2010-06-06 19:43:34 ЛС | профиль | цитата
У меня тоже динамический, лечится отключением интернета на секунду.
Я на файлообмен не могу залить пишит "Недостаточное количество оставленных сообщений"
В архиве только две схемки.
вес из за спрайтов, я не нашок как вращять спрайты пришлось врашение в виде анимации использовать.
И ещо забыл сразу написать как заблокировать движение по горизонтали?
карма: 0

0
Ответов: 5446
Рейтинг: 323
#4: 2010-06-06 22:46:40 ЛС | профиль | цитата
Макс, твой архив залил на файлообмен: клац.
карма: 1

0
Ответов: 7
Рейтинг: 1
#5: 2010-06-08 01:09:37 ЛС | профиль | цитата
Всем лень проверить или не известно что там не правельно?

ЗЫ. iarspider спасибо что перезалил сюда.
карма: 0

0
Ответов: 2236
Рейтинг: 676
#6: 2010-06-08 02:34:05 ЛС | профиль | цитата
1. Ошибку получить не удалось.
2. Где у тебя выдает -16?
3. PolymorphMulti для пули не лучший вариант (пробуй GE_SpriteArray).
4. Где твоя проба GE_SpriteArray?
5. Ты для каждого блока стены будешь делать отдельный GE_Sprite?(см. 3)
6. У тебя танк по диагонали ездит быстрей, так и задумано?
7. Какое движение ты хочешь заблакировать по горизонтали?
8. При выстреле и быстрым вращением башни снаряды летят боком.
карма: 11

0
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2010-06-08 02:39:38 ЛС | профиль | цитата
1. никаких проблем со схемами не замечано (используемый компилятор - Delphi)
2. не удалось получить столкновение с -16м спрайтом.

Макс писал(а):
Выстрелы организовал(частично взял из примера на этом форуме) с помощью контейнера PolymorphMulti, после взрыва спрайт снаряда удаляется а сам контейнер надо удалять из памяти? если да то как именно, ведь одновременно может лететь несколько снарядов.

использовать надо GE_SpriteArray. Удаление спрайта и контейнера осуществляется после вызова метода doDestroy

Макс писал(а):
Как работает массив спрайтов GE_SpriteArray? разобратся не смог так как при добавлении его эксешник просто не запускается.

была ли указана GameScene контейнера и каждого спрайта внутри него? Без заполнения этих св-тв элемент работать не может.

Макс писал(а):
И это пока не очень важно, если я хочу сделать карту больше разрешения экрана как осуществить её смешение чтобы управляемый обект(в данном случае танк) находился всегда в поле видимости?

перемещать вместо танка объект фона(Fon) и объект уровня(Pole)
карма: 27
0
Ответов: 7
Рейтинг: 1
#8: 2010-06-08 03:36:22 ЛС | профиль | цитата
.Программа вылетает если быстро провести над формой мышкой. (полностью переустановил HiAsm и поставил другой Delphi результат точно такойже)
.Ну вот скрин точки onHitХ и onHitY элемента GE_Sprite Корпуса выдают -16 при этом танк просто буксует на месте. и снаряд во время выстрела выдаёт тоже -16 и тутже над танком взрывается, а если убрать уничтожение то долетая до какого дибудь спрайта выдаёт его ID, но следующий при выстреле опять выдаёт -16.

.Я хотел заблокировать движение по диагонали, торопился и написал не то


З.Ы. а сколько сообщений надо оставить чтобы появилась возможность сюда заливать вайлы?
карма: 0

0
Ответов: 2236
Рейтинг: 676
#9: 2010-06-08 11:33:46 ЛС | профиль | цитата
Макс, как минимум у меня нет твоего файла 2.txt, смотря на твой скриншот у тебя всетаки он загрузается в GE_GridSpace. Возможно ты еще что забыл, вот у нас и работает.
Твои спрайты залил суда:http://hiasm.com/forum_serv.php?q=56&id=1501 указывай эту ссылку и выкладывай схему без элемента GE_SpriteCollection.
Вот тебе танк без движения по диагонали и пули в GE_SpriteArray: code_18746.txt Для работы схемы вставьте спрайты (ссылку см. выше)
карма: 11

0
файлы: 1code_18746.txt [19KB] [368]
Ответов: 7
Рейтинг: 1
#10: 2010-06-09 01:44:55 ЛС | профиль | цитата
Огромное спасибо!
2.txt забыл засунуть, в нём и была проблема, -16 это был пробел. Я в место нулей пробелы поставил думал разници не будет.

Как получить индекс GE_SpriteArray? и почему ##delete ##clear всё останавливают.

Add(MainForm,13301909,98,98)
{
Width=1215
Height=920
}
Add(PaintBox,2704093,371,42)
{
Width=705
Height=517
Align=5
link(onBeforeDraw,14973421:doDraw,[(417,48)(417,79)(359,79)(359,90)])
}
Add(GE_Scene,14973421,371,84)
{
Name="Main"
link(Bitmap,2704093:Bitmap,[])
}
Add(Timer,5882929,238,42)
{
Interval=30
link(onTimer,8125522:doEvent1,[])
}
Add(MultiElementEx,89113,427,140)
{
Mode=1
}
BEGIN_SDK
Add(EditMultiEx,16144705,21,21)
{
WorkCount=#5:##add|8:##delete|7:##clear|
VarCount=#7:##count|7:##index|8:##handle|0:|
Width=503
Height=382
Point(##add)
Point(##count)
Point(##index)
Point(##handle)
Point(##delete)
Point(##clear)
}
Add(GE_Sprite,12640413,133,147)
{
Name="Blok0"
GameScene="parent.Main"
X=100
Y=100
Width=50
Height=50
kX=1
kY=1
Sprites="parent.sprites"
SpriteName="Blok0"
Frames=1
}
END_SDK
Add(Hub,8125522,280,42)
{
OutCount=3
link(onEvent1,2704093:doRefresh,[])
link(onEvent2,14973421:doProcess,[(332,55)(332,97)])
link(onEvent3,731927:doEvent1,[(294,244)])
}
Add(Label,2032736,399,238)
{
Left=140
Top=30
link(Text,89113:##count,[(405,226)(433,226)])
}
Add(Label,1028156,434,280)
{
Left=140
Top=55
link(Text,89113:##index,[])
}
Add(Label,191848,469,322)
{
Left=140
Top=80
link(Text,89113:##handle,[(475,269)(447,269)])
}
Add(Hub,10229948,364,238)
{
OutCount=3
link(onEvent1,2032736:doText,[])
link(onEvent2,1028156:doText,[(392,251)(392,286)])
link(onEvent3,191848:doText,[(383,258)(383,328)])
}
Add(GE_SpriteArray,7157056,504,364)
{
Selected="base"
GameScene="Main"
}
BEGIN_SDK
Add(EditPolyMulti,1482915,21,21)
{
WorkCount=#5:##add|8:##delete|7:##clear|
VarCount=#7:##count|7:##index|8:##handle|0:|
Point(##add)
Point(##count)
Point(##index)
Point(##handle)
Point(##delete)
Point(##clear)
}
Add(GE_Sprite,12640413,112,84)
{
Name="Blok0"
GameScene="parent.Main"
X=350
Y=100
Width=50
Height=50
kX=1
kY=1
Sprites="parent.sprites"
SpriteName="Blok0"
Frames=1
}
END_SDK
Add(Hub,731927,301,238)
{
link(onEvent1,10229948:doEvent1,[])
link(onEvent2,6571461:doEvent1,[(327,251)(327,468)])
}
Add(Label,1599661,539,546)
{
Left=395
Top=85
link(Text,7157056:##handle,[(545,478)(524,478)])
}
Add(Label,9820672,504,504)
{
Left=395
Top=60
link(Text,7157056:##index,[(510,457)(517,457)])
}
Add(Label,16307092,469,462)
{
Left=395
Top=35
link(Text,7157056:##count,[(475,452)(510,452)])
}
Add(Hub,6571461,427,462)
{
OutCount=3
link(onEvent1,16307092:doText,[])
link(onEvent2,9820672:doText,[(462,475)(462,510)])
link(onEvent3,1599661:doText,[(455,482)(455,552)])
}
Add(Timer,2442985,217,140)
{
Interval=2000
link(onTimer,799674:doEvent1,[])
}
Add(Hub,799674,259,140)
{
link(onEvent1,89113:##add,[])
link(onEvent2,4798892:doData,[(334,153)(334,370)(334,370)])
}
Add(DoData,4798892,406,364)
{
Data=String(base)
link(onEventData,7157056:##add,[])
}
Add(Button,5342384,378,147)
{
Left=190
Top=5
Caption="##delete"
Data=Integer(1)
link(onClick,89113:##delete,[])
}
Add(Button,10145269,455,371)
{
Left=435
Top=5
Caption="##delete"
Data=Integer(1)
link(onClick,7157056:##delete,[])
}
Add(Button,16016021,378,182)
{
Left=190
Top=25
Caption="##clear"
link(onClick,89113:##clear,[(418,188)(418,160)])
}
Add(Button,10872601,455,406)
{
Left=435
Top=25
Caption="##clear"
link(onClick,7157056:##clear,[(495,412)(495,384)])
}
Add(GE_Background,2594805,63,196)
{
Name="Fon"
GameScene="Main"
Width=1000
Height=1000
ID=2
Sprites="sprites"
SpriteName="Fon"
}

Ещё маленький вопрос: Можно ли каким нибудь способом устанавливать Z-уровень спрайтов кроме как в контекстном меню "Передний план" и "Задний план"?
карма: 0

0
Ответов: 2236
Рейтинг: 676
#11: 2010-06-09 10:33:46 ЛС | профиль | цитата
1. Получение индекса смотри в примере (при навидении курсора, ЛКМ удаляет).
2. ##delete и ##clear наверное не работают, я обходился без них смотри пример.
3. Z-уровень наверное поменять не получиться.
Возможно по п.2 и 3 я не прав, Dilma поправит если не так.
Пример: code_18764.txt Добавить элемент с спрайтами GE_SpriteCollection (ссылка выше)
Я тоже не программист, но пока делал всякие игры на HiAsm взял за правило не использовать без надобности больше чем один таймер.
P.S. "Огромное спасибо!" можно выразить нажав на + справа от рейтинга

карма: 11

1
файлы: 1code_18764.txt [5KB] [249]
Голосовали:Макс
Администрация
Ответов: 15295
Рейтинг: 1519
#12: 2010-06-09 13:33:11 ЛС | профиль | цитата
Макс писал(а):
Можно ли каким нибудь способом устанавливать Z-уровень спрайтов кроме как в контекстном меню "Передний план" и "Задний план"?

а чем такой способ плох? или все же имеется ввиду установка во время работы приложения?

sla8a писал(а):
##delete и ##clear наверное не работают, я обходился без них смотри пример.

работают, но не удаляют информацию о спрайте со сцены. Для удаления нужно использовать только doDestroy у спрайта.
карма: 27
0
Ответов: 2236
Рейтинг: 676
#13: 2010-06-09 14:32:03 ЛС | профиль | цитата
Dilma писал(а):
##delete и ##clear работают, но не удаляют информацию о спрайте со сцены

Это надо понимать как то что мой пример правильный(удаление спрайта через ##select-->doDestroy)? Если нет то можно пример.
А Z-уровень возможно изменить у башни (поверх блоков)? (думаю это имел ввиду Макс)
Пример: code_18766.txt Добавить элемент с спрайтами GE_SpriteCollection (ссылка выше)
карма: 11

0
файлы: 1code_18766.txt [1.4KB] [260]
Администрация
Ответов: 15295
Рейтинг: 1519
#14: 2010-06-09 15:57:13 ЛС | профиль | цитата
sla8a писал(а):
Это надо понимать как то что мой пример правильный

да

sla8a писал(а):
А Z-уровень возможно изменить у башни (поверх блоков)?

во время выполнения приложения Z уровень определяется только порядком добавления спрайтов
карма: 27
0
Ответов: 7
Рейтинг: 1
#15: 2010-06-10 01:34:26 ЛС | профиль | цитата
Помните игру Battle City, пример от туда. Последними в сцене появляются танки и они ездиют под деревьями, вот и мне нужны спрайты которые всегда поверх всех других находятся
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)