Guest User

Untitled

a guest
May 26th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "time"
  5.  
  6. "github.com/faiface/pixel"
  7. "github.com/faiface/pixel/imdraw"
  8. "github.com/faiface/pixel/pixelgl"
  9. "golang.org/x/image/colornames"
  10. )
  11.  
  12. var (
  13. width = 1000
  14. height = 800
  15.  
  16. blob pixel.Vec
  17. gridCanvas *pixelgl.Canvas
  18. gridSize float64 = 50
  19. gridPos pixel.Vec
  20.  
  21. imd *imdraw.IMDraw
  22. )
  23.  
  24. func run() {
  25. cfg := pixelgl.WindowConfig{
  26. Title: "Agario Fake Grid",
  27. Bounds: pixel.R(0, 0, 1000, 800),
  28. VSync: true,
  29. }
  30. win, err := pixelgl.NewWindow(cfg)
  31. if err != nil {
  32. panic(err)
  33. }
  34.  
  35. gridCanvas = pixelgl.NewCanvas(pixel.R(0-2*gridSize, 0-2*gridSize, float64(width)+2*gridSize, float64(height)+2*gridSize))
  36. screenCenter := pixel.V(float64(width)/2, float64(height)/2)
  37.  
  38. lineDraw := imdraw.New(nil)
  39. for x := gridCanvas.Bounds().Min.X; x <= gridCanvas.Bounds().Max.X; x += gridSize {
  40. lineDraw.Push(pixel.V(x, gridCanvas.Bounds().Min.Y), pixel.V(x, gridCanvas.Bounds().Max.Y))
  41. lineDraw.Line(2)
  42. }
  43. for y := gridCanvas.Bounds().Min.Y; y <= gridCanvas.Bounds().Max.Y; y += gridSize {
  44. lineDraw.Push(pixel.V(gridCanvas.Bounds().Min.X, y), pixel.V(gridCanvas.Bounds().Max.X, y))
  45. lineDraw.Line(2)
  46. }
  47. lineDraw.Draw(gridCanvas)
  48.  
  49. imd = imdraw.New(nil)
  50.  
  51. start := time.Now()
  52. now := start
  53. for !win.Closed() {
  54. last := now
  55. now = time.Now()
  56. dt := now.Sub(last).Seconds()
  57.  
  58. if win.Pressed(pixelgl.KeyRight) {
  59. blob.X += 100 * dt
  60. }
  61. if win.Pressed(pixelgl.KeyLeft) {
  62. blob.X -= 100 * dt
  63. }
  64. if win.Pressed(pixelgl.KeyUp) {
  65. blob.Y += 100 * dt
  66. }
  67. if win.Pressed(pixelgl.KeyDown) {
  68. blob.Y -= 100 * dt
  69. }
  70.  
  71. // Adjust grid pos in gridSize steps.
  72. if blob.X-gridPos.X >= gridSize {
  73. gridPos.X += gridSize
  74. } else if blob.X-gridPos.X <= -gridSize {
  75. gridPos.X -= gridSize
  76. }
  77. if blob.Y-gridPos.Y >= gridSize {
  78. gridPos.Y += gridSize
  79. } else if blob.Y-gridPos.Y <= -gridSize {
  80. gridPos.Y -= gridSize
  81. }
  82.  
  83. win.Clear(colornames.Skyblue)
  84.  
  85. gridMatrix := pixel.IM.Moved(gridPos)
  86. gridCanvas.Draw(win, gridMatrix)
  87.  
  88. imd.Clear()
  89. imd.Color = colornames.Black
  90. imd.Push(blob)
  91. imd.Circle(25, 0)
  92. imd.Draw(win)
  93.  
  94. centerCam := pixel.IM.Moved(screenCenter.Sub(blob))
  95.  
  96. win.SetMatrix(centerCam)
  97.  
  98. win.Update()
  99. }
  100. }
  101.  
  102. func main() {
  103. pixelgl.Run(run)
  104. }
Add Comment
Please, Sign In to add comment