Ooops
November 25, 2020, 08:15:19 AM

Author Topic: [bb] Input Key System for Games by xmlspy [ 1+ years ago ]  (Read 540 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Input Key System for Games by xmlspy [ 1+ years ago ]
« on: June 29, 2017, 12:28:42 AM »
Title : Input Key System for Games
Author : xmlspy
Posted : 1+ years ago

Description : Managing Input keys for games
I decided to manage my key inputs for better control on character animations and actions.
Now I can throw stuff in the Case statements and I will exactly know where to go if one of the actions is not working or not functioning correctly.
pardon da french!


Code :
Code: BlitzBasic
  1. ;managing Input keys for games
  2. ;I decided to manage my key inputs for better control
  3. ;on character animations
  4. ;Now I can throw stuff in the Case statements and I will
  5. ;exactly know where to go if one of the actions is not
  6. ;working or not functioning correctly.
  7. ;pardon da french
  8.  
  9. Gosub example
  10.  
  11. Type ikey
  12.         Field number, action$, style
  13.         Field state
  14. End Type
  15.  
  16. ;number
  17. ;style - 0 = keydown(), 1 = keyhit()
  18.  
  19. Function NewIKey(number, action$, style=0)
  20.         ik.ikey = New ikey
  21.         ik
  22. umber = number
  23.         ikaction = action
  24.         ikstyle = style
  25. End Function
  26.  
  27. Function DeleteIKey(number)
  28.         For ik.ikey = Each ikey
  29.                 If ik
  30. umber = number Then Delete ik.ikey : Exit
  31.         Next
  32. End Function
  33.  
  34. Function ChangeIKey(number, action$, style=0)
  35.         For ik.ikey = Each ikey
  36.                 If ik
  37. umber = number Then
  38.                         ikaction = action
  39.                         ikstyle = style
  40.                         Exit
  41.                 EndIf
  42.         Next
  43. End Function
  44.  
  45. Function InputKeys()
  46.         For ik.ikey = Each ikey
  47.                 If ikstyle Then
  48.                         ikstate = KeyHit(ik
  49. umber)
  50.                 Else
  51.                         ikstate = KeyDown(ik
  52. umber)
  53.                 EndIf
  54.         Next
  55. End Function
  56.  
  57. Function ManageKeys()
  58.         For ik.ikey = Each ikey
  59.                 If ikstate Then
  60.                         Select ikaction
  61.                                 Case "MoveForward"
  62.                                         message$ = "Moving Forward"
  63.                                         ;Here I can add the code to move my mesh forward, or call a function
  64.                                 Case "MoveBackward"
  65.                                         message$ = "Move Backward"
  66.                                 Case "MoveLeft"
  67.                                         message$ = "Move Left"
  68.                                 Case "MoveRight"
  69.                                         message$ = "Move Right"
  70.                                 Case "Jump"
  71.                                         ;message$ = "Jump" : way too fast for message$
  72.                                         DebugLog "Jump"
  73.                                 Case "Attack"
  74.                                         message$ = "Attack"
  75.                                 Case "Exit"
  76.                                         End
  77.                         End Select
  78.                 EndIf
  79.         Next
  80. End Function
  81.  
  82. Function ClearKeys()
  83.         For ik.ikey = Each ikey
  84.                 ikstate = 0
  85.         Next
  86. End Function
  87.  
  88. Function SaveIkeys(File$)
  89.         fo = WriteFile(File$)
  90.                 For ik.ikey = Each ikey
  91.                         WriteInt fo, ik
  92. umber
  93.                         WriteString fo, ikaction
  94.                         WriteInt fo, ikstyle
  95.                 Next
  96.         CloseFile(fo)
  97. End Function
  98.  
  99. Function LoadIkeys(File$)
  100.         If FileType(File$) Then
  101.                 fi = ReadFile(File$)
  102.                         Repeat
  103.                                 NewIKey(ReadInt(fi), ReadString(fi), ReadInt(fi))
  104.                         Until Eof(fi)
  105.                 CloseFile(fi)
  106.         EndIf
  107. End Function
  108.  
  109. .example
  110.         NewIkey(57,"Jump",1)
  111.         NewIkey(1,"Exit")
  112.         NewIkey(2,"Attack")
  113.         NewIkey(3,"MoveForward")
  114.         NewIkey(4,"MoveBackward")
  115.         Global message$
  116.        
  117.         Repeat
  118.                 Cls
  119.                 InputKeys()
  120.                 ManageKeys()
  121.                 Text 0, 0, "message: " + message$
  122.                 Text 0, 20, "123 and esc"
  123.                 Flip
  124.                 ClearKeys() : message$ = ""
  125.         Forever
  126. Return


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal