Skip to content

Instantly share code, notes, and snippets.

@dbriemann
Created May 21, 2018 19:00
Show Gist options
  • Save dbriemann/308c3939d228c68d96335c520b2be0cd to your computer and use it in GitHub Desktop.
Save dbriemann/308c3939d228c68d96335c520b2be0cd to your computer and use it in GitHub Desktop.
Agario Fake Grid
package main
import (
"time"
"github.com/faiface/pixel"
"github.com/faiface/pixel/imdraw"
"github.com/faiface/pixel/pixelgl"
"golang.org/x/image/colornames"
)
var (
width = 1000
height = 800
blob pixel.Vec
gridCanvas *pixelgl.Canvas
gridSize float64 = 50
gridPos pixel.Vec
imd *imdraw.IMDraw
)
func run() {
cfg := pixelgl.WindowConfig{
Title: "Agario Fake Grid",
Bounds: pixel.R(0, 0, 1000, 800),
VSync: true,
}
win, err := pixelgl.NewWindow(cfg)
if err != nil {
panic(err)
}
gridCanvas = pixelgl.NewCanvas(pixel.R(0-2*gridSize, 0-2*gridSize, float64(width)+2*gridSize, float64(height)+2*gridSize))
screenCenter := pixel.V(float64(width)/2, float64(height)/2)
lineDraw := imdraw.New(nil)
for x := gridCanvas.Bounds().Min.X; x <= gridCanvas.Bounds().Max.X; x += gridSize {
lineDraw.Push(pixel.V(x, gridCanvas.Bounds().Min.Y), pixel.V(x, gridCanvas.Bounds().Max.Y))
lineDraw.Line(2)
}
for y := gridCanvas.Bounds().Min.Y; y <= gridCanvas.Bounds().Max.Y; y += gridSize {
lineDraw.Push(pixel.V(gridCanvas.Bounds().Min.X, y), pixel.V(gridCanvas.Bounds().Max.X, y))
lineDraw.Line(2)
}
lineDraw.Draw(gridCanvas)
imd = imdraw.New(nil)
start := time.Now()
now := start
for !win.Closed() {
last := now
now = time.Now()
dt := now.Sub(last).Seconds()
if win.Pressed(pixelgl.KeyRight) {
blob.X += 100 * dt
}
if win.Pressed(pixelgl.KeyLeft) {
blob.X -= 100 * dt
}
if win.Pressed(pixelgl.KeyUp) {
blob.Y += 100 * dt
}
if win.Pressed(pixelgl.KeyDown) {
blob.Y -= 100 * dt
}
// Adjust grid pos in gridSize steps.
if blob.X-gridPos.X >= gridSize {
gridPos.X += gridSize
} else if blob.X-gridPos.X <= -gridSize {
gridPos.X -= gridSize
}
if blob.Y-gridPos.Y >= gridSize {
gridPos.Y += gridSize
} else if blob.Y-gridPos.Y <= -gridSize {
gridPos.Y -= gridSize
}
win.Clear(colornames.Skyblue)
gridMatrix := pixel.IM.Moved(gridPos)
gridCanvas.Draw(win, gridMatrix)
imd.Clear()
imd.Color = colornames.Black
imd.Push(blob)
imd.Circle(25, 0)
imd.Draw(win)
centerCam := pixel.IM.Moved(screenCenter.Sub(blob))
win.SetMatrix(centerCam)
win.Update()
}
}
func main() {
pixelgl.Run(run)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment