Advertisement
Guest User

Untitled

a guest
May 19th, 2022
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #persistent
  2. #SingleInstance, Force
  3. SetWinDelay -1
  4.  
  5. Global guiwidth := 40
  6. GLobal guiheight := 40
  7. Global Tickrate := 50
  8. Global Positions := {}
  9. Global Dir := ""
  10. Global Trails := 0
  11. Global ApplePos
  12. Global BadSpaces := {}
  13. Global MaxWidth
  14. Global MaxHeight
  15.  
  16. gui, Menu:Add, Text,, Snake/Apple Width/Height (Multiples of 10):
  17. gui, Menu:Add, Text,, TickRate:
  18. gui, Menu:Add, Button, gPlay, Play
  19. gui, Menu:Add, Edit, ym vMenuGuiWidth, %guiwidth%
  20. gui, Menu:Add, Edit, vMenuTickRate, %TickRate%
  21. gui, Menu:Show
  22. return
  23.  
  24. Play:
  25. Gui, Menu:Submit
  26. Gui, Menu:Destroy
  27. guiwidth := MenuGuiWidth
  28. guiheight := MenuGuiWidth
  29. TickRate := MenuTickRate
  30. MaxWidth := Floor((A_ScreenWidth / guiwidth) - 1)
  31. MaxHeight := Floor((A_ScreenHeight / guiheight) - 1)
  32. Positions := {"1x": guiwidth, "1y": guiheight}
  33.  
  34. Gui, Apple:New, -Border -MinimizeBox -SysMenu -Caption -MaximizeBox -Resize +AlwaysOnTop
  35. Gui, Apple:Color, Red
  36. Gui, Apple:Show, w%guiwidth% h%guiheight%, SGUIApple
  37.  
  38. GuiMaker(1,0)
  39. AppleMaker()
  40.  
  41. SetTimer, Movement, % Tickrate
  42. SetTimer, Movement, Off
  43. return
  44.  
  45. Up::
  46. Down::
  47. Left::
  48. Right::
  49. If (A_ThisHotkey = "Up" && Dir == "Down") || (A_ThisHotkey = "Left" && Dir == "Right") || (A_ThisHotkey = "Right" && Dir == "Left") || (A_ThisHotkey = "Down" && Dir == "Up")
  50.     return
  51. SetTimer, Movement, On
  52. Dir := A_ThisHotkey
  53. return
  54.  
  55. F1::
  56. Pause, Toggle
  57.  
  58. NumpadAdd::
  59. GuiMaker(Trails + 1,1)
  60. return
  61.  
  62. Movement:
  63. GuiMover()
  64. return
  65.  
  66. GuiMaker(Num, Follow) {
  67.     If !Follow {
  68.         Gui, %Num%:New, +hwndguiId -Border -MinimizeBox -SysMenu -Caption -MaximizeBox -Resize
  69.         Gui, %Num%:Add, Text
  70.         Gui, %Num%:Show, % "W" . guiwidth . "H" . guiheight . "X" . Positions[Num . "x"] . " Y" . Positions[Num . "y"]
  71.     } else {
  72.         Gui, %Num%:New, +hwndguiId -Border -MinimizeBox -SysMenu -Caption -MaximizeBox -Resize
  73.         Gui, %Num%:Add, Text
  74.         Gui, %Num%:Show, % "W" . guiwidth . "H" . guiheight . "X" . Positions[Num - 1 . "x"] . " Y" . Positions[Num - 1 . "y"]
  75.     }
  76.     Trails++
  77.     Tickrate--
  78.     SetTimer, Movement, % Tickrate
  79.     Dwm_SetWindowAttributeTransistionDisable(guiId,1)
  80.     Positions[Num . "N"] := guiId
  81. }
  82.  
  83. GuiMover() {
  84.     Loop, %Trails% {
  85.         NumX := A_Index . "X"
  86.         NumY := A_Index . "Y"
  87.         If (A_Index = 1) {
  88.             PrevX := Positions[NumX]
  89.             PrevY := Positions[NumY]
  90.             Gui, %A_Index%:Show, % "X" . Positions[A_Index . "x"] + ((Dir = "Right") ? guiwidth : ((Dir = "Left") ? -guiwidth : 0)) . " Y" . Positions[A_Index . "y"] + ((Dir = "Down") ? guiheight : ((Dir = "Up") ? -guiheight : 0)) NA
  91.             If (ApplePos = Positions[NumX] . Positions[NumY]) {
  92.                 GuiMaker(Trails + 1,1)
  93.                 AppleMaker()
  94.             }
  95.             If ((Positions[NumX] < 0) || (Positions[NumY] < 0) || (Positions[NumX] > A_ScreenWidth) || (Positions[NumY] > A_ScreenHeight) || InStr(BadSpaces, " " . Positions[NumX] . Positions[NumY]) != 0) {
  96.                 MsgBox, Game Over
  97.                 ExitApp
  98.             }
  99.             for key, value in BadSpaces {
  100.                 If (Positions[NumX] . Positions[NumY] == value) {
  101.                     MsgBox, Game Over
  102.                     ExitApp
  103.                 }
  104.             }
  105.             BadSpaces[A_Index] := Positions[NumX] . Positions[NumY]
  106.             Positions[NumX] := Positions[A_Index . "x"] + ((Dir = "Right") ? guiwidth : ((Dir = "Left") ? -guiwidth : 0))
  107.             Positions[NumY] := Positions[A_Index . "y"] + ((Dir = "Down") ? guiheight : ((Dir = "Up") ? -guiheight : 0))
  108.         } else {
  109.             TempX := Positions[NumX]
  110.             TempY := Positions[NumY]
  111.             WinMove, % "ahk_id " . Positions[A_Index . "N"] ,, PrevX, PrevY
  112.             BadSpaces[A_Index] := PrevX . PrevY
  113.             Positions[NumX] := PrevX
  114.             Positions[NumY] := PrevY
  115.             PrevX := TempX
  116.             PrevY := TempY
  117.         }            
  118.     }
  119. }
  120.  
  121. AppleMaker() {
  122.     Random, xRand, 1, %MaxWidth%
  123.     Random, yRand, 1, %MaxHeight%
  124.     x := guiwidth * xRand
  125.     y := guiheight * yRand
  126.     WinMove, SGUIApple,, %x%, %y%
  127.     ApplePos := x . y
  128. }
  129.  
  130. Dwm_SetWindowAttributeTransistionDisable(hwnd,onOff)
  131. {
  132.     ;
  133.     ;   DWMWA_TRANSITIONS_FORCEDISABLED=3
  134.     ;   Use with DwmSetWindowAttribute. Enables or forcibly disables DWM transitions.
  135.     ;   The pvAttribute parameter points to a value of TRUE to disable transitions or FALSE to enable transitions.
  136.     ;
  137.     dwAttribute:=3
  138.     cbAttribute:=4
  139.     VarSetCapacity(pvAttribute,4,0)
  140.     NumPut(onOff,pvAttribute,0,"Int")
  141.     hr:=DllCall("Dwmapi.dll\DwmSetWindowAttribute", "Uint", hwnd, "Uint", dwAttribute, "Uint", &pvAttribute, "Uint", cbAttribute)
  142.     return hr
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement