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

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

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

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

Ответ
 
Опции темы
Старый 06.10.2005, 23:50   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Во многих играх есть нужда в подстройке управления под игрока. Когда в моей Bombers3d возникла такая нужда, то я написал следующую функцию для того чтобы поймать сканкод какой-либо клавиши:
Function PressedKey%()
	FlushKeys
	WaitKey()
	Repeat
 *For I%=1 To 255
 *	If KeyDown(I) Then 
 * *FlushKeys
 * *Return I
 *	EndIf
 *Next
	Forever
End Function
А потом понадобилось выводить имена назначеных клавиш и я создал массив с их именами индексом которого является сканкод:
Dim BattonNames$(255)
For BN=0 To 255
	BattonNames$(BN)=""
Next
BattonNames$(1)="ESCAPE"
BattonNames$(2)="1"
BattonNames$(3)="2"
BattonNames$(4)="3"
BattonNames$(5)="4"
BattonNames$(6)="5"
BattonNames$(7)="6"
BattonNames$(8)="7"
BattonNames$(9)="8"
BattonNames$(10)="9"
BattonNames$(11)="0"
BattonNames$(12)="-"
BattonNames$(13)="="
BattonNames$(14)="Backspace"
BattonNames$(15)="Tab"
BattonNames$(16)="Q"
BattonNames$(17)="W"
BattonNames$(18)="E"
BattonNames$(19)="R"
BattonNames$(20)="T"
BattonNames$(21)="Y"
BattonNames$(22)="U"
BattonNames$(23)="I"
BattonNames$(24)="O"
BattonNames$(25)="P"
BattonNames$(26)="["
BattonNames$(27)="]"
BattonNames$(28)="Return/Enter"
BattonNames$(29)="Left Control"
BattonNames$(30)="A"
BattonNames$(31)="S"
BattonNames$(32)="D"
BattonNames$(33)="F"
BattonNames$(34)="G"
BattonNames$(35)="H"
BattonNames$(36)="J"
BattonNames$(37)="K"
BattonNames$(38)="L"
BattonNames$(39)=";"
BattonNames$(40)="'"
BattonNames$(41)="Grave #"
BattonNames$(42)="Left Shift"
BattonNames$(43)="\"
BattonNames$(44)="Z"
BattonNames$(45)="X"
BattonNames$(46)="C"
BattonNames$(47)="V"
BattonNames$(48)="B"
BattonNames$(49)="N"
BattonNames$(50)="M"
BattonNames$(51)=","
BattonNames$(52)="."
BattonNames$(53)="/"
BattonNames$(54)="Right Shift"
BattonNames$(55)="NumPad *"
BattonNames$(56)="Left Alt"
BattonNames$(57)="Space"
BattonNames$(58)="Capital"
BattonNames$(59)="F1"
BattonNames$(60)="F2"
BattonNames$(61)="F3"
BattonNames$(62)="F4"
BattonNames$(63)="F5"
BattonNames$(64)="F6"
BattonNames$(65)="F7"
BattonNames$(66)="F8"
BattonNames$(67)="F9"
BattonNames$(68)="F10"
BattonNames$(69)="NumLock"
BattonNames$(70)="Scroll Lock"
BattonNames$(71)="NumPad 7"
BattonNames$(72)="NumPad 8"
BattonNames$(73)="NumPad 9"
BattonNames$(74)="NumPad -"
BattonNames$(75)="NumPad 4"
BattonNames$(76)="NumPad 5"
BattonNames$(77)="NumPad 6"
BattonNames$(78)="NumPad +"
BattonNames$(79)="NumPad 1"
BattonNames$(80)="NumPad 2"
BattonNames$(81)="NumPad 3"
BattonNames$(82)="NumPad 0"
BattonNames$(83)="NumPad ."
BattonNames$(86)="OEM_102"
BattonNames$(87)="F11"
BattonNames$(88)="F12"
BattonNames$(100)="F13"
BattonNames$(101)="F14"
BattonNames$(102)="F15"
BattonNames$(112)="Kana"
BattonNames$(115)="ABNT_C1"
BattonNames$(121)="Convert"
BattonNames$(123)="NoConvert"
BattonNames$(125)="Yen"
BattonNames$(126)="ABNT_C2"
BattonNames$(141)="Numpad Equals"
BattonNames$(144)="PrevTrack"
BattonNames$(145)="AT"
BattonNames$(146)=":"
BattonNames$(147)="Underline"
BattonNames$(148)="Kanji"
BattonNames$(149)="Stop"
BattonNames$(150)="AX"
BattonNames$(151)="Unlabeled"
BattonNames$(153)="Next Track"
BattonNames$(156)="Numpad Enter"
BattonNames$(157)="Right Control"
BattonNames$(160)="Mute"
BattonNames$(161)="Calculator"
BattonNames$(162)="Play/Pause"
BattonNames$(164)="Media Stop"
BattonNames$(174)="Volume Down"
BattonNames$(176)="Volume Up"
BattonNames$(178)="Web Home"
BattonNames$(179)="NumPod ,"
BattonNames$(181)="NumPod /"
BattonNames$(183)="SysReq"
BattonNames$(184)="Right Alt"
BattonNames$(197)="Pause"
BattonNames$(199)="Home"
BattonNames$(200)="Up"
BattonNames$(201)="Page Up"
BattonNames$(203)="Left"
BattonNames$(205)="Right"
BattonNames$(207)="End"
BattonNames$(208)="Down"
BattonNames$(209)="Next"
BattonNames$(210)="Insert"
BattonNames$(211)="Delete"
BattonNames$(219)="Left Windows"
BattonNames$(220)="Right Windows"
BattonNames$(221)="Apps"
BattonNames$(222)="Power"
BattonNames$(223)="Sleep"
BattonNames$(227)="Wake"
BattonNames$(229)="Web Search"
BattonNames$(230)="Web Favorites"
BattonNames$(231)="Web Refresh"
BattonNames$(232)="Web Stop"
BattonNames$(233)="Web Forward"
BattonNames$(234)="Web Back"
BattonNames$(235)="My Computer"
BattonNames$(236)="Mail"
BattonNames$(237)="Media Select"
Это пока все что я хотел сказать
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hulk-DS (07.10.2011)
Старый 07.10.2005, 00:16   #2
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
только нужно еще учесть, что кнопки NumLock и Pause/Break в стандартном хелпе перепутаны... или может быть у нас русские клавы хз.. во всяком случае это надо иметь ввиду..
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 07.10.2005, 00:23   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Кстати эти кнопки не ловятся вообще, даже незнаю почему
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.10.2005, 00:24   #4
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Во многих играх есть нужда в подстройке управления под игрока.
...
Хм, тут есть повеселее методы. Ну вот, к примеру.
С именами просто. Чтоб не набивать код программы не нужной пургой, создаем .CFG файл со сканкодами клавиш. А в конце- имена кнопок мыша(!). См.аттач.

Загружаем всю эту радость в массив и выводим потом по мере необходимости в меню.
Dim KeyName$(255)
LoadKeyName=ReadFile("Scancodes.cfg")
While Not Eof(LoadKeyName)
 KeyName$(q)=ReadLine(LoadKeyName)
Wend
...
А так проверяем в настройках ввод пользователя и присваиваем комманде с номером "Option" соответствующий сканкод:
Repeat
;Проверка нажатия клавиши
 *For NCode=1 To 237
 * If KeyHit(NCode) Then
 * *KeyCommand(Option)=nCode
  Goto PrCheckKey
 * EndIf
 *Next
;Проверка нажатия кнопки мыша
 *For MBtn=1 To 3
 * If MouseHit(MBtn) Then
 * *KeyCommand(Option)=MBtn+237
  Goto PrCheckKey
 * EndIf
 *Next
Forever
.PrCheckKey
А потом в игре просто проверяем:
...
;комманда №6: действие
If (KeyHit(KeyCommand(6))=True Or MouseHit(KeyCommand(6)-237)) Then Action(Player)
;комманда №7: прыжок.
If (KeyHit(KeyCommand(7))=True Or MouseHit(KeyCommand(7)-237)) Then Jump(Player)
...
Универсально, коротко и держит мышь.

P.S. Очепятка была. Поправил.
(Offline)
 
Ответить с цитированием
Старый 07.10.2005, 00:38   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Чтоб не набивать код программы не нужной пургой, создаем .CFG файл
Массив в программе я создал для того чтобы никто не мог его изменить.
И поместил я его в отдельный *.BB файл чтобы не мешался.

Когда начну делать обработку мыши учту твой совет. Спасибо. Хотя имена кнопкам мыши я давать наверное небуду. Просто сделаю так:

MBName$="Mouse Button " + WaitMouse()
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 30.10.2005, 01:26   #6
Matt Merkulov
Модератор
 
Аватар для Matt Merkulov
 
Регистрация: 23.10.2005
Сообщений: 219
Написано 62 полезных сообщений
(для 247 пользователей)
Можно через DATA/READ, чтобы все было в одном файле. А еще есть программа, которая вообще любое изменение контроллера фиксирует:
http://blitzetc.boolean.name/code/Userinputsystem.bb
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление KingMaks Blitz3D 4 27.11.2009 01:56
управление в RPG JeSss 3D-программирование 37 16.01.2008 18:46


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


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