Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.046 c
15-1135334283
12DFBDD
2005-12-23 13:38
2006.01.29
ДКОИ он же EBCDIC


2-1136725283
VeB
2006-01-08 16:01
2006.01.29
HTML ссылка


15-1136745588
VirEx
2006-01-08 21:39
2006.01.29
<![CDATA[<


2-1135596187
kukushka-Q
2005-12-26 14:23
2006.01.29
Перестает работать MS Access база с dll на Delphi на другом компе


15-1136785963
begin...end
2006-01-09 08:52
2006.01.29
С Днём рождения! 9 января




   Наверх