treasure/map_type.nim

55 lines
1.1 KiB
Nim

import strutils
import sequtils
import random
import input_type
type
Tile* = enum
tileEmpty, tileTreasure
Map* = seq[seq[Tile]]
proc generateMap*(input: Input): Map =
let treasureCount = input.treasure_count
# create empty map
for i in 0..input.size:
result.add(@[])
for j in 0..input.size:
result[i].add(tileEmpty)
# populate treasures
var addedTreasures = 0
while addedTreasures < treasureCount:
let randX = rand(input.size - 1)
let randY = rand(input.size - 1)
if result[randX][randY] == tileEmpty:
result[randX][randY] = tileTreasure
inc addedTreasures
func tileToString*(tile: Tile): string =
case tile:
of tileEmpty:
" "
of tileTreasure:
"T"
func lineToString*(line: seq[Tile]): string =
line.map(tileToString).join()
proc mapToString*(map: Map): string =
map.map(lineToString).join("\n")
proc printMap*(map: Map) =
map.mapToString().echo()
func getTreasures*(map: Map): seq[(int, int)] =
var treasures: seq[(int, int)]
for y in 0..map.high():
for x in 0..map[0].high():
if map[y][x] == tileTreasure:
treasures.add((x, y))
return treasures