Текущий архив: 2006.01.29;
Скачать: CL | DM;
Вниз
Что-то плохое происходит... :( Найти похожие ветки
← →
Malkavian (2005-08-17 21:18) [0]Добрый день!
Переделываю исходники joffa - аркадной игрушки. Она исользует DelphiX.
Спрайты там размера 32х32. Мне нужно их немного увеличить. Сделал 128х128. Размеры тайлов (земля и прочие поверхности) - остались неизменными - 32х32
До этого момента - все ОК. Проблемы начинаются в процедуре обсчета маски тайлов - тайл может быть "не под самый край" - а неровный. Для этого там используется процедура создания маски.
Type hubba = Array[0..1] Of byte;
Procedure TMainForm.calcbmask(imageno: integer);
Var p, xx, yy : integer;
d : ^hubba;
Begin
For p := 0 To dximagelist1.Items[imageno].PatternCount - 1 Do
Begin
For yy := 0 To 31 Do
Begin
d := DXImageList1.Items[imageno].Picture.Bitmap.ScanLine[yy + (p Shr 4) Shl 4];
For xx := 0 To 31 Do
If (d[(xx + (p Mod 32) Shl 5) * 3 + 2] = 255) And (d[(xx + (p Mod 32) Shl 5) * 3 + 1] = 0) And (d[(xx + (p Mod 32) Shl 5) * 3] = 0) Or
(d[(xx + (p Mod 32) Shl 5) * 3 + 2] = 0) And (d[(xx + (p Mod 32) Shl 5) * 3 + 1] = 0) And (d[(xx + (p Mod 32) Shl 5) * 3] = 255) Then
Begin
bmask[p, xx, yy] := true;
End Else bmask[p, xx, yy] := false;
End;
End;
End;
Если все запускать в таком виде как оно есть - спрайты (игрок) - 128х128 а тайлы(земля и прочие грибочки) 32х32 - алгоритм не отрабытывает.
Поэтом в цикле я меняю yy и xx от 0 до 127.
ЗДЕСЬ и выплывет мрачный глюк - игра вылетает с ошибкой :(
Пробую менять Type hubba = Array[0..1] Of byte; на Type hubba = Array[0..1] Of word; - та же ошибка.
ОГРОМНАЯ ПРОСЬБА - помогите пожйлуйста - бьюсь над этим неделю - ничего толкового не выходит :(
Сами исходники joffa лежат тут:
http://delphigfx.mastak.ru/gameproject/joffa/code.rar (код)
http://delphigfx.mastak.ru/gameproject/joffa/res.rar (ресурсы)
← →
Malkavian (2005-08-18 10:49) [1]up
← →
Sapersky (2005-08-18 14:25) [2]Если спрайты разного размера, нужно передавать размеры в процедуру, а дальше... дальше... проще заново написать, чем в таком коде разбираться.
Ну, могу предположить, что размеры спрайта нужно вписать не только в for, но и в выражения вроде (p Mod 32). А может, и shl нужно другое ставить (shl 5 это * 32). А может, и не нужно.
Страницы: 1 вся ветка
Текущий архив: 2006.01.29;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.036 c