Add map generator

This commit is contained in:
Anton Vakhrushev 2019-10-10 16:38:18 +03:00
parent f03a13ce66
commit 6fa9a7cf8e
4 changed files with 18 additions and 12 deletions

View File

@ -3,7 +3,8 @@ require "../src/game/world"
describe "World" do describe "World" do
it "should build crystal harvester" do it "should build crystal harvester" do
world = Game::World.new map = Game::Generator.make 5, 5
world = Game::World.new map
point = Game::Point.new 2, 3 point = Game::Point.new 2, 3
cmd = Game::BuildCrystalHarvesterCommand.new(point) cmd = Game::BuildCrystalHarvesterCommand.new(point)
world.push(cmd) world.push(cmd)
@ -12,7 +13,8 @@ describe "World" do
end end
it "should fail when not enought resources" do it "should fail when not enought resources" do
world = Game::World.new map = Game::Generator.make 5, 5
world = Game::World.new map
point = Game::Point.new 2, 3 point = Game::Point.new 2, 3
cmd = Game::BuildCrystalRestorerCommand.new(point) cmd = Game::BuildCrystalRestorerCommand.new(point)
expect_raises(Game::NotEnoughtResources) do expect_raises(Game::NotEnoughtResources) do

View File

@ -2,8 +2,9 @@ require "colorize"
require "./game/**" require "./game/**"
require "./cli/**" require "./cli/**"
map = Game::Generator.make 5, 10
ts = Time.local.to_unix ts = Time.local.to_unix
world = Game::World.new(ts) world = Game::World.new map, ts
router = CLI::CommandRouter.new router = CLI::CommandRouter.new

View File

@ -20,19 +20,15 @@ module Game
property data : DataArray property data : DataArray
def initialize(@rows : Int32, @cols : Int32) def initialize(@rows : Int32, @cols : Int32, tile_type = PlateauTile)
@data = DataArray.new @rows @data = DataArray.new @rows
@rows.times do |row_index| @rows.times do |row_index|
tile_row = TileRow.new @cols tile_row = TileRow.new @cols
@cols.times do |col_index| @cols.times do |col_index|
tile_row << PlateauTile.new(Point.new(row_index, col_index)) tile_row << tile_type.new(Point.new(row_index, col_index))
end end
@data << tile_row @data << tile_row
end end
self.set(MainBaseTile.new(Point.new(0, 0)))
self.set(CrystalTile.new(Point.new(1, 2), 100))
self.set(CrystalTile.new(Point.new(4, 2), 200))
self.set(CrystalTile.new(Point.new(3, 3), 100))
end end
getter rows getter rows
@ -80,6 +76,14 @@ module Game
end end
end end
class MapGenerator class Generator
def self.make(rows, cols) : Map
map = Map.new(rows, cols)
map.set(MainBaseTile.new(Point.new(0, 0)))
map.set(CrystalTile.new(Point.new(1, 2), 100))
map.set(CrystalTile.new(Point.new(4, 2), 200))
map.set(CrystalTile.new(Point.new(3, 3), 100))
map
end
end end
end end

View File

@ -3,9 +3,8 @@ require "./resources"
class Game::World class Game::World
property ts : Int64 property ts : Int64
def initialize(@ts = 0_i64) def initialize(@map : Map, @ts = 0_i64)
@start_ts = @ts @start_ts = @ts
@map = Map.new 5, 5
@resources = Resources.new @resources = Resources.new
@queue = Queue.new @queue = Queue.new
@finished = false @finished = false