Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
Ответ: игра по мотивам ККИ "Берсерк"
Живые, то есть. Только вот с идеями плохо. В последнем классе для отрисовки используется отдельный поток, синхронизированный с классом Display, т.е. по идее лучше сделать уже нельзя. Единственное, что могу предположить, это что ты обновляешь экран чаще, чем в принципе может JVM Нокии. Попробуй ввести задержку побольше для тестов.
PS: на моторолах и сонериках все идет красиво.
Сообщений: 134
Написано 10 полезных сообщений (для 20 пользователей)
Re: игра по мотивам ККИ "Берсерк"
delay?
Ладно фиг с этой серией 40) Потом какнить.
Щас вот другая проблема нашлась. Точнее пример мне нужен по работе с файлами ресурса. Задача такая: есть текстовый файл с бзой карт (да я хочу зделать именно так) с примерно таким содержанием:
а в программе хочется читать при старте программы параметры для карт из этого файла
примерно какнить так
var
card_name:array .. of string;
card_portret:array .. of image
card_live,card_damage,card_osob,card_regeneration: array .. of integer
for i:= 1 to количество карт указаное в файле do
begin
card_portret[i]:=loadimge(из файла)
card_live[i]:=из файлаж
card_damage[i]:=из файла
card_regeneration[i]:= из файла есл оно упомянуто
card_osob[i]:= из файла есл оно упомянуто
end;
Как првильно такое написать чтобы работало)) может есть какие нить примеры??
Последний раз редактировалось aureli0, 18.02.2008 в 00:18.
Сообщений: 134
Написано 10 полезных сообщений (для 20 пользователей)
Re: игра по мотивам ККИ "Берсерк"
Поиск на форуме ничего не дал(( Примерно что то похожее накидал мож кому пригодится:
программа смотрит тестовый файл с таким содержанием:
40;300;500;600;
и получает из файла 4 переменные, которые потом складывает.
var
res:resource;
line,symbol:string;
i,num,p1,p2,p3,p4,summa:integer;
var_array:array [0..3] of string;
begin
res := OpenResource('/222.txt');
line:= ReadLine(res);//считываем строку с переменными из файла ресурса
CloseResource(res);
num:=0;
repeat
for i:= 0 to Length(line) do
begin
if (num<=3) then
begin
symbol:=getchar(line,i);//считываем посимвольно ранее считаную строку
if (symbol<>';') then var_array[num]:=var_array[num]+symbol;//временная переменная складывается из текста строки
DrawText(var_array[num],0,20*num);//выводим процесс обработки
repaint;
delay(100);
if (symbol=';') then num:=num+1;//Если разделитель то переключаемся к следущей элементу массива временных переменных
end;
end;
until num>3;
//обрабатываем получая необходимые переменные из временноо массива переменных
Сообщений: 134
Написано 10 полезных сообщений (для 20 пользователей)
Re: игра по мотивам ККИ "Берсерк"
Теперь пытаюсь намутить каким образом определить сколько букв в 1 строчке влезет на экран мобилы. А то перенос текста у меня работает както кривовато-через подгоны. Что можно зделать????
Сообщений: 134
Написано 10 полезных сообщений (для 20 пользователей)
Re: игра по мотивам ККИ "Берсерк"
Вот решил выложить последние исходники по "легендам Руси" на сегодняшний день. Глюкавый. Кривой. Но рабочий. Не знаю что с ними можно зделать. На данный момент я на основе этой "поделки" заново перелопачиваю весь код. И решил занятся реализацией первого сэта игры
Сообщений: 134
Написано 10 полезных сообщений (для 20 пользователей)
Re: игра по мотивам ККИ "Берсерк"
не получается
давно не брался за код, за это время у меня родилась дочка) Совсем не до компа стало. Выкладываю последние наработки. Точно не помню что было сделано, из того что помню - был почищен код, добавлены летающие. База до сих пор берется из отдельного модуля-как сделать чтение базы вне мидлета я так и не понял. Потом произошло еще одно радостное событие-я переехал жить в линукс) решил занятся изучением СИ) и переписываю берсерк уже в линух, используя связки SDL+OpenGL. Начал с нуля - но уже готов полностью рабочий магазин. Как будет чтото цельное - выложу...
Сообщений: 74
Написано 8 полезных сообщений (для 12 пользователей)
Ответ: игра по мотивам ККИ "Берсерк"
aureli0, попробуй сделать версию без Lib_game, не в обиду Pilgrim'у, её проблематично использовать в более менее сложных играх.
А на счёт чтения базы могу посоветовать код из своего Сталкера, он конешно требует переделки, но всё же лучше, чем посимвольное чтение))
делал для чтения внутримидлетского xml-файла, но думаю переделать
не сложно будет. Мой вариант считывает любой параметр с текущей строки txt ресурса Res (пример параметра CardName="Мразень", пример считывания name:=reads('CardName'); ), плюс любую строку можно интерпретировать в мидлете как условие или команду(но это надо писать самому).
////////////////////////////////////////////////
/// Требуются 2 глобальных переменных res - для ресурса, и txt - для текущей строки.
//////////////////////////////////////////////////////////////////////////////
Function readI(str:string):integer; // Считывает int-значение параметра str(напр. 'width', 'cost' и др.)
var t:string;
begin
t:=copy(txt,pos(txt,str)+length(str)+2,length(txt));
readi:=stringtointeger(copy(t,0,pos(t,'"')));
end;
Function readS(str:string):string; // считывает значение параметра str как текст
var t:string;
begin
t:=copy(txt,pos(txt,str)+length(str)+2,length(txt));
reads:=copy(t,0,pos(t,'"'));
end;
Procedure skip(n:integer); // пропускает n-1 строк и считывает строку n
var i : integer;
begin
for i:=1 to n do txt:=readline(res);
end;
/////////////// Поиск строки сначала файла
Procedure refind(str:string);
begin
closeresource(res);
res:=openresource('/'+mapname+'.tmx');
repeat
txt:=readline(res);
until(pos(txt,str)<>-1) or (txt='</map>');
if txt='</map>' then txt:='"0"';
end;
/////////////// Поиск строки начиная с текущей.
Procedure find(str:string);
begin
repeat
txt:=readline(res);
until(pos(txt,str)<>-1) or (txt='</map>');
if txt='</map>' then txt:='"0"';
end;
//////////////////////////////////////////////////////
// это пример использования перечисленных функций
/////////////// Загрузка карты mapname
Procedure mapload;
var dat,load,otyp : string; i : integer;
begin
res:=openresource('/'+mapname+'.tmx');
skip(3);
mx:=readi('width'); my:=readi('height');
tw:=readi('tilewidth'); th:=readi('tileheight');
skip(9);
dat:=decode_string(copy(txt,3,length(txt)));
i:=0;
repeat
map[(i)div my+1,(i)mod my+1]:=ord(GetChar(dat,i*4));
i:=i+1;
until (i=mx*my);
skip(4);i:=0;
repeat
i:=i+1;
objname[i]:=reads('name');
otype[i]:=reads('type');
ox[i]:=readi(' x')-tw;
oy[i]:=readi(' y')-th;
if (otype[i]='anim') then
begin
skip(2);
repeat
if reads('name')='frames' then frm[getnum(objname[i])]:=readi('value');
if reads('name')='load' then load:=reads('value');
if reads('name')='mode' then mode[getnum(objname[i])]:=reads('value');
if reads('name')='type' then otyp:=reads('value');
skip(1);
until (txt=' </properties>');
LoadAnim(load,frm[getnum(objname[i])],getnum(objname[i]));
otype[i]:=otyp;
end;
skip(3);
until (txt=' </objectgroup>');
omax:=i;
skip(3);
dat:=decode_string(copy(txt,3,length(txt)));
i:=0;
repeat
rad[(i)div my+1,(i)mod my+1]:=ord(GetChar(dat,i*4));
i:=i+1;
until (i=mx*my);
closeresource(res);
end;
вот пример урезанного xml-файла к процедуре mapload:
То есть в строчке с именем карты можно будет хранить стандартные параметры(img карты, цена, hp, дамаг, кол-во шагов, ... и тип карты).
Взависимости от типа карты можно будет подгружать особые параметры, которые хранятся по одному на строчку в формате имя_параметра="regeneration" значение_параметра="3".
Строка </card> означает конец чтения особых параметров карты.
То есть в строчке с именем карты можно будет хранить стандартные параметры(img карты, цена, hp, дамаг, кол-во шагов, ... и тип карты).
Взависимости от типа карты можно будет подгружать особые параметры, которые хранятся по одному на строчку в формате имя_параметра="regeneration" значение_параметра="3".
Строка </card> означает конец чтения особых параметров карты.
эхх, где ж Ты раньше то был( Год бы тому назад было самое время)) Теперь изучаю СИ. Всеравно большое спасибо за советы, механика в игре врятли изменится с переездом в другуюя ось и язык.