Вопроссы по программированию
|
|
Armageddets | Дата: Суббота, 06.07.2013, 16:26 | Сообщение # 1 |
Лейтенант
Группа: Администраторы
Сообщений: 68
Статус: Offline
| Доброго времени суток. Я программирую на Делфи уже 6 лет и хотел бы помочь начинающим и неопытным программистам в программировании именно на этом языке программирования. Так как делфи незаслуженно отстает пока от Си-подобных языков. Прошу, задавайте побольше вопросов и тогда я почаще буду бывать на этом форуме. Особенно по написанию игр)
|
|
| |
Vladik | Дата: Суббота, 11.01.2014, 00:12 | Сообщение # 2 |
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Я скачал текстуратор, и сразу заметный минус который легко исправляется - это что нет кнопки сбросить текстуру, поставил текстуру большую а потом когда делаешь маленькую то идёт наслаивание что не очень визуально красиво, лучше было сделать что-бы текстура появлялась в новом окне которое привязано к основному и выставлялся размер выбраной текстуры а главное окошко было просто для выбора параметров, сообщение не по теме но нужного раздела для этого нет
|
|
| |
Armageddets | Дата: Суббота, 11.01.2014, 04:05 | Сообщение # 3 |
Лейтенант
Группа: Администраторы
Сообщений: 68
Статус: Offline
| Согласен. Спасибо за совет. Учту. Просто я его под себя делал и изначально не собирался его выкладывать, но если есть спрос на него, то почему бы и не переделать.
|
|
| |
Demigod | Дата: Среда, 12.02.2014, 20:26 | Сообщение # 4 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Приветствую ! Пишу 2D rpg на делфи . Столкнулся с проблемой . Написал магию типа стрела ( от персонажа в сторону его поворота летит темная стрела ) . Вопрос вот в чем не могу поймать пересечение магии и монстра . Использую вот такое условие : if (enemy.PosX<=player.magic.PosX+radius) and (enemy.PosX>=player.magic.PosX-radius) and(enemy.Posy>=player.magic.PosY-radius)and (enemy.Posy<=player.magic.PosY+radius) then Enemy - массив записей монстров , приходиться гонять циклом всех монстров что не очень удобно . Player.magic.posx(y) положение магии в данный момент . radius - параметр функции ( условие в функции ) отвечающий за радиус урона . Но это не работает .. Можете что нибудь посоветовать ?
|
|
| |
Armageddets | Дата: Среда, 12.02.2014, 23:49 | Сообщение # 5 |
Лейтенант
Группа: Администраторы
Сообщений: 68
Статус: Offline
| На русском языке твоя проверка выглядит следующим образом: Если координата икс монстра меньше или равна координаты икс магии+радиус (тоесть правая граница действия) и если координата икс монстра больше или равна координаты икс магии-радиус (левая граница действия)... и тоже самое для игреков.
Логически вроде правильно и ошибка может быть не здесь. Но у тебя идет проверка лишь по левой границе картинки монстра (координата х) и верхней границе (координата игрек). В итоге проверяется лишь верхний левый угол монстра. Остальная часть его оказывается не нужна в проверке.
Совет 1: Если ты хочешь проверять лишь по одной точке местонахождения монстра, то лучше выбрать его середину. Тоесть если ширина картинки монстра 32 и высота тоже, то нужно проверять не попадает ли координата х+16 и координата игрек+16.
А можно пойти другим путем и проверять 4 угла его картинки (икс, игрек): верхний левый (х,у) верхний правый(х+32,у) Нижний левый(х,у+32) Нижний правый(х+32,у+32)
Совет 2: Чтобы не гонять весь массив монстров можно просто постоянно проверять наличие какого либо монстра в радиусе магии примерно так
for x:=Player.magic.posx-Radius to Player.magic.posx+Radius do for y:=Player.magic.posy-Radius to Player.magic.posy+Radius do Then Нанести урон если там есть монстр
Но в таком случае нужно монстров привязывать к клеточкам. То есть у каждой клеточки должен храниться номер монстра если он есть или 0-если монстров нет в клетке. Недостаток такого метода когда монстры будут находится на частично на нескольких клеточках, а хранится будут лишь в одной из них.
Совет 3: А вообще конечно лучше искать ошибки при наличии самого проекта. Самый простой способ ловить ошибки - это ставить точки прерывания на том месте где ты хочешь проверить данные. Например слева перед номером строки кода, где ты наносишь урон кликни мышкой и посавиться красная точка. Запусти проект и используй магию тогда игра остановится и появится исходный код с остановкой в этом месте. ты подведи курсор к записи координат магии и координат монстра. Возможно ты увидишь что координаты считаются неправильно.
Совет 4: Еще простой способ ловить ошибки это выводить нужные данные на саму форму или в ее заголовок. Например так по таймеру
Form1.Caption:='MagicX='+inttostr(Player.magic.posx)+' MagicY='+inttostr(Player.magic.posy) + ' MonstrX='+inttostr(enemy.PosX)+' MonstrY='+inttostr(enemy.PosY);
Так ты всегда вверху сможешь смотреть и координаты магии в игре и координаты монстра.
Совет 5: Если советы не дадут никаго результат предлагаю прислать проект мне на почту okzona1@rambler.ru и я даже в рабочее время смогу поискать ошибку.
|
|
| |
Demigod | Дата: Четверг, 13.02.2014, 06:43 | Сообщение # 6 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Armageddets, Спасибо за ответ , попробую проверку по центру картинки . Идея с проверкой наличия монстра в радиусе не подходит т.к в радиусе может быть больше 1 монстра . Если что обращусь .
|
|
| |
Armageddets | Дата: Понедельник, 10.03.2014, 00:20 | Сообщение # 7 |
Лейтенант
Группа: Администраторы
Сообщений: 68
Статус: Offline
| Хорошо
|
|
| |
igor | Дата: Воскресенье, 28.06.2015, 23:25 | Сообщение # 8 |
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| можеш пожалусто рассказать что надо делать дальше в видео урок10 создаем игру кристалики три в ряд просто мне 12 лет и я не могу купить продолжение этого видео
|
|
| |
Armageddets | Дата: Понедельник, 06.07.2015, 22:52 | Сообщение # 9 |
Лейтенант
Группа: Администраторы
Сообщений: 68
Статус: Offline
| Вариантов создания данной игры очень много. Если рассказывать подробно, то это замет очень много времени. Задай конкретный вопрос, что не получается и я отвечу.
|
|
| |
cаша | Дата: Понедельник, 11.12.2017, 19:07 | Сообщение # 10 |
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Здравствуйте. Мой вопрос не про делфи а про паскаль абс нэт (в консоли). Я недавно сделал программу которая выдает одно слово несколько раз и хочу ее немного модицицировать. Скажите пожалуйста как сделать так чтобы программа спрашивала два вопроса. сначала спрашивала какое слово писать а после того как пользователь ответит спрашивала сколько раз его надо писать? вот мой код var i, a: integer; begin write('сколько раз выдавать слово привет'); read (a); for i:=1 to a do writeln('Привет'); end.
|
|
| |