func main() { rog.Open(40, 20, 1, false, "pathfinding", nil) for rog.Running() { if rog.Mouse().Left.Released { limit := image.Rect(0, 0, 40, 20) target := image.Pt(rog.Mouse().Cell.X, rog.Mouse().Cell.Y) path = rog.Path(level, limit, level.player, target) } for y := 0; y < 20; y++ { for x := 0; x < 40; x++ { rog.Set(x, y, nil, nil, string(level.data[y][x])) } } rog.Set(level.player.X, level.player.Y, nil, nil, "@") for _, p := range path { if p.X != level.player.X || p.Y != level.player.Y { rog.Set(p.X, p.Y, rog.Red, nil, "*") } } if rog.Key() == rog.Esc { rog.Close() } rog.Flush() } }
func example() { if first { first = false for y := 0; y < height; y++ { for x := 0; x < width; x++ { if tmap[y][x] == '#' { pmap.Block(x, y, true) } } } movePlayer(23, 9) } if rog.Mouse().Left.Released { limit := image.Rect(0, 0, 40, 20) target := image.Pt(rog.Mouse().Cell.X, rog.Mouse().Cell.Y) path = rog.Path(level, limit, image.Pt(x, y), target) } switch rog.Key() { case 'k': movePlayer(x, y-1) case 'j': movePlayer(x, y+1) case 'h': movePlayer(x-1, y) case 'l': movePlayer(x+1, y) case rog.Esc: rog.Close() } for cy := 0; cy < pmap.Height(); cy++ { for cx := 0; cx < pmap.Width(); cx++ { rog.Set(cx, cy, nil, rog.Black, " ") if pmap.Look(cx, cy) { i := intensity(x, y, cx, cy, 20) if tmap[cy][cx] == '#' { rog.Set(cx, cy, nil, wall.Scale(i), "") } else { rog.Set(cx, cy, rog.Scale(1.5), floorc.Scale(i), "✵") } } } } rog.Set(x, y, lgrey, nil, "웃") for _, p := range path { if p.X != x || p.Y != y { rog.Set(p.X, p.Y, lgrey, nil, "*") } } runtime.ReadMemStats(&stats) rog.Fill(0, 0, rog.Width(), 1, lgrey, rog.Dodge(dgrey), ' ') rog.Set(0, 0, nil, nil, "%vFPS %vMB %vGC %vGR", rog.Fps(), stats.HeapAlloc/1000000, stats.NumGC, runtime.NumGoroutine()) rog.Fill(0, height-1, rog.Width(), 1, lgrey, rog.Dodge(dgrey), ' ') rog.Set(0, height-1, nil, nil, "Pos: %v %v Cell: %v %v", rog.Mouse().Pos.X, rog.Mouse().Pos.Y, rog.Mouse().Cell.X, rog.Mouse().Cell.Y) }