RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2426225 views

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>"

Так лучше.

Edited at 08.10.2013 19:49 (12 years ago)

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

$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,

Все работает

у тебя ошибки в действиях “Съесть белый налив” и “Отдать антоновку врагу”. Попробуй найти сам.

как сделать чтобы созданные яблоки запоминали свои свойства?

Использовать массив. Собственно ты это уже сделал - для созданных яблок запоминается вес.

Ошибка в смысле удаляется любое яблоко, независимо от того, такое было добавлено?
Вес яблока, а еще его вид и вкусность, запоминаются только для последнего добавленного. Его свойства я могу посмотреть, а вот как смотреть свойства добавленных ранее? Вызов меню на любых остальных показывает эти же значения…

Aleks Versus Moderator 15.10.2013 09:49 (12 years ago)

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 Moderator 15.10.2013 14:24 (12 years ago)

А конкретнее? Что именно не получается?

Aleks Versus:

А конкретнее? Что именно не получается?

Сделал по-твоему, но где-то есть ошибка, а поскольку я ни разу не программист у меня кипят мозги при виде “Ошибка в строке 39”, когда нумерованных строк всего 24..
я сделал проще - ввел новую переменную счетчик (типа b=b+1), получив ’Яблоко[b]’, без вывертов поиска по строке. Но опять подвох: selobj перестал воспринимать так пронумерованные яблоки, поэтому меню не возникает.
Первоначальную задачу (свою) вроде бы решил (с твоей помощью), теперь думаю правильно ли? Надо попробовать на кошках…

*** Однако, нет. Ошибки были мои, но и меню вызывается только на последнем яблоке.

Aleks Versus Moderator 15.10.2013 16:09 (12 years ago)

У меня в коде была ошибка, если ты его скопировал, а не вдумчиво перепечатал.:) Я там “плюс” пропустил. Сейчас исправил.
А то, что 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:

Вообще-то с этого стоило начинать

Мне нужно было понять принцип - однотипные предметы с разными свойствами. А исчисляемые однотипные предметы я умею. Это не совсем то.

Aleks Versus Moderator 15.10.2013 18:38 (12 years ago)

svandrus:

то если яблок будет штук 500 остальные предметы в корзинке пионера будут как-то плохо заметны.

На самом деле это делается довольно просто. Даёшь предмету ещё одно свойство “количество” (новый массив “количество_яблок[]”), и перед добавлением проверяешь, нет ли уже у тебя предмета с такими свойствами (но не по свойству “количество”). Если предмет с точно такими же свойствами уже есть, вместо добавления просто увеличиваешь количество этого предмета (количество_яблок[номер_яблока]+=1), если нет, тогда создаёшь новый предмет, как было описано выше. Ну и у нового предмета будет опять же количество = 1.

А можно не складывая яблоки в инвентарь набрать их в массив, а потом, на другой локации вытащить их из этого массива кучей или списком и уже тогда рассматривать?

Log in or Register to post comments.