Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 13.09.2010, 22:37   #1
DeeJex
Разработчик
 
Аватар для DeeJex
 
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений
(для 329 пользователей)
Строчка из банка

Срочно нужна была такая функция, вот накарябал быстренько, может кому и понадобится
Global Bank_ReadLine_EndPos

;sample

bank = CreateBank(16)
PokeByte bank,0,Asc("L")
PokeByte bank,1,Asc("O")
PokeByte bank,2,Asc("L")
PokeByte bank,3,Asc("!")
PokeByte bank,4,13
PokeByte bank,5,10
PokeByte bank,6,Asc("O")
PokeByte bank,7,Asc("L")
PokeByte bank,8,Asc("O")
PokeByte bank,9,Asc("L")
PokeByte bank,10,Asc("O")
PokeByte bank,11,13
PokeByte bank,12,Asc("D")
PokeByte bank,13,Asc("I")
PokeByte bank,14,Asc("C")
PokeByte bank,15,Asc("K")


Print Bank_ReadLine(bank,0)
Print Bank_ReadLine(bank,Bank_ReadLine_EndPos)
Print Bank_ReadLine(bank,Bank_ReadLine_EndPos)
WaitKey
End

;/sample

Function Bank_ReadLine$(bank,start)
Local tmp_r$,tmp_s
Bank_ReadLine_EndPos = start

While 666

If Bank_ReadLine_EndPos > BankSize(bank)-1 Then Exit

	tmp_s = PeekByte(bank,Bank_ReadLine_EndPos)
	If tmp_s = 13 Then
		If PeekByte(bank,Bank_ReadLine_EndPos+1) = 10 Then Bank_ReadLine_EndPos = Bank_ReadLine_EndPos + 1
		Exit
	End If

	tmp_r = tmp_r + Chr(tmp_s)
	Bank_ReadLine_EndPos = Bank_ReadLine_EndPos + 1

Wend

Bank_ReadLine_EndPos = Bank_ReadLine_EndPos + 1

Return tmp_r

End Function
(Offline)
 
Ответить с цитированием
Старый 14.09.2010, 23:33   #2
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Строчка из банка

Сообщение от DeeJex Посмотреть сообщение
Срочно нужна была такая функция, вот накарябал быстренько, может кому и понадобится
Можно чуть по проще сделать...

...10 минут спустя...
;Создаем банк "test" c текстом "Hello World!"
test=Bank_SaveLine("Hello World!")
;Извлекаем из банка "test" записанный текст и печатаем его
Print Bank_ReadLine(test)
;Ждем нажатия клавиши перед выключением программы (чтобы успеть прочесть результат)
WaitKey

;Функция записи текста в банк
Function Bank_SaveLine(Save_Text$)
	Local TextLen=Len(Save_Text$)
	
	bank = CreateBank(TextLen)
	For t=0 To (TextLen-1)
		PokeByte bank,t,Asc(Mid(Save_Text$,t+1,1))
	Next

	Return bank
End Function

;Функция чтения текста из банка
Function Bank_ReadLine$(bank)
	Local BankScale=BankSize(bank),t,ReadText$

	For t=1 To BankScale
		ReadText$=ReadText$+Chr(PeekByte(bank,t-1))
	Next
Return ReadText$
End Function
Терь можно и у ся в игрухе юзать)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (15.09.2010)
Старый 14.09.2010, 23:37   #3
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Строчка из банка

а для чего это?
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием
Старый 15.09.2010, 15:20   #4
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Строчка из банка

Сообщение от Ganociy Посмотреть сообщение
а для чего это?
То что сделал я, просто для записи/чтения текста в банке, я просто сам не сразу понял что делает функция DeeJex`а, и попытался перевести ее на свой лад, но потом вроде разобрался. Поидее его функция позволяет извлекать из банка записанный туда текст построчно, похоже на чтение пакетов UPD, можно попробовать использовать при создании собственного Input(ввода текста).

П.с. Если я не так понял, тогда сорь.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:01.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com