Как сделать?

Re: Как сделать?

dmvikar,
я брал условное направление. То есть если цель на севере, то в первую очередь обсчитываются северные, потом остальные. Если цель на северо-западе, то либо северная, либо западная в первую очередь. Как-то так.

Извини, пока больше ничем не могу помочь. Кажется Storm делал А* на QSP. Попробуй написать ему.

Aleks Versus
воздвигатель башни
useravatar
Offline
1560 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Aleks Versus,
Я немного не про то, я сейчас поиск в ширину осваиваю. Мне на поле нужно найти ближайшую цель, а не конкретную.
Так вот, если стартовать с вертикали, т.е. y+1, то и пути пойдут по вертикали, пока не сравняются по горизонтали с целью. Соответственно, если стартовать с горизонтали, то получим обратную картину. Как не крути, путь всегда будет из двух перпендикулярных отрезков и никогда лесенкой (это, если поле прямоугольник и нет препятствий).
Но, кажется, я нашел ответ у того парня с хабра:

Код:

results = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)]

if (x + y) % 2 == 0: results.reverse() # ради эстетики

Как я понял, он зеркально меняет порядок поиска соседних клеток если x+y четное.
Проверил на бумаге, вроде как все сходится.

dmvikar
useravatar
Offline
87 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

dmvikar,
нет, что-то не то. Заливка как раз и хороша тем, что обходит точки по кругу.
восток-юг-запад-север
потом берётся восточная точка — обходятся точки вокруг неё. южная — вокруг неё. Какая разница, по сути, в каком порядке? Ты не перебираешь сначала все северные, потом все восточные, потом все южные. Ты идёшь по одной по кругу. И как раз лесенка и должна получиться.


https://habrastorage.org/web/8ce/3a5/3a0/8ce3a53a093c42d5ba7403a54346e08d.png

Aleks Versus
воздвигатель башни
useravatar
Offline
1560 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Aleks Versus написал(а):

потом берётся восточная точка — обходятся точки вокруг неё.

Вот в этом вся и суть. От того, как ты обойдешь эту точку зависит как построится твой путь. Если начнешь обходить с севера/юга, то все стрелки будут вверх/вниз, если начнешь с запада/востока, то влево/вправо, а лесенка не получится. Смена направления произойдет только после столкновения с препятствием.
Потому, чтоб появились лесенки, необходимо менять порядок обхода. Представь шахматную доску. Так вот, все черные клетки обходятся по (x+1, y), (x, y-1), (x-1, y), (x, y+1), а белые (x, y+1), (x-1, y), (x, y-1), (x+1, y). В этом случае должна появится лесенка. У меня пока не было времени проверить, но, скорее всего, так оно и есть. Как проверю, сообщу.

Кстати, получается на qsp можно писать пошаговую тактику или стратегию, да даже пошаговую веселую ферму!

dmvikar
useravatar
Offline
87 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

dmvikar,
ааа. Вон в чём дело. Извини, я так далеко ещё не вдавался. Думал, если обход делается по кругу, то направление стрелки указывается к точке, вокруг которой делается обход, и в моём воображении получалась лесенка. big_smile

Aleks Versus
воздвигатель башни
useravatar
Offline
1560 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Все проверил - работает как надо!

dmvikar
useravatar
Offline
87 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

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

1. Как именно задать фиксированный размер строк, чтобы не было изменения масштаба при сужении окна?
2. Как правильно вывести таблицу в окно дополнительного описания? Прописал "pl", таблица перенеслась, но под ней появилось огромное пустое пространство, как его избежать?

Пришел вот к такому коду таблицы, как его поправить в соответствии с вопросами, озвученными выше?

 Спойлер Show Spoiler Hide Spoiler
 

Код:

pl'<table border=1>

    <thead>
        <tr>
        <th>Персонаж</th>
        <th>Локация</th>
        </tr>
    </thead>
    <tbody>
        <tr>
        <td><center>имя1</center></td><td><center><<$tracker1>></center></td></tr>
        <tr>
        <td><center>имя2</center></td><td><center><<$tracker2></center></td></tr>
        <tr>
        <td><center>имя3</center></td><td><center><<$tracker3></center></td></tr>
    </tbody>
    </tr>
</table>'

UPD: Решил первый вопрос, но второй не могу понять как решить...
UPD: Методом перебора решил и второй вопрос. Спасибо Aleks Versus, за, когда-то написанную им, таблицу в этой же теме

в итоге код получился такой

Код:

p"<table border=1 cellspacing=0>"

p    "<tbody>"
p        "<tr bgcolor=#cfcfcf>"
p        "<td width=100><center>Персонаж</center></td><td width=130><center>Локация</center></td></tr>"
p        "<tr>"
p        "<td><center>имя1</center></td><td><center><<$tracker1>></center></td></tr>"
p        "<tr>"
p        "<td><center>имя2</center></td><td><center><<$tracker2>></center></td></tr>"
p        "<tr>"
p        "<td><center>имя1</center></td><td><center><<$tracker3>></center></td></tr>"
p    "</tbody>"
p    "</tr>"
pl"</table>"

qcezwsx
useravatar
Offline
1 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

qcezwsx,
молодец, что сам разобрался. Эти вопросы, к сожалению, задаются и задавались часто, и на них столь же часто давались ответы. В скором времени будет готова часть F.A.Q., где множество подобных вопросов будут освещены. Пока же на моём канале есть пара видео по основам HTML на QSP:
1 часть: https://www.youtube.com/watch?v=1KC_vgNKNgc
2 часть (твой вопрос): https://www.youtube.com/watch?v=KFZsJl2CjmE&t=1246s

Aleks Versus
воздвигатель башни
useravatar
Offline
1560 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

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

Код:

IF Текст = 1:

GOTO 'Локация-1'
END

IF Текст = 2:
GOTO 'Локация-2'
END

IF Текст = 3:
GOTO 'Локация-3'
END

Как сделать так, чтобы при вводе любого значения переменной "Текст", не равной 1, 2 или 3, игра переводила на "Локацию-4"? Я пробовал использовать "!" и "<>", однако почему-то каждый раз выдаёт ошибку синтаксиса hmm

De@th K!d
Мечтатель
useravatar
Offline
65 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

De@th K!d,

Код:

if text!1 and text!2 and text!3:gt'loc4'

должно сработать, если нет то

Код:

if text!1:gt'loc4'

if text!2:gt'loc4'
if text!3:gt'loc4'

Конечно, свой текст и свою локацию, мне лень язык было переключать).

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

Код:

if $text!'1'

и т.д.
Не знаю как строка ввода, а input выдает ошибку при попытке присвоить числовой переменной текстовое значение.

dmvikar
useravatar
Offline
87 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
994
Всего опросов:
14
Всего сообщений:
16790818
Сообщений на этой неделе:
3
Пользователи форума:
 
Всего пользователей:
2501
Последним зарегистрировался:
Endyr