Бегущая строка
Участников: 2
Страница 1 из 1
Бегущая строка
Написалась вот такая процедурка:
- Код:
SUB EscStr (row AS INTEGER, col AS INTEGER, s AS STRING)
DIM l AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
s = STRING$ (LEN (s), 32) + s + STRING$ (2, 32)
l = LEN (s)
FOR j = 1 TO l
FOR i = 1 TO l
MID$ (s, i, 1) = MID$ (s, i + 1, 1)
NEXT
LOCATE row, col: PRINT s
SLEEP 150
NEXT
END SUB
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа
Re: Бегущая строка
Немного преобразовал и вроде получилось то, что надо:
- Код:
SUB EscStr (row AS INTEGER, col AS INTEGER, s AS STRING)
DIM l AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
s = STRING$ (LEN (s), 32) + s + STRING$ (LEN (s), 32)
l = LEN (s)
FOR j = 1 TO l
FOR i = 1 TO l
MID$ (s, i, 1) = MID$ (s, i + 1, 1)
MID$ (s, l, 1) = MID$ (s, 1, 1)
NEXT
LOCATE row, col: PRINT s
SLEEP 150
NEXT
END SUB
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа
Re: Бегущая строка
вай жуть, непонял вопрса, но мож так делать проще?
- Код:
sub sBS(byref pStr as string)
cls
print pStr
sleep 300
sBS right(pStr, 1) & left(pStr, len(pStr)-1)
end sub
sBS "qwerty"
Re: Бегущая строка
Может я и не прав в корне, но рекурсия входит в те приёмы программирования, использование которых я стараюсь избегать
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа
Re: Бегущая строка
понял, тада так
если чесно, то и я недолюбливаю рекурсии, но иногда они значительно упрощают жизнь
- Код:
dim as string pStr
dim as integer i
pStr="qwerty"
for i=1 to 30
cls
print pStr
pStr=right(pStr, 1) & left(pStr, len(pStr)-1)
sleep 300
next i
если чесно, то и я недолюбливаю рекурсии, но иногда они значительно упрощают жизнь
Re: Бегущая строка
Решил сравнить скорость наших вариантов. Написал такой код:
- Код:
SUB EscStr (row AS INTEGER, col AS INTEGER, pStr AS STRING)
DIM l AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
pStr = STRING$ (LEN (pStr), 32) + pStr + STRING$ (LEN (pStr), 32)
l = LEN (pStr)
FOR j = 1 TO l
FOR i = 1 TO l
MID$ (pStr, i, 1) = MID$ (pStr, i + 1, 1)
MID$ (pStr, l, 1) = MID$ (pStr, 1, 1)
NEXT
LOCATE row, col: PRINT pStr
SLEEP 150
NEXT
END SUB
SUB sBS (row AS INTEGER, col AS INTEGER, BYREF pStr AS STRING)
DIM i AS INTEGER
pStr = STRING$ (LEN (pStr), 32) + pStr + STRING$ (LEN (pStr), 32)
FOR i = 1 to LEN (pStr)
LOCATE row, col: PRINT pStr
pStr = RIGHT$(pStr, 1) & LEFT$(pStr, LEN (pStr)-1)
SLEEP 150
NEXT
END SUB
DIM AS INTEGER t1, t2
t1 = TIMER
ESCSTR (1, 10, "Hello, world!!!")
t2 = TIMER
PRINT t2 - t1
SLEEP
CLS
t1 = TIMER
SBS (1, 10, "Hello, world!!!")
t2 = TIMER
PRINT t2 - t1
SLEEP
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|