0.25

Закрытые или заброшенные проекты, не состоявшие в Клубе, но имевшие ветку на форуме.

Модератор: Jolly Roger

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Харука-тян » 24 дек 2009, 23:59

Покажешь, как это делается?
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Максим Кич » 25 дек 2009, 18:36

Харука-тян писал(а):Покажешь, как это делается?
Меня в конкретном примере смущает, Item^.variable. То есть мы где-то описали Item: ^TItem, где-то выделили под него память, сейчас разыменовываем указатель и с ним работаем.

Но.

Код: Выделить всё

type TItem = class(TSomeClass)
Уже описывает указатель. Поэтому для класса (в отличие от классического паскалевского объекта) нужны конструктор и деструктор. Конструктор автоматом выделяет память, деструктор — освобождает. Например:

Код: Выделить всё

type TMapElement = class(TGameClass)
           public
               chr:char;
               color: TColor;
               constructor Create;
               destructor Done;
        end;

var Map: Array [0..255,0..255] of TMapElement

// blah-blah-blah...

for i:=0 to 255 do
  for j:=0 to 255 do
  begin
     Map[i,j]:=TMapElement.Create;
     Map[i,j].color:=RGB(R,G,B); //от балды присваиваем цвет
     Map[i,j].chr:=GetMeSomeChar(i,j); // и символ
  end;

// blah-blah-blah...

  DrawChar(x,y, Map[x,y].color, Map[x,y].chr);

// blah-blah-blah...

for i:=0 to 255 do
  for j:=0 to 255 do
     Map[i,j].Done;

 
И всё. Просто и без изысков. Но, на самом деле и это не оптимальный вариант, потому что тут остаётся куча простора для выпадения за границы массива. Лучше писать под карту отдельный класс и сеттер/геттер с проверкой, существуют ли в природе запрашиваемые координаты.
Dump the screen? [y/n]

Аватара пользователя
Лука
Сообщения: 153
Зарегистрирован: 23 сен 2007, 08:57

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Лука » 25 дек 2009, 18:58

Я давненько уже не работал с ООП и мог кой-чего подзабыть... но мне кажется, что объявление

Код: Выделить всё

 itm: TItem;
в ЛОКАЛЬНЫХ переменных метода в данном случае не есть хорошо.
(Это про код Харуки)

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Харука-тян » 25 дек 2009, 20:55

Максим Кич писал(а):С моей досужей точки зрения, корень твоих бед в том, что ты пытаешься принудительно работать с указателями там, где они и так уже есть. Не глядя на код могу сразу сказать, что он может быть переписан без единой «птички^».
Благодарю, теперь всё работает. Твоя взяла, птичек пришлось отправить зимовать на юг :D
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Максим Кич » 25 дек 2009, 21:12

Лука писал(а):Я давненько уже не работал с ООП и мог кой-чего подзабыть... но мне кажется, что объявление

Код: Выделить всё

 itm: TItem;
в ЛОКАЛЬНЫХ переменных метода в данном случае не есть хорошо.
(Это про код Харуки)
Я бы сказал, не очень рационально. Если не пытаться работать с указателем на указатель на экземпляр объекта, достаточно просто передать:

Код: Выделить всё

 PutItem(TItem.Create, x, y);
В любом случае, непосредственно объявление экземпляра класса в локальных переменных — не так уж и страшно, хотя этого стоит избегать.
Dump the screen? [y/n]

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Харука-тян » 26 дек 2009, 23:35

Выложила версию 0.25
Сделано: предметы, "бегалка", "склонятор", рост атрибутов с уровнем PC.
Переделано: LOS, интерфейс
Не получается: пофиксить вылет при обмене местами с NPC, зависание при спуске по лестнице, сделать "зажимание" клавиш.

Максим Кич, прошу о помощи с функцией SDL_EnableKeyRepeat. Пробую так:

Код: Выделить всё

SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
не работает. ЧЯНТД?
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
Эльф
Сообщения: 115
Зарегистрирован: 12 июл 2007, 16:39

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Эльф » 27 дек 2009, 00:08

1) Если тебе не трудно, заведи файлик со списком известных глюков.
2) У тебя какая-то удивительная кодировка в файле хелпа. Фар говорит мне, что это называется OEM, но переводит хреново. Да и лень мне каждый раз в текстовый файл лезть, да и не только мне, наверное. Закинь список клавиш на "?", если не трудно.
3) Я спецом этот момент искал, потому что сам сталкивался с этой проблемой, лол. Тем не менее:

Код: Выделить всё

.M.
@MM
.M.
В этой ситуации у тебя самый правый монстр стоит на месте. Делай нормальный поиск пути.

(кстати, каким тегом здесь (на форуме) пропорциональный шрифт врубать?)
Последний раз редактировалось Эльф 27 дек 2009, 12:00, всего редактировалось 2 раза.

Аватара пользователя
Эльф
Сообщения: 115
Зарегистрирован: 12 июл 2007, 16:39

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Эльф » 27 дек 2009, 00:13

Не вижу пропорционального шрифта хоть убей, а так оно не отражается корректно.

В общем ситуация, когда стоишь ты, потом три монстра в ряд, потом еще один по центру, то есть подойти прямо к тебе одним ходом ему мешают другие монстры.

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Харука-тян » 27 дек 2009, 07:11

Эльф писал(а):В общем ситуация, когда стоишь ты, потом три монстра в ряд, потом еще один по центру, то есть подойти прямо к тебе одним ходом ему мешают другие монстры.
Искуственных идиотов я писать потом буду. А список клавиш добавила, на клавишу "?".
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Jolly Roger » 27 дек 2009, 09:06

Так если они бегают, значит работает, нужна всего лишь проверка на наличие в клетке дружественного существа.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Maelstrom » 27 дек 2009, 11:34

У меня через 10 секунд после начала игра вылетела и попытке поменяться местами с хрестьянином. Потом, сколько раз не менялся с ними местами, всё нормально было.
Айв кнгенгах Йог-Сотот

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Максим Кич » 27 дек 2009, 11:46

Эльф писал(а):(кстати, каким тегом здесь (на форуме) пропорциональный шрифт врубать?)
Если имелся в виду моноширинный, то:

Код: Выделить всё

##########
#...O.. .#
#OOOOOO O#
#.O.O.O .#
##########
Ты где-то какой-то символ пропустил.
Dump the screen? [y/n]

Аватара пользователя
Эльф
Сообщения: 115
Зарегистрирован: 12 июл 2007, 16:39

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Эльф » 27 дек 2009, 12:02

Максим Кич писал(а): Ты где-то какой-то символ пропустил.
Все, я понял. У вас глюк какой-то странный, в теге "код" одиночный пробел в начале строки убирается. А двойной уже нет. Заменил на точки - стало нормас.

Аватара пользователя
Эльф
Сообщения: 115
Зарегистрирован: 12 июл 2007, 16:39

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Эльф » 27 дек 2009, 17:24

Не всегда генерятся лестницы. Потайных дверей ведь пока что нет, я правильно понял?

В процессе осмотра стен игра вылетела с ошибкой 210.

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: ランセラン : リロード (Lanceran : Reload)

Сообщение Харука-тян » 27 дек 2009, 20:09

Эльф писал(а):Не всегда генерятся лестницы. Потайных дверей ведь пока что нет, я правильно понял?

В процессе осмотра стен игра вылетела с ошибкой 210.
Это ты просто до дна подземелья дошёл :D
А ошибка с вылетом при осмотре была вылечена, как и при обмене местами с NPC была вылечена. Свежая версия скоро будет.
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 44 гостя