コード例 #1
0
ファイル: main.go プロジェクト: ajhager/rog
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()
	}
}
コード例 #2
0
ファイル: main.go プロジェクト: ajhager/rog
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)
}