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

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

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

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

Ответ
 
Опции темы
Старый 21.01.2007, 01:47   #1
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Запаковка флагов в один байт.

Все что будет здесь написанно в основном касается программирования сетевых игр.

Иногда надо передать информацию весьма сжато, особенно если эта информация типа boolean (0/1). Ну например мочить своих/нет, использовать мины/нет и т.д.
вот пример как ету инфу запокавать в один байт. потом его можно chr командой привести к одной букве и отпрваить ее по сети, радуясь экономии трафика.
b=PackFlagsToByte(1,1,1,0,0,1,1,0)

For i=0 To 7
	Write(ub(b,i))
Next
WaitKey


Function PackFlagsToByte%(f0,f1,f2,f3,f4,f5,f6,f7)
	If f0<0 Then f0=0
	If f0>1 Then f0=1	
	If f1<0 Then f1=0
	If f1>1 Then f1=1
	If f2<0 Then f2=0
	If f2>1 Then f2=1
	If f3<0 Then f3=0
	If f3>1 Then f3=1
	If f4<0 Then f4=0
	If f4>1 Then f4=1
	If f5<0 Then f5=0
	If f5>1 Then f5=1
	If f6<0 Then f6=0
	If f6>1 Then f6=1
	If f7<0 Then f7=0
	If f7>1 Then f7=1
	rb%=0
	rb=f0 Shl 7+f1 Shl 6+f2 Shl 5+f3 Shl 4+f4 Shl 3+f5 Shl 2+f6 Shl 1+f7
	Return rb
End Function

Function ub%(b_%,bit)
	bit=7-bit
	Return (b_ Shr bit) Mod 2
End Function
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
3dr1aN (05.02.2009), Egor Rezenov (29.03.2011), LLI.T.A.L.K.E.R. (07.03.2011), PackegerX (04.09.2011), tormoz (11.12.2008)
Старый 21.01.2007, 11:57   #2
jimon
 
Сообщений: n/a
Re: Запаковка флагов в один байт.

1) как я помню блиц держит параметры функции по дефолту
потому лутче бы в функции PackFlagsToByte
все параметры кроме первого по дефолту поставить 0
вдруг юзеру захочется не 8 флагов записать, а 3 или 5 ?

2) имхо в той функции не нужны проверки
пусть если юзер намудачит то прога крешит
а то потом будет читать ети флаги - ему вместо 3 возвращает 1
и он будет думать долго ...
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо за это полезное сообщение:
3dr1aN (05.02.2009), impersonalis (11.12.2008), LLI.T.A.L.K.E.R. (07.03.2011)
Старый 22.01.2007, 02:42   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Запаковка флагов в один байт.

Jimon, хорошие идеи
Function PackFlagsToByte%(f0,f1=0,f2=0,f3=0,f4=0,f5=0,f6=0,f7=0).
	rb=f0 Shl 7+f1 Shl 6+f2 Shl 5+f3 Shl 4+f4 Shl 3+f5 Shl 2+f6 Shl 1+f7
	Return rb
End Function
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
3dr1aN (05.02.2009), impersonalis (11.12.2008), LLI.T.A.L.K.E.R. (07.03.2011), PackegerX (04.09.2011), polopok (02.06.2014), Randomize (10.12.2011)
Старый 11.12.2008, 12:23   #4
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Запаковка флагов в один байт.

2HolyDel & jimon
спасибо
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lib_bytes - Динамический массив байт odd Библиотеки 9 07.03.2011 19:56
И еще один ГУИ - Core Gui dimanche13 Модули для BlitzMax 0 20.12.2007 16:47
Еще один Баг... johnk Баги 3 16.03.2007 14:32
ищу один проигрыватель this Болтовня 2 29.11.2006 00:52
Тест флагов текстур pax FAQ 0 08.10.2005 20:17


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


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