Show map always

This commit is contained in:
Anton Vakhrushev 2019-10-06 18:19:38 +03:00
parent e0b586ea6e
commit 927ca47b04
2 changed files with 50 additions and 42 deletions

View File

@ -14,14 +14,14 @@ build:
mkdir -p build mkdir -p build
./crystal build $(ENTRY_POINT) --release --no-debug --static -o build/$(APP_NAME) ./crystal build $(ENTRY_POINT) --release --no-debug --static -o build/$(APP_NAME)
.PHONY: run
run: format
./crystal run $(ENTRY_POINT)
.PHONY: format .PHONY: format
format: format:
./crystal tool format ./src ./spec ./crystal tool format ./src ./spec
.PHONY: run
run: format
./crystal run $(ENTRY_POINT)
.PHONY: spec .PHONY: spec
spec: format spec: format
./crystal spec --no-debug --warnings all --error-on-warnings --error-trace ./crystal spec --no-debug --warnings all --error-on-warnings --error-trace

View File

@ -10,40 +10,6 @@ world = Game::World.new(ts)
router = CLI::CommandRouter.new router = CLI::CommandRouter.new
router.add "st" do
printf "Stat:\n Crystals: %d\n Terraformation: %d\n",
world.resources[Game::ResourceType::Crystal],
world.resources[Game::ResourceType::Terraformation]
end
router.add "m" do
size = world.map.size
(0...size).each do |x|
if x == 0
printf "+"
(0...size).each do |y|
printf "---+"
end
print "\n"
end
printf "|"
(0...size).each do |y|
printf "%c%d%d|", world.map.get(x, y).letter, x, y
end
print "\n"
printf "|"
(0...size).each do |y|
printf "%3d|", world.map.get(x, y).cur
end
print "\n"
printf "+"
(0...size).each do |y|
printf "---+"
end
print "\n"
end
end
router.add "q" do |p| router.add "q" do |p|
items = world.queue.top(5) items = world.queue.top(5)
items.each do |i| items.each do |i|
@ -73,12 +39,58 @@ router.add "terr {x} {y}" do |p|
world.push(Game::BuildTerraformerCommand.new(point)) world.push(Game::BuildTerraformerCommand.new(point))
end end
def render_map(world)
size = world.map.size
(0...size).each do |x|
if x == 0
printf "+"
(0...size).each do |y|
printf "---+"
end
print "\n"
end
printf "|"
(0...size).each do |y|
printf "%c%d%d|", world.map.get(x, y).letter, x, y
end
print "\n"
printf "|"
(0...size).each do |y|
printf "%3d|", world.map.get(x, y).cur
end
print "\n"
printf "+"
(0...size).each do |y|
printf "---+"
end
print "\n"
end
end
def render_resources(world)
printf "Resources:\n Crystals: %5d\n Terraformation: %5d\n",
world.resources[Game::ResourceType::Crystal],
world.resources[Game::ResourceType::Terraformation]
end
def render_world(world)
printf "Now: %s\n\n", Time.unix(world.ts).to_local.to_s
if world.win?
printf "YOU WIN!!!\n\n"
end
render_resources world
printf "\n"
render_map world
printf "\n"
end
def normalize_command(cmd) def normalize_command(cmd)
cmd.downcase.gsub(/\s+/, ' ').strip cmd.downcase.gsub(/\s+/, ' ').strip
end end
printf "\u{001b}[2J" printf "\u{001b}[2J"
loop do loop do
render_world world
printf "In > " printf "In > "
cmd = read_line() cmd = read_line()
norm = normalize_command(cmd) norm = normalize_command(cmd)
@ -88,10 +100,6 @@ loop do
printf "\u{001b}[2J" printf "\u{001b}[2J"
current_time = Time.local.to_unix current_time = Time.local.to_unix
world.run current_time world.run current_time
printf "Now: %s\n\n", Time.unix(world.ts).to_local.to_s
if world.win?
printf "YOU WIN!!!\n\n"
end
router.handle cmd router.handle cmd
printf "\n" printf "\n"
end end