RU 📌 Pinned

Как сделать?

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

Gildmaster,
Ответил в новой теме: Подробности использования массивов

Dark[Ol(U23)leneri] #34 26.07.2010 13:17 (15 years ago)

А чего такого непонятного в массивах?

Dark,
для тех, кто не знаком с программированием, это очень сложная, и вечно больная тема.

Dark[Ol(U23)leneri] #34 26.07.2010 14:54 (15 years ago)

Просто на незнакомых понятиях объясняешь=)

Объясняй к примеру на пронумерованных ведрах хД

$ведро[номер ведра]=‘содержимое ведра хДДД’

Следующий вопрос!
добавляю код:act”подняться на второй этаж” pl “на 2-ой этаж” & wait 2000 & :goto”второй этаж”
как сделать чтоб надпись:”на 2-ой этаж” пропала,ато надписи в дополнительном описании не исчезают??????

Оператор clr

Dark[Ol(U23)leneri] #34 27.07.2010 13:25 (15 years ago)

код:act”подняться на второй этаж” pl “на 2-ой этаж” & wait 2000 & clr & :goto”второй этаж”

Dark[Ol(U23)leneri] #34 28.07.2010 11:21 (15 years ago)

$aa=‘дневник’

$a[0]=‘осмотреть:!осмотреть’
$a[1]=‘взять/положить:!взять/положить’
$a[2]=‘прочесть:!прочесть’

if selobj=‘<<$aa>>’: menu ‘$a’ & unsel

add obj ‘дневник’

теперь… при добавлении записи в дневник, у меня выполняется следующий код:

set v=v+1
set $y[v]=input(’Сделайте запись в свой дневник’)

if v>T*ctr:
set ctr=ctr+1
set $z1[1+ctr]=‘прочесть записи на’+’<<ctr>> стр.:!read’
end

Изначально:
v=0
T=количеству записей на страницу
ctr=номер страницы

При прочтении:

*pl ‘<<args>>’

!===========================================
! args=3 - первая страница
if args>2: set v2=args-3
! v2=0 - следовательно значения v1=T*v2= от 0

v1=T*v2
:loop
if v1<=v2+T: ‘<<$y[v1]>>’ & v1=v1+1 else exit
jump ‘loop’

Как сделать, чтобы при просмотре первой страницы выходило (допустим T=10) первые десять записей, а при просмотре 2ой страницы - следующие 10 и т.д.

Dark[Ol(U23)leneri] #34 28.07.2010 11:27 (15 years ago)

Вроде сам решил проблему

Как-то громоздко выглядит :)
Тем не менее, если v2 это номер страницы, то

v1=v2*T
v_end=v1+T
:loop
if v1<v_end: $y[v1] & v1=v1+1 & jump 'loop'

Это если индексация с 0 :)

Dark[Ol(U23)leneri] #34 28.07.2010 11:34 (15 years ago)

Byte, не поверишь) Также сделал)

v1=T*v2
v3=v1+T
:loop
if v1<=v3: '<<$y[v1]>>' & v1=v1+1  else exit
jump 'loop'
# 1
ACT 'input':
	:str
	$y[v]=input 'Введите строку <<v>>'
	if $y[v]!'':
		if v>=t*(ctr+1):ctr=ctr+1
		$mnu[ctr]='прочесть записи на <<ctr+1>> стр.:!read'
		v=v+1
		jump 'str'
	end
	
END
ACT 'menu':
	menu 'mnu'
END
v=0
t=3
ctr=0
--- 1 ---------------------------------

# !read
i=args-1

v1=i*t
v_end=v1+t
:rec
if v1<v_end:
	$y[v1]
	v1=v1+1
	jump 'rec'
end
--- !read ---------------------------------
Dark[Ol(U23)leneri] #34 28.07.2010 13:02 (15 years ago)

в итоге сделал так:

Локация "сделать запись"
set $y[v]=input('Сделайте запись в свой дневник')
if $y[v]!'':
set v=v+1

if v>T*ctr+1:
set ctr=ctr+1
set $z1[1+ctr]='прочесть записи на'+'<<ctr>> стр.:!read'

end
end

Локация "читать"
*clr
gs '<<$prevloc>>'

*pl '<<args>>'

!===========================================
! args=3 - первая страница
if args>2: set v2=args-3
! v2=0 - следовательно значения v1=T*v2= от 0 

v1=T*v2+1
v3=v1+T-1
'v1=<<v1>>'

'
v3=<<v3>>'
:loop
if v1<=v3: '<<$y[v1]>>' & v1=v1+1  else exit
jump 'loop'

ну разумеется, лишнее уберу)

Как-то странно выглядит, возможно здесь ошибки.

Dark[Ol(U23)leneri] #34 28.07.2010 13:18 (15 years ago)

Возможно… но результат выдает отлично. Проверял вбивая числительные)

Log in or Register to post comments.