Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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)
- }
Add Comment
Please, Sign In to add comment