Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];

Вниз

Что-то плохое происходит... :(   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.055 c
2-1136734458
BiggieSmalls
2006-01-08 18:34
2006.01.29
Скрытый сисменый файл


2-1136824870
ZeFiR
2006-01-09 19:41
2006.01.29
Как узнать, запустилась ли программа впервые?


15-1136609923
БарЛог
2006-01-07 07:58
2006.01.29
Коаксильный кабель


6-1129884918
Максим
2005-10-21 12:55
2006.01.29
Отправка электронной почты


15-1136505507
BiggieSmalls
2006-01-06 02:58
2006.01.29
Еще вопрос по серийному номеру тома





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский