forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на MidletPascal (http://forum.boolean.name/forumdisplay.php?f=88)
-   -   игра по мотивам ККИ "Берсерк" (http://forum.boolean.name/showthread.php?t=5507)

aureli0 07.01.2008 22:01

игра по мотивам ККИ "Берсерк"
 
Вложений: 2
Работа над Дюной пока заморожена, решил занятся немного другим, и вот результат того что получилось. Это попытка перенести на телефон ККИ (коллекционную карточную игру)"Берсерк"(www.berserk.ru). Пока только учебный сэт "Легенды Руси", ибо пока строится каркас. Программа расчитана на игру в 2-ем на 1-м аппарате. На данный момент в программу перенесена только половина сэта, нельзя назначать защитника, нету кладбища, карты не покупаются а оявляются произвольно в независимоти от их уникальности и цены, есть глюки. Программу пытался зделать мультиэкранной (176 на 220 это минимум, на е50 с 320 на 240 тоже ничего), хотелось бы потом добавить возможность игры через блютуз и зделать хоть какойто АИ, но это все потом - потому как недостаточно опыта и библиотек.

PS Переключать тип атаки "7"

Fla 08.01.2008 00:42

Ответ: игра по мотивам ККИ "Берсерк"
 
Я фанат берсерка, правила знаю. Но вот КАК играть не понял.
Я долго рандомно тыкал по клавишам в эмуляторе, но так и не разобрался. Можно небольшой ман?

aureli0 08.01.2008 02:29

Re: игра по мотивам ККИ "Берсерк"
 
МАН:
Значит так:
В загаловке окна "Поле боя" болтается циферка, если она говорит о том какой игрок щас ходит первый или второй.
Также Поле боя условно поделено на верхнюю и нижние половины (половина игрока который ходит обведена синей рамочкой)
Верхняя половина 6 на 3 клеток - это поле второго игрока
Нижняя половина 6 на 3 клеток - это поле первого игрока.
Правая крайняя 6-я колонка (т.к. по горизонтали на поле боя в Берсерке только 5 клеток) это поля для летающих или месности
(пока нитого нидругого увы нет но место оставил) соответственно того игрока на чьей половине поля они будут находится
Карты игрока который ходит подсвечены бирюзовой мигающей рамочкой.
В связи с тем что программа планируется мультиэкранной и минимальный экран 176 на 220 (кажись) то место на картах ограничено и я вывел на них только:
Цвет карты= цвету стихии, которой принадлежит карта; очки хода и очки здоровья.
Карты между игроками пока раскидываются рандомно иногда так,что могут "лежать друг на друге"(все это временно)
Основной курсор-квадратик мигающий синим управляется джостиком или цифрами 2,8,4,6
если курсор наведен на карту то можно вызвать меню действий которые можно произвести с этой картой, нажав на джойстик илицифру 5. Если карта принадлежит игроку который ходит в данный момент то ему будут доступны большинство действий, а так всегда доступны пункты:
"описание карты" (пока там только текст, значки уникальности стихии и отравления в разных углах портрета карты)
"отмена"-закрыть меню и вернутся назад к полю боя
"закончить ход" - закончть наконец игроком ход и передать управление другому игроку
Пунка "защита" хоть и присутствует - не зделан, может быть вапще его выкину из этого меню и зделаю так что назначить защиту можно будет при "атаке".
Если карта принадлежит тому игроку который ходит, то карту можно двигать по полю ("движение")-просто выбрав соответствущий пункт и используя управление курсором передвигать карту до тех пор пока у нее есть очки движения(курсор при этом мигает зеленым).
Можно проделать атаку или действие или выстрел выбрав пункт атака "атака", курсор станет красным для выбора цели, во время атаки можно переключать атаки|действия кнопкой 7, атака происходит пока только с самой слабой силой без всяких бросков кубика (ибо пока всеравно не введенеа защита! потом все зделаю). Если карта атаковала - она закрывается до следущего хода игрока -перечеркивается красной чертой; если карта отравлена она перечеркивается зеленой мигающей чертой (ну не помещаются на картах все значки при минимальном расширении экрана).

Пока вот както вот так, играть в это пока конечно нельзя, собсно пока это и не планировалось...

Piligrim 08.01.2008 11:50

Ответ: игра по мотивам ККИ "Берсерк"
 
Не играл в Берсерка, но в свое время возился с Magic: The gathering, даже карты сами печатали. С удовольствием поучаствую в проекте. Могу помочь с написанием библиотек :)

Ведь в зависимости от размера экрана можно комплектовать игру разными ресурсами, тогда существенно улучшится графическая часть, что несомненно добавит игре атмосферы.

ЗЫ: пошел на berserk.ru :)

aureli0 09.01.2008 21:26

Re: Ответ: игра по мотивам ККИ "Берсерк"
 
Цитата:

Сообщение от pilgrim (Сообщение 73312)
Не играл в Берсерка, но в свое время возился с Magic: The gathering, даже карты сами печатали. С удовольствием поучаствую в проекте. Могу помочь с написанием библиотек :)

Ведь в зависимости от размера экрана можно комплектовать игру разными ресурсами, тогда существенно улучшится графическая часть, что несомненно добавит игре атмосферы.

ЗЫ: пошел на berserk.ru :)

Спасибо)) учту, уже есть проблемы я пользуюсь библиотеками cnv2 и game и стандартными стредствами. Беда в том что на телефоне нокии Series 40 в часности на слайдере,кажись 6280 или 6278 точно непомню модель, морагет белым экран. И в дюне такое было на нем же, врятли это глюк телефона ибо на нокиевской джаве машине происходит тоже самое при выборе этого профиль. На е 50 все работает как часы и на mip2x тоже...

aureli0 10.01.2008 01:20

Re: игра по мотивам ККИ "Берсерк"
 
Вложений: 1
Новая версия, теперь можно назначить защитника если это возможно.. Результат обычной атаки теперь зависит от бросков кубиков в соответствии с правилами игры, правда закрытые карты щас тоже сражаются и иногда при назначении защитника программ виснет

IVenoMI 11.01.2008 15:35

Re: игра по мотивам ККИ "Берсерк"
 
Если есть желание, можно попробовать занятся переносом игры в сетевое пространство по ЖПРС

Piligrim 11.01.2008 16:20

Ответ: игра по мотивам ККИ "Берсерк"
 
Это, я думаю, сделаем обязательно. Единственный вопрос, как будут обстоять дела с авторскими правами. Ведь игра, то российская, и правообладатель активно ее продает. :) Berserk Online существует к тому же.

aureli0 11.01.2008 20:13

Re: игра по мотивам ККИ "Берсерк"
 
Вложений: 1
эээ да я пока тока делать начал)) а вапще я за жопарез у меня идея ранее была зделать пошаговые бои через электронную почту, вместо сервака общий почтовый ящик.

...теперь расчет повреждений реализован полностью как в игре, накопилось много мусора в тексте в выходные добавлений вероятно небудет, а будет чистка кода и оптимизация...

aureli0 13.01.2008 23:16

Re: игра по мотивам ККИ "Берсерк"
 
Вложений: 1
возможно теперь перестанет виснуть, за выходные нашол несколько ошибок

Piligrim 14.01.2008 01:13

Ответ: игра по мотивам ККИ "Берсерк"
 
На ROKR E2 (320x240) строки текста совершенно вплотную, ощущение что даже накладываются. И строка подсказки внизу вылезает за экран пикселя на 2-3.
Запрещенные действия крестиками как-то не очень, может их другим цветом или просто перечеркнуть?
Хорошо бы справку по карте на отдельную клавишу, как мне не знающему каждый раз приходится лазить :)
ЗЫ: А что такое на клавише "3"?

aureli0 14.01.2008 01:29

Re: Ответ: игра по мотивам ККИ "Берсерк"
 
Цитата:

Сообщение от pilgrim (Сообщение 74238)
На ROKR E2 (320x240) строки текста совершенно вплотную, ощущение что даже накладываются. И строка подсказки внизу вылезает за экран пикселя на 2-3.
Запрещенные действия крестиками как-то не очень, может их другим цветом или просто перечеркнуть?
Хорошо бы справку по карте на отдельную клавишу, как мне не знающему каждый раз приходится лазить :)
ЗЫ: А что такое на клавише "3"?

главное что запустилось)) дюна не у всех работала, насчет текста да на моем телефоне (е50) тоже слипается вплотную, потом поправлю. На клавише 3 вроде ниче недолжно быть. На клавише 9 вывод всякой "служебной фигни"

Piligrim 14.01.2008 17:29

Ответ: игра по мотивам ККИ "Берсерк"
 
Виснет, если нажать "Накопить фишку".
Поймал один раз такую ошибку: передвинул карту вперед, она осталась на старой позиции и появилась на новой. :(, Хм. Перечитал мануал и понял, что это две карты лежали друг на друге, просто они оказались одного номинала :)

aureli0 15.01.2008 00:30

Re: Ответ: игра по мотивам ККИ "Берсерк"
 
Вложений: 2
Цитата:

Сообщение от pilgrim (Сообщение 74279)
Виснет, если нажать "Накопить фишку".
Поймал один раз такую ошибку: передвинул карту вперед, она осталась на старой позиции и появилась на новой. :(, Хм. Перечитал мануал и понял, что это две карты лежали друг на друге, просто они оказались одного номинала :)

Номиннал тут не причем-карты расставляются произвольно, не учитывая что места уже заняты, но это временно ибо карты должен расставлять не комп а сам человек. Вот как зделаю магазин - тогда будет все нормально. Накопить фишку-пункт временный и он пуст потому и виснет

Вот подправил немного графики, добавил иконки существ. Смотрится неплохо как под 176 на 208 так и 320 на 240. При движении карт по краям поля программа может зависнуть.

Piligrim 15.01.2008 13:37

Ответ: игра по мотивам ККИ "Берсерк"
 
Баги:
1.При движении показывается, что можно перейти и по диагонали и не учитываются карты, стоящие на пути. Часто виснет при выборе пункта "Движение".
2.Слишком узкое по высоте окно результатов атаки. Когда не вмещается текст в последней строке ничего не понять.
3.Иногда, после движения остается не запрещенным пункт "Движение", даже если больше нет очков.

Может быть стоит задействовать библиотеку Lib_softkeys, хотя бы в меню? И сделать его динамическим, зачем каждый раз пропускать "Движение" если оно уже совершено.

Для тестирования хорошо бы добавить пункт "Новая игра"

aureli0 15.01.2008 23:15

Re: игра по мотивам ККИ "Берсерк"
 
Вложений: 1
Поправил косяки с движением-вроде больше не виснет, раздвинул текст в описании карты и при броске кубика-поползли ГУИ%(
По значкам движения можно определить максимальный радиус хода, игнорируя карты (аналогично было в героях магии и меча).
Сделал пункт в меню "начать заново", если после сдачи карт будут глюки (хотя вроде не должно) то это из-за не полного обнуления старых переменных (хотя вроде учел все-глюков не видел)

ЗЫ: ктонить знает как в убунте 7.04 (хотя скорее это в гноме) поставить нормальную раскладку клавиатуры при наборе на русском, раньше вроде попадалась клавиатура windows теперь чето немогу найти?

Piligrim 18.01.2008 13:41

Ответ: игра по мотивам ККИ "Берсерк"
 
У меня вроде ничего не поплыло. Из-за накладок карт сложно тестировать :) Реакция на нажатие клавиши очень длинная, по крайней мере у меня.
ЗЫ: на будущее надо наверное что-то похожее на XML описание карт, чтобы любые наборы включать в игру, а не зашивать это в код

IVenoMI 18.01.2008 22:44

Re: игра по мотивам ККИ "Берсерк"
 
Вот для этого и пригодится инет :)
Поскольку сеты могут рости до бесконечности, то рационально по имеющимся у игрока идентификаторам карт загружать их данные с сервера. Таким образом минимизируется мидлет...

aureli0 20.01.2008 20:42

Re: игра по мотивам ККИ "Берсерк"
 
Дело в том что бывают такие карты которые так просто програмно не опишеш, ибо очень своеобразные. Их по любому придется вшивать в клиент.
Потом чем новее сет тем труднее его будет описать - много нового вводят. Насчет того что базу карт надо держать в виде отдельного файла, который можно было бы дополнять при помощи ручек, а не при помощи вшивания в код новых карт - может быть, но тогда можно будет читерить просто подредактировав базу в клиенте. Потом сильно придется ограничить диапзон сэтов для карт которые могут быть внесены в базу из-за невозможности допустить и учесть все моменты взаимодействия их с друг другом. Потом можно ли будет держать такой сервак не нарушая авторских прав, ведь уже есть Берсерк-онлайн? Есть над чем еще подумать)

aureli0 20.01.2008 22:00

Re: игра по мотивам ККИ "Берсерк"
 
Вложений: 1
Вот последняя версия программы на сегодняшний день. Уже весь учебный сэт "Легенды Руси" внесен, пока не работают только "ауры карт" (+1 к удару у Змея Тугарина и +1 к броску кубика у Князя Владимира), атака при помощи выстрела работает но сделана она пока криво - нельзя стрелять в карту стоящую рядом(см. правила). Див пока не летает. Уже можно попробовать сыграть вдвоем на 1 аппарате. За силы добра выступают стихии леса и гор, за силы зла-болота и степи.
В программе опять набралось немного маразма который надо разобрать втечении следущей недели)

Piligrim 21.01.2008 11:20

Ответ: игра по мотивам ККИ "Берсерк"
 
Атакую закрытого Добрыню Никитича и получаю по три повреждения каждому атакующему. Никаких модификаторов по этому поводу не нашел.
Если я правильно понял стрельба по клавише "1"?

ЗЫ: может быть стоит, чтобы активный игрок был всегда внизу? Как то привычнее :)

aureli0 22.01.2008 01:39

Re: игра по мотивам ККИ "Берсерк"
 
Закрытая карта - это когда она перечеркнута, для пробы решил поиграть с женой. Подобных глюков вроде того что перечеркнутая карта давала сдачи не было, зато заметил другой))) Кащей Бессмертный - действительно получился БЕССМЕРТНЫМ)) не дох и все, чинился, хотя у него только -2 от атак. Переключать аатаки/действия/выстрел -все одна кнопка во время атаки - внизу пишется что выбрано. У меня кнопка переключения = 7 ( на других аппаратах может быть и 1, незнаю)

aureli0 24.01.2008 02:10

Re: игра по мотивам ККИ "Берсерк"
 
Последняя версия: http://minidune.narod.ru/bin.zip
В выходные сваливаю в отпуск. обновления будт через неделю)

IVenoMI 08.02.2008 19:24

Re: игра по мотивам ККИ "Берсерк"
 
Начнем с того, что сеты можно делать полностью свои. Далее, если привнести в игру новые фишки и изменить какой то существующий механизм, то с точки зрения авторских прав это будет другой продукт.

aureli0 10.02.2008 23:05

Re: игра по мотивам ККИ "Берсерк"
 
Появилась небольшая проблема на последних телефонах Nokia (в часности 6233,5300 помоему еще 6280) постоянно рябит изображение (мигает белыэм экраном) в эмуляторе и на телефонах е50 N73 такого нету, в чем может быть дело? На нокиевском сдк тоже рябит((
использую библиотеки game,cnv2,canvas картинки вывожу стандартными средствами
loadimage

Piligrim 11.02.2008 12:29

Ответ: игра по мотивам ККИ "Берсерк"
 
Если я правильно понимаю, суть проблемы, ты используешь два объекта Canvas одновременно, и переключаешься между ними, в процессе отображения. Думаю нужно адаптировать нужные тебе функции из cnv2 и canvas под GameCanvas. Напиши, что ты используешь.

aureli0 11.02.2008 22:16

Re: Ответ: игра по мотивам ККИ "Берсерк"
 
Цитата:

Сообщение от pilgrim (Сообщение 76947)
Если я правильно понимаю, суть проблемы, ты используешь два объекта Canvas одновременно, и переключаешься между ними, в процессе отображения. Думаю нужно адаптировать нужные тебе функции из cnv2 и canvas под GameCanvas. Напиши, что ты используешь.

ой. такая проблема наблюдалась еще в дюне а вывожу графику я примерно следущим образом:

uses game,cnv2,canvas,modul,dBase,main;
var
texture:image;//фон
begin
cnv2.fullscreen_mode(1);//включение фулскрина
game.init;
game.set_clip(0,0,GetWidth,GetHeight);
game.show;
texture:=LoadImage('/batle.png');//320х240
fon:=resize_image(texture,GetWidth,GetHeight);
repeat
DrawImage(fon,0,0);
game.refresh;// отображение всего
until false;
end.

Только я в джаве честно не очень поэтому если не трудно скажите что делать на пальцах)))

Piligrim 12.02.2008 00:15

Ответ: игра по мотивам ККИ "Берсерк"
 
Вложений: 1
попробуй заменить класс Lib_game вот этим

aureli0 12.02.2008 22:41

Re: Ответ: игра по мотивам ККИ "Берсерк"
 
Цитата:

Сообщение от pilgrim (Сообщение 77013)
попробуй заменить класс Lib_game вот этим

К сожалению все тоже самое. мало того игра на эмуляторе то работает но както не так как раньше. Работает рывками както. На моем е50 вапще виснет да еще так что ее потом закрыть не получается!! А на чужой нокии 6270 опять мерцает белый экран.
Судя по всему это проблема всех телефонов Нокии серии 40!! Поставил СДК 40 серии и решил небольшой тест провести - вот простенькая программка))

//uses game{,cnv2};
var
img:image;
begin
//cnv2.fullscreen_mode(1);//включение фулскрина
//game.init;
//game.set_clip(0,0,GetWidth,GetHeight);
//game.show;
img:=LoadImage('/icon.png');
repeat
Setcolor(0,0,random(255));
drawText('Hello world!', 0, 0);
DrawImage(img,random(GetWidth),random(GetHeight));
//game.refresh;// отображение всего
repaint;
until false;
end.

в таком виде она в СДК 40-вой серии запускается не в полноэкранном режиме без марганий экрана!!!

подключаю библиотек CNV2:

uses {game,}cnv2;
var
img:image;
begin
cnv2.fullscreen_mode(1);//включение фулскрина
//game.init;
//game.set_clip(0,0,GetWidth,GetHeight);
//game.show;
img:=LoadImage('/icon.png');
repeat
Setcolor(0,0,random(255));
drawText('Hello world!', 0, 0);
DrawImage(img,random(GetWidth),random(GetHeight));
//game.refresh;// отображение всего
repaint;
until false;
end.

Результат: мерцаний нет при полом экране!!! Результат конечно радует но хотелось бы обойтись без ресурсоемкого repaint!!!!

Теперь отключу cnv2 и включаю game (причем как новый так и старый):

uses game{,cnv2};
var
img:image;
begin
//cnv2.fullscreen_mode(1);//включение фулскрина
game.init;
game.set_clip(0,0,GetWidth,GetHeight);
game.show;
img:=LoadImage('/icon.png');
repeat
Setcolor(0,0,random(255));
drawText('Hello world!', 0, 0);
DrawImage(img,random(GetWidth),random(GetHeight));
game.refresh;// отображение всего
//repaint;
until false;
end.

В результате получаем мерцания в обоих случаях
в компиляции пробовал ставить Midp version 2 и 1 и NokiaAPI fullscreen
мерцания так и остаются!!!

выручайте(

ЗЫ: кстати последняя версия:http://minidune.narod.ru/mbers27.zip
добавлен магазин

aureli0 14.02.2008 21:58

Re: Ответ: игра по мотивам ККИ "Берсерк"
 
Цитата:

Сообщение от aureli0 (Сообщение 77095)
К сожалению все тоже самое. мало того игра на эмуляторе то работает но както не так как раньше. Работает рывками както. На моем е50 вапще виснет да еще так что ее потом закрыть не получается!! А на чужой нокии 6270 опять мерцает белый экран.
Судя по всему это проблема всех телефонов Нокии серии 40!! Поставил СДК 40 серии и решил небольшой тест провести - вот простенькая программка))

//uses game{,cnv2};
var
img:image;
begin
//cnv2.fullscreen_mode(1);//включение фулскрина
//game.init;
//game.set_clip(0,0,GetWidth,GetHeight);
//game.show;
img:=LoadImage('/icon.png');
repeat
Setcolor(0,0,random(255));
drawText('Hello world!', 0, 0);
DrawImage(img,random(GetWidth),random(GetHeight));
//game.refresh;// отображение всего
repaint;
until false;
end.

в таком виде она в СДК 40-вой серии запускается не в полноэкранном режиме без марганий экрана!!!

подключаю библиотек CNV2:

uses {game,}cnv2;
var
img:image;
begin
cnv2.fullscreen_mode(1);//включение фулскрина
//game.init;
//game.set_clip(0,0,GetWidth,GetHeight);
//game.show;
img:=LoadImage('/icon.png');
repeat
Setcolor(0,0,random(255));
drawText('Hello world!', 0, 0);
DrawImage(img,random(GetWidth),random(GetHeight));
//game.refresh;// отображение всего
repaint;
until false;
end.

Результат: мерцаний нет при полом экране!!! Результат конечно радует но хотелось бы обойтись без ресурсоемкого repaint!!!!

Теперь отключу cnv2 и включаю game (причем как новый так и старый):

uses game{,cnv2};
var
img:image;
begin
//cnv2.fullscreen_mode(1);//включение фулскрина
game.init;
game.set_clip(0,0,GetWidth,GetHeight);
game.show;
img:=LoadImage('/icon.png');
repeat
Setcolor(0,0,random(255));
drawText('Hello world!', 0, 0);
DrawImage(img,random(GetWidth),random(GetHeight));
game.refresh;// отображение всего
//repaint;
until false;
end.

В результате получаем мерцания в обоих случаях
в компиляции пробовал ставить Midp version 2 и 1 и NokiaAPI fullscreen
мерцания так и остаются!!!

выручайте(

Есть кто живой!!!?

Piligrim 15.02.2008 10:34

Ответ: игра по мотивам ККИ "Берсерк"
 
Живые, то есть. Только вот с идеями плохо. В последнем классе для отрисовки используется отдельный поток, синхронизированный с классом Display, т.е. по идее лучше сделать уже нельзя. Единственное, что могу предположить, это что ты обновляешь экран чаще, чем в принципе может JVM Нокии. Попробуй ввести задержку побольше для тестов.
PS: на моторолах и сонериках все идет красиво.

aureli0 17.02.2008 15:53

Re: игра по мотивам ККИ "Берсерк"
 
delay?

Ладно фиг с этой серией 40) Потом какнить.

Щас вот другая проблема нашлась. Точнее пример мне нужен по работе с файлами ресурса. Задача такая: есть текстовый файл с бзой карт (да я хочу зделать именно так) с примерно таким содержанием:

kolvo_card=3
//первая карта
card_name='Карта 1'
card_portret='card1.jpg'
card_live=3
card_damage=5
//вторая карта
card_name='Карта 2'
card_portret='card2.jpg'
card_live=4
card_damage=2
card_osob=1
//третья карта
card_name='Карта 3'
card_portret='card3.jpg'
card_live=5
card_damage=3
card_regeneration=3
...

и т. д.

а в программе хочется читать при старте программы параметры для карт из этого файла

примерно какнить так

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 20.02.2008 23:27

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;
//обрабатываем получая необходимые переменные из временноо массива переменных

p1:=StringToInteger(var_array[0]);
p2:=StringToInteger(var_array[1]);
p3:=StringToInteger(var_array[2]);
p4:=StringToInteger(var_array[3]);

//считаем сумму вписаных в ресурс значений
summa:=p1+p2+p3+p4;

Setcolor(0,0,0);
DrawText(IntegerToString(summa),0,100);
repaint;
Delay(1000);


end.

aureli0 20.02.2008 23:32

Re: игра по мотивам ККИ "Берсерк"
 
Теперь пытаюсь намутить каким образом определить сколько букв в 1 строчке влезет на экран мобилы. А то перенос текста у меня работает както кривовато-через подгоны. Что можно зделать????

aureli0 23.02.2008 21:21

Re: игра по мотивам ККИ "Берсерк"
 
Вложений: 1
Вот решил выложить последние исходники по "легендам Руси" на сегодняшний день. Глюкавый. Кривой. Но рабочий. Не знаю что с ними можно зделать. На данный момент я на основе этой "поделки" заново перелопачиваю весь код. И решил занятся реализацией первого сэта игры

aureli0 09.05.2009 13:52

Re: игра по мотивам ККИ "Берсерк"
 
Вложений: 1
не получается:(
давно не брался за код, за это время у меня родилась дочка) Совсем не до компа стало. Выкладываю последние наработки. Точно не помню что было сделано, из того что помню - был почищен код, добавлены летающие. База до сих пор берется из отдельного модуля-как сделать чтение базы вне мидлета я так и не понял. Потом произошло еще одно радостное событие-я переехал жить в линукс) решил занятся изучением СИ) и переписываю берсерк уже в линух, используя связки SDL+OpenGL. Начал с нуля - но уже готов полностью рабочий магазин. Как будет чтото цельное - выложу...

Cliffe Snake 18.05.2009 22:16

Ответ: игра по мотивам ККИ "Берсерк"
 
aureli0, попробуй сделать версию без Lib_game, не в обиду Pilgrim'у, её проблематично использовать в более менее сложных играх.
А на счёт чтения базы могу посоветовать код из своего Сталкера, он конешно требует переделки, но всё же лучше, чем посимвольное чтение))
делал для чтения внутримидлетского xml-файла, но думаю переделать
не сложно будет. Мой вариант считывает любой параметр с текущей строки txt ресурса Res (пример параметра CardName="Мразень", пример считывания name:=reads('CardName'); ), плюс любую строку можно интерпретировать в мидлете как условие или команду(но это надо писать самому).
PHP код:

////////////////////////////////////////////////
/// Требуются 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 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 stringinteger;
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:

PHP код:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map SYSTEM "http://mapeditor.org/dtd/1.0/map.dtd">
<map version="1.0" orientation="orthogonal" width="64" height="64" tilewidth="64" tileheight="64">
 <tileset name="LandTiles" firstgid="1" tilewidth="64" tileheight="64">
  <image source="LandTiles3.png"/>
 </tileset>
 <tileset name="RadLevels" firstgid="25" tilewidth="64" tileheight="64">
  <image source="RadTiles.png"/>
 </tileset>
 <layer name="ground" width="64" height="64">
  <data encoding="base64">BAAAAAQAAAA.........EAAAABAAAAA==</data> 
 </layer>
 <objectgroup name="objects" width="0" height="0">
  <object name="truck" type="car" x="2893" y="2327" width="92" height="65">
   <image source="world/truck.png"/>
  </object>
  <object name="truck" type="car" x="1649" y="3973" width="92" height="65">
   <image source="world/truck.png"/>
  </object>
  <object name="truck" type="car" x="1303" y="2303" width="92" height="65">
   <image source="world/truck.png"/>
  </object>
  <object name="truck" type="car" x="1229" y="3189" width="92" height="65">
   <image source="world/truck.png"/>
  </object>
  <object name="sidor1" type="trader" x="94" y="3054" width="125" height="76">
   <image source="world/sidor1.png"/>
  </object>
  <object name="sidor2" type="trader" x="94" y="3054" width="61" height="98">
   <image source="world/sidor2.png"/>
  </object>
  <object name="electra" type="anim" x="1628" y="2545" width="65" height="62">
   <properties>
    <property name="frames" value="4"/>
    <property name="load" value="st"/>
    <property name="mode" value="cycle"/>
    <property name="type" value="anomaly"/>
   </properties>
   <image source="world/electra.png"/>
  </object>
  <object name="electra" type="anomaly" x="1077" y="2587" width="65" height="62">
   <image source="world/electra.png"/>
  </object>
  <object name="electra" type="anomaly" x="882" y="3244" width="65" height="62">
   <image source="world/electra.png"/>
  </object>
    ................
 </objectgroup>
 <layer name="radiation" width="64" height="64" opacity="0.3">
  <data encoding="base64">IgAAACEAAAA...........CIAAAAiAAAAIgAAAA==</data> 
 </layer>
</map>

А вообще попробуй поюзать библу Lib_xml

Cliffe Snake 18.05.2009 23:26

Ответ: игра по мотивам ККИ "Берсерк"
 
В принципе можно будет работать и с твоим примером базы, немного видоизмененным:

<set="Легенды Руси" kolvo_card="3">
//первая карта
name="Карта 1" portret="card1.jpg" live="3" damage="5" type="simple"
//вторая карта
name="Карта 2" portret="card2.jpg" live="4" damage="2" type="rare"
param="osob" value="1"
</card>
//третья карта
name="Карта 3" portret="card3.jpg" live="5" damage="3" type="unique"
param="regeneration" value="3"
param="exp. in attack" value="1"
param="dec dice" value="-1"
</card>
</set>

То есть в строчке с именем карты можно будет хранить стандартные параметры(img карты, цена, hp, дамаг, кол-во шагов, ... и тип карты).
Взависимости от типа карты можно будет подгружать особые параметры, которые хранятся по одному на строчку в формате имя_параметра="regeneration" значение_параметра="3".
Строка </card> означает конец чтения особых параметров карты.

aureli0 03.06.2009 21:00

Re: Ответ: игра по мотивам ККИ "Берсерк"
 
Цитата:

Сообщение от Cliffe Snake (Сообщение 105244)
В принципе можно будет работать и с твоим примером базы, немного видоизмененным:

<set="Легенды Руси" kolvo_card="3">
//первая карта
name="Карта 1" portret="card1.jpg" live="3" damage="5" type="simple"
//вторая карта
name="Карта 2" portret="card2.jpg" live="4" damage="2" type="rare"
param="osob" value="1"
</card>
//третья карта
name="Карта 3" portret="card3.jpg" live="5" damage="3" type="unique"
param="regeneration" value="3"
param="exp. in attack" value="1"
param="dec dice" value="-1"
</card>
</set>

То есть в строчке с именем карты можно будет хранить стандартные параметры(img карты, цена, hp, дамаг, кол-во шагов, ... и тип карты).
Взависимости от типа карты можно будет подгружать особые параметры, которые хранятся по одному на строчку в формате имя_параметра="regeneration" значение_параметра="3".
Строка </card> означает конец чтения особых параметров карты.

эхх, где ж Ты раньше то был:(( Год бы тому назад было самое время)) Теперь изучаю СИ. Всеравно большое спасибо за советы, механика в игре врятли изменится с переездом в другуюя ось и язык.


Часовой пояс GMT +4, время: 04:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot