OgreVorbis

HTA VBS Game Experiment

Mar 13th, 2026
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <html>
  2. <head>
  3. <title>HTA Collision Test</title>
  4.  
  5. <script language="VBScript">
  6.   window.resizeTo 845, 700 ' Set width to 800px, height to 600px
  7. </script>
  8.  
  9. <hta:application
  10.     id="app"
  11.     applicationname="HTA Collision Test"
  12.     maximizebutton="no"
  13.     border="thin"
  14.     caption="yes"
  15.     showintaskbar="yes"
  16.     singleinstance="yes"
  17.     windowstate="normal"
  18.     scroll="no"
  19. />
  20.  
  21. <style>
  22. html, body {
  23.     margin: 0;
  24.     padding: 0;
  25.     overflow: hidden;
  26.     width: 100%;
  27.     height: 100%;
  28.     background: #202020;
  29.     font-family: Arial;
  30.     color: white;
  31. }
  32.  
  33. #board {
  34.     position: relative;
  35.     width: 800px;
  36.     height: 600px;
  37.     background: #404040;
  38.     border: 2px solid white;
  39.     margin: 20px;
  40.     overflow: hidden;
  41. }
  42.  
  43. #player {
  44.     position: absolute;
  45.     left: 100px;
  46.     top: 100px;
  47.     width: 64px;
  48.     height: 64px;
  49. }
  50.  
  51. #goal {
  52.     position: absolute;
  53.     left: 500px;
  54.     top: 300px;
  55.     width: 64px;
  56.     height: 64px;
  57. }
  58.  
  59. #status {
  60.     margin-left: 20px;
  61.     font-size: 20px;
  62. }
  63. </style>
  64.  
  65. <script language="VBScript">
  66. Option Explicit
  67.  
  68. Dim posX, posY
  69. Dim stepSize
  70. Dim playerW, playerH
  71. Dim boardW, boardH
  72.  
  73. Dim goalX, goalY
  74. Dim goalW, goalH
  75. Dim goalHit
  76.  
  77. Dim keyLeft, keyRight, keyUp, keyDown
  78. Dim gameTimer
  79.  
  80. Sub Window_OnLoad
  81.     posX = 100
  82.     posY = 100
  83.     stepSize = 6
  84.  
  85.     playerW = 64
  86.     playerH = 64
  87.     boardW = 800
  88.     boardH = 600
  89.  
  90.     goalX = 500
  91.     goalY = 300
  92.     goalW = 64
  93.     goalH = 64
  94.     goalHit = False
  95.  
  96.     keyLeft = False
  97.     keyRight = False
  98.     keyUp = False
  99.     keyDown = False
  100.     gameTimer = 0
  101.  
  102.     UpdatePlayer
  103.     UpdateGoal
  104.  
  105.     msg.InnerText = "Go grab the key. Move with the arrowkeys."
  106.  
  107.     gameTimer = Window.SetInterval("GameLoop()", 20)
  108.     Document.Body.Focus
  109. End Sub
  110.  
  111. Sub Window_OnUnload
  112.     If gameTimer <> 0 Then
  113.         Window.ClearInterval gameTimer
  114.     End If
  115. End Sub
  116.  
  117. Sub Window_OnBlur
  118.     keyLeft = False
  119.     keyRight = False
  120.     keyUp = False
  121.     keyDown = False
  122. End Sub
  123.  
  124. Sub Document_OnKeyDown
  125.     Dim keyCode
  126.     keyCode = Window.Event.KeyCode
  127.  
  128.     Select Case keyCode
  129.         Case 37
  130.             keyLeft = True
  131.             FaceLeft
  132.         Case 38
  133.             keyUp = True
  134.         Case 39
  135.             keyRight = True
  136.             FaceRight
  137.         Case 40
  138.             keyDown = True
  139.     End Select
  140. End Sub
  141.  
  142. Sub Document_OnKeyUp
  143.     Dim keyCode
  144.     keyCode = Window.Event.KeyCode
  145.  
  146.     Select Case keyCode
  147.         Case 37
  148.             keyLeft = False
  149.         Case 38
  150.             keyUp = False
  151.         Case 39
  152.             keyRight = False
  153.         Case 40
  154.             keyDown = False
  155.     End Select
  156. End Sub
  157.  
  158. Sub GameLoop()
  159.     If keyLeft Then posX = posX - stepSize
  160.     If keyRight Then posX = posX + stepSize
  161.     If keyUp Then posY = posY - stepSize
  162.     If keyDown Then posY = posY + stepSize
  163.  
  164.     If posX < 0 Then posX = 0
  165.     If posY < 0 Then posY = 0
  166.     If posX > boardW - playerW Then posX = boardW - playerW
  167.     If posY > boardH - playerH Then posY = boardH - playerH
  168.  
  169.     UpdatePlayer
  170.  
  171.     If Not goalHit Then
  172.         If CheckCollision(posX, posY, playerW, playerH, goalX, goalY, goalW, goalH) Then
  173.             goalHit = True
  174.             goal.Style.Display = "none"
  175.             msg.InnerText = "Collision detected! You got it."
  176.         End If
  177.     End If
  178. End Sub
  179.  
  180. Sub UpdatePlayer
  181.     player.Style.Left = posX & "px"
  182.     player.Style.Top = posY & "px"
  183. End Sub
  184.  
  185. Sub UpdateGoal
  186.     goal.Style.Left = goalX & "px"
  187.     goal.Style.Top = goalY & "px"
  188. End Sub
  189.  
  190. Function CheckCollision(x1, y1, w1, h1, x2, y2, w2, h2)
  191.     If x1 + w1 <= x2 Then
  192.         CheckCollision = False
  193.         Exit Function
  194.     End If
  195.  
  196.     If x1 >= x2 + w2 Then
  197.         CheckCollision = False
  198.         Exit Function
  199.     End If
  200.  
  201.     If y1 + h1 <= y2 Then
  202.         CheckCollision = False
  203.         Exit Function
  204.     End If
  205.  
  206.     If y1 >= y2 + h2 Then
  207.         CheckCollision = False
  208.         Exit Function
  209.     End If
  210.  
  211.     CheckCollision = True
  212. End Function
  213.  
  214. Sub FaceLeft
  215.     player.Style.Filter = ""
  216. End Sub
  217.  
  218. Sub FaceRight
  219.     player.Style.Filter = "fliph"
  220. End Sub
  221. </script>
  222. </head>
  223.  
  224. <body tabindex="0">
  225.     <div id="board">
  226.         <img id="player" src="player.png">
  227.         <img id="goal" src="goal.png">
  228.     </div>
  229.  
  230.     <div id="msg">Ready.</div>
  231. </body>
  232. </html>
Advertisement
Add Comment
Please, Sign In to add comment