Как сделать?
…
saroff:
Можно ли часть стоки пристыковать к правому краю экрана, а часть к левому (при отображении)?
т.е. чтобы на экране выглядело примерно так:ТТТ НННН Е РРРну и так далее. При этом выводимые значения меняются.
{<table width='100%'><tr>
<td align='left'>ТТТ
Е</td>
<td align='right'>НННН
РРР</td></tr></table>}
UPD:
$text_left = '123
45'
$text_right = '678
910'
"<table width='100%'><tr><td align='left'>" + $text_left + "</td><td align='right'>" + $text_right + "</td></tr></table>"
Так лучше.
Здравствуйте,
Нашел в данной теме пример кода и исправил как советовали. Все работает, но я решил допилить менюшку для яблоков с возможностью просмотра свойств конкретного яблока, поскольку свойств у яблок много. Сейчас на любом яблоке отображаются только свойства последнего созданного рандомом. Вопрос в том как сделать чтобы созданные яблоки запоминали свои свойства?
$onobjsel = 'Яблоки'
$сорт[1] = 'антоновка'
$вкус[1] = 'кислый'
$цвет[1] = 'зеленый'
вес_мин[1] = 50
вес_макс[1] = 100
$сорт[2] = 'белый налив'
$вкус[2] = 'сладкий'
$цвет[2] = 'белый'
вес_мин[2] = 65
вес_макс[2] = 125
! И вот в йаблоневый сад пришел пионэр с корзинкой. Начинает собирать яблоки. Тут вроде все просто:
ACT 'Сорвать ньютоновку':
a = arrsize ('яблоко_в_корзине')
яблоко_в_корзине[a] = 1
вес[a] = RAND (вес_мин[1],вес_макс[1])
addobj 'Яблоко'
END
ACT 'Сорвать белый налив':
a = arrsize ('яблоко_в_корзине')
яблоко_в_корзине[a] = 2
вес[a] = RAND (вес_мин[2],вес_макс[2])
addobj 'Яблоко'
END
ACT 'Съесть белый налив':
killvar 'яблоко_в_корзине', 1
delobj 'Яблоко'
END
ACT 'Отдать антоновку врагу':
killvar 'яблоко_в_корзине', 2
delobj 'Яблоко'
END
ACT 'Поглядеть в корзинку':
всего = arrsize ('яблоко_в_корзине')
msg 'У тимуровца в корзинке <<всего>> яблок'
END
svandrus,
Все работает
у тебя ошибки в действиях “Съесть белый налив” и “Отдать антоновку врагу”. Попробуй найти сам.
как сделать чтобы созданные яблоки запоминали свои свойства?
Использовать массив. Собственно ты это уже сделал - для созданных яблок запоминается вес.
Ошибка в смысле удаляется любое яблоко, независимо от того, такое было добавлено?
Вес яблока, а еще его вид и вкусность, запоминаются только для последнего добавленного. Его свойства я могу посмотреть, а вот как смотреть свойства добавленных ранее? Вызов меню на любых остальных показывает эти же значения…
svandrus,
если я правильно понял, ты всякий раз добавляешь предмет “яблоко”. Но понимаешь ли, когда ты щёлкаешь по этому предмету мышкой, движок не понимает, какое конкретно яблоко ты имеешь ввиду. Чтобы он как-нибудь различал, добавленные предметы, тебе нужно обозначить их в инвентаре номерами (для примера). Если не хочешь, чтобы номера были видны, спрячь их в угловые скобки. Т.е. действия “сорвать яблоко” выглядят так:
ACT 'Сорвать ньютоновку':
a = arrsize ('яблоко_в_корзине')
!...
яблоко_в_корзине[a] = 1
вес_этого_яблока[a] = RAND (вес_мин[1],вес_макс[1])
$сорт_этого_яблока[a]='ньютоновка'
$цвет_этого_яблока[a]='розовый'
!...
addobj 'Яблоко<'+str(a)+'>'
END
Теперь на локации ‘Яблоки’ нужно выяснить номер яблока:
место_левой_скобки=instr($selobj,'<')
место_правой_скобки=instr($selobj,'>')
номер_яблока=val(mid($selobj,место_левой_скобки+1,место_правой_скобки-место_левой_скобки-1))
! и уже по этому номеру выводишь свойства:
*pl вес_этого_яблока[номер_яблока]
*pl $сорт_этого_яблока[номер_яблока]
*pl $цвет_этого_яблока[номер_яблока]
Вообще не лучшая идея мучаться с какими-то “свойствами яблок”, когда можно написать нормальную игру и получить за неё 4000 :)
Лучше, конечно, помучаться.
Aleks Versus, идея с присвоением номера понятна. Я недооценил раздел справки касаемо работы со строками. Но пока почему-то не получается по-твоему …
А конкретнее? Что именно не получается?
Aleks Versus:
А конкретнее? Что именно не получается?
Сделал по-твоему, но где-то есть ошибка, а поскольку я ни разу не программист у меня кипят мозги при виде “Ошибка в строке 39”, когда нумерованных строк всего 24..
я сделал проще - ввел новую переменную счетчик (типа b=b+1), получив ’Яблоко[b]’, без вывертов поиска по строке. Но опять подвох: selobj перестал воспринимать так пронумерованные яблоки, поэтому меню не возникает.
Первоначальную задачу (свою) вроде бы решил (с твоей помощью), теперь думаю правильно ли? Надо попробовать на кошках…
*** Однако, нет. Ошибки были мои, но и меню вызывается только на последнем яблоке.
У меня в коде была ошибка, если ты его скопировал, а не вдумчиво перепечатал.:) Я там “плюс” пропустил. Сейчас исправил.
А то, что selobj не воспринимает нумерованные яблоки - это нормально. Теперь у тебя получается список предметов
яблоко<1>
яблоко<2>
яблоко<3>
Если ты прописал вывод свойств для $selobj=‘Яблоко’, то ‘яблоко<1>’ и т.д. уже не котируются - это другие предметы. Тебе опять же необходимо проверять не $selobj=‘яблоко’, а instr($selobj,’яблоко’)!0. Т.е. выглядит это всё как-то так:
Spoiler
if instr($selobj,'Яблоко')!0:
место_левой_скобки=instr($selobj,'<')
место_правой_скобки=instr($selobj,'>')
номер_яблока=val(mid($selobj,место_левой_скобки+1,место_правой_скобки-место_левой_скобки-1))
! и уже по этому номеру выводишь свойства:
*pl вес_этого_яблока[номер_яблока]
*pl $сорт_этого_яблока[номер_яблока]
*pl $цвет_этого_яблока[номер_яблока]
end
Работает!! Спасибо. Теперь возникает необходимость оптимизации инвентаря, а то если яблок будет штук 500 остальные предметы в корзинке пионера будут как-то плохо заметны.
svandrus:
Работает!! Спасибо. Теперь возникает необходимость оптимизации инвентаря, а то если яблок будет штук 500 остальные предметы в корзинке пионера будут как-то плохо заметны.
Вообще-то с этого стоило начинать :)
newsash:
Вообще-то с этого стоило начинать
Мне нужно было понять принцип - однотипные предметы с разными свойствами. А исчисляемые однотипные предметы я умею. Это не совсем то.
svandrus:
то если яблок будет штук 500 остальные предметы в корзинке пионера будут как-то плохо заметны.
На самом деле это делается довольно просто. Даёшь предмету ещё одно свойство “количество” (новый массив “количество_яблок[]”), и перед добавлением проверяешь, нет ли уже у тебя предмета с такими свойствами (но не по свойству “количество”). Если предмет с точно такими же свойствами уже есть, вместо добавления просто увеличиваешь количество этого предмета (количество_яблок[номер_яблока]+=1), если нет, тогда создаёшь новый предмет, как было описано выше. Ну и у нового предмета будет опять же количество = 1.
А можно не складывая яблоки в инвентарь набрать их в массив, а потом, на другой локации вытащить их из этого массива кучей или списком и уже тогда рассматривать?