Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2009, 09:47   #1
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию Проблема с редактором карт

Всем привет.
Оглашаю свою проблему.
Делаю простенький редактор карт. При поднятии формы всё тупо заливается водой. Далее справа выбираем поверхность, которую собираемся рисовать. Пи клике на карте, вычисляется нужная ячейка карты, которая заполняется новым значением. После этого карта перерисовывается (вернее должна перерисовываться). Здесь и появляется проблема: карта затирается, но заново не рисуется Подскажите, в чём может быть проблема? Исходники во вложении.
Вложения
Тип файла: rar map.rar (253.2 Кб, 16 просмотров)
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 20.08.2009, 10:06   #2
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Посмотрел исходник.
При первом запуске карта (вода) рисуется так:
Цитата:
for i:= 1 to StrToInt(MapWidth.Text) do
begin
for j:= 1 to StrToInt(MapHeight.Text) do
begin
DrawSprite('0',i,j);
end;
end;
Потом при нажатии клавиши ты пытаешься перерисовать карту процедурой drawmap, а она наверное работает не правильно.

Лучше переделай программу так:
Есть массив с ячейками карты: координатами является индекс ячейки а типом изображения является номер (например byte);
Есть единая процедура прорисовки. В нее передается массив с ячейками и она его рисует.
Процедура прорисовки выполняется в таймере.
Вадим Буренков вне форума Ответить с цитированием
Старый 20.08.2009, 10:34   #3
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Пробовал с таймером, но во-первых, разницы ни какой, во-вторых - лишняя нагрузка: зачем мне перерисовывать карту, например, каждую секунду, если можно только при ее изменении. Это же не сама игра, а только редактор. Я понимаю, что проблема где-то в drawMap, но не могу понять, где именно. Ведь если при первом запуске вызвать вместо цикла
Код:
for i:= 1 to StrToInt(MapWidth.Text) do
begin
for j:= 1 to StrToInt(MapHeight.Text) do
begin
DrawSprite('0',i,j);
end;
end;
эту функцию, то она отрабатывает нормально
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 20.08.2009, 11:08   #4
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Делать можно как угодно, главное чтоб редактор работал . Я предложил тебе нормальный вариант создания редактора. Плюс в том что ты будешь видель карту на экране такой же какая она в памяти, все глюки будут видны. И никакой лишней нагрузки, я всегда в своих редакторах использую таймер.
Вадим Буренков вне форума Ответить с цитированием
Старый 20.08.2009, 11:18   #5
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Блин, я это понимаю, но проблема то сейчас не в том, использовать таймер или нет. Проблема в том, почему карта не рисуется, где ошибка?
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 20.08.2009, 12:17   #6
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
По умолчанию

Вадим Буренков, в первом ответе всё правильно сказал
pro100-delphi вне форума Ответить с цитированием
Старый 20.08.2009, 14:09   #7
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Люди, вы что, издеваетесь? Всё что написал Видим и так у меня есть, только не через Таймер. Ключевая фраза:
Цитата:
Потом при нажатии клавиши ты пытаешься перерисовать карту процедурой drawmap, а она наверное работает не правильно.
Но вот по этому поводу пока никто ничего дельного не сказал
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 20.08.2009, 14:52   #8
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Попробуй переписать программу заново, ну или хотя бы всю часть по выводу графики. Начмнай с малого, после добавления каждой строчки кода перекомпилируй программу, следи за ошибками. А как ты еще хотел ? У меня нет времени ловить чужие ошибки, своих хватает .
Вадим Буренков вне форума Ответить с цитированием
Старый 20.08.2009, 15:04   #9
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

я и не прошу переписать мне программу) а лишь надеюсь, что кто-то заметит в ней то, что я не вижу
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взаимодействие с чужим редактором Nogard Помощь студентам 7 12.07.2009 15:23
Нужна помощь с графическим редактором [delphi] lordsyrius Фриланс 4 24.05.2009 12:14