Esempio n. 1
0
    def test_contiguous_city_tiles(self):
        #FIRST:  Contiguous city tile test.
        #Question asked: Does our algorithm properly determine what cities are connectable in the most basic case?

        map = surface_map.SurfaceMap(4, 4)
        map.clearMap('water')
        map.getTile(0, 0).terrain = 'grass'
        map.getTile(0, 1).terrain = 'grass'
        map.getTile(0, 2).terrain = 'grass'

        A = map.getTile(0, 2)
        B = map.getTile(0, 0)
        A.city = "A"
        B.city = "B"

        map.getTile(2, 2).terrain = 'grass'
        map.getTile(2, 2).city = "C"

        lis = surface_map.findJoinableCitySets(map)
        num_groups = 0
        while (lis):
            cur = lis.pop()
            if (
                    len(cur) == 2
            ):  #There needs to be one list of length two containing A and B.
                t = cur.pop()
                num_groups += 1
                self.assertTrue(t.city == 'A' or t.city == 'B')
            elif (len(cur) == 1):
                t = cur.pop()
                self.assertTrue(t.city == 'C')
                num_groups += 1
Esempio n. 2
0
    def test_complex_a_star_validity(self):

        #now:  We need to test our A* algorithm on a more complex route, requiring routing around obstacles.
        map = surface_map.SurfaceMap(10, 10)
        map.clearMap('water')
        map.getTile(0, 0).terrain = 'grass'
        map.getTile(0, 1).terrain = 'grass'
        map.getTile(0, 2).terrain = 'grass'
        map.getTile(0, 3).terrain = 'grass'
        map.getTile(0, 4).terrain = 'grass'
        map.getTile(1, 4).terrain = 'grass'
        map.getTile(2, 4).terrain = 'grass'
        map.getTile(3, 4).terrain = 'grass'
        map.getTile(4, 4).terrain = 'grass'
        map.getTile(5, 4).terrain = 'grass'
        map.getTile(5, 3).terrain = 'grass'
        map.getTile(5, 2).terrain = 'grass'
        map.getTile(5, 1).terrain = 'grass'
        map.getTile(5, 0).terrain = 'grass'
        A2 = map.getTile(5, 0)
        B2 = map.getTile(0, 0)
        A2.city = "A"
        B2.city = "B"
        astar2 = surface_map._AStarNodeMap(map, A2, B2)
        result2 = astar2.getAStarResult()
        self.assertTrue(map.getTile(4, 4) in result2)
        self.assertTrue(len(result2) == 14)
        invalid_tiles = [tile for tile in result2 if tile.terrain == 'water']
        self.assertTrue(len(invalid_tiles) == 0)
Esempio n. 3
0
    def restart(self, x = 50, y = 50, polar_bias = 1, island_bias = 1, percent_water = surface_map.PERCENT_WATER):
        self.map_dict[ABOVE_GROUND] = surface_map.SurfaceMap(x,y)
        self.map_dict[ABOVE_GROUND].polar_bias = surface_map.POLAR_BIAS * polar_bias
        self.map_dict[ABOVE_GROUND].island_bias = surface_map.ISLAND_BIAS * island_bias
        self.map_dict[ABOVE_GROUND].percent_water = percent_water

        self.map_dict[BELOW_GROUND] = cavern_map.CavernMap(x,y)

        for m in self.map_dict:
            self.map_dict[m].remake()
Esempio n. 4
0
 def test_map_gen(self):
     map = surface_map.SurfaceMap(80, 20)
     map.wrap_x = True
     map.wrap_y = True
     map.smoothness = 10
     map.remake()
     self.assertTrue(
         isPrettyClose(map.getTile(79, 0).height,
                       map.getTile(0, 0).height),
         "got these values for height: " + str(map.getTile(79, 0).height) +
         "  " + str(map.getTile(0, 0).height))
     self.assertTrue(
         isPrettyClose(
             map.getTile(79, 19).height,
             map.getTile(79, 0).height),
         "got these values for height: " + str(map.getTile(79, 0).height) +
         "  " + str(map.getTile(0, 0).height))
Esempio n. 5
0
    def test_simple_a_star(self):
        #Now, a test of the AStarNodeMap in the most basic case.

        map = surface_map.SurfaceMap(10, 10)
        map.clearMap('water')
        map.getTile(0, 0).terrain = 'grass'
        map.getTile(0, 1).terrain = 'grass'
        map.getTile(0, 2).terrain = 'grass'

        A = map.getTile(0, 2)
        B = map.getTile(0, 0)
        A.city = "A"
        B.city = "B"

        map.getTile(2, 2).terrain = 'grass'
        map.getTile(2, 2).city = "C"

        astar = surface_map._AStarNodeMap(map, A, B)
        result = astar.getAStarResult()
        self.assertTrue(result[0] == B)
        self.assertTrue(result[1].terrain == 'grass')
        self.assertTrue(result[2] == A)
Esempio n. 6
0
    def test_a_star_correctness(self):
        map = surface_map.SurfaceMap(7, 7)
        map.clearMap('water')
        map.getTile(0, 0).terrain = 'grass'
        map.getTile(0, 1).terrain = 'grass'
        map.getTile(0, 2).terrain = 'grass'
        map.getTile(1, 2).terrain = 'grass'
        map.getTile(2, 2).terrain = 'grass'
        map.getTile(3, 2).terrain = 'grass'
        map.getTile(4, 2).terrain = 'grass'
        #below should not get traversed (this is the long way around)
        map.getTile(0, 3).terrain = 'grass'
        map.getTile(0, 4).terrain = 'grass'
        map.getTile(1, 4).terrain = 'grass'
        map.getTile(2, 4).terrain = 'grass'
        map.getTile(3, 4).terrain = 'grass'
        map.getTile(4, 4).terrain = 'grass'
        map.getTile(5, 4).terrain = 'grass'
        map.getTile(5, 3).terrain = 'grass'
        #above should not be traversed
        map.getTile(5, 2).terrain = 'grass'
        map.getTile(5, 1).terrain = 'grass'
        map.getTile(5, 0).terrain = 'grass'

        A2 = map.getTile(5, 0)
        B2 = map.getTile(0, 0)
        A2.city = "A"
        B2.city = "B"
        astar2 = surface_map._AStarNodeMap(map, A2, B2)
        result2 = astar2.getAStarResult()
        self.assertTrue(map.getTile(4, 4) not in result2)
        self.assertTrue(
            map.getTile(5, 2) in result2,
            [tile.x.__str__() + ", " + tile.y.__str__() for tile in result2])
        self.assertTrue(map.getTile(3, 2) in result2)
        self.assertTrue(len(result2) == 10)
        invalid_tiles = [tile for tile in result2 if tile.terrain == 'water']
        self.assertTrue(len(invalid_tiles) == 0)
Esempio n. 7
0
 def test_road_building(self):
     map = surface_map.SurfaceMap(10, 10)
     map.clearMap('water')
     map.getTile(0, 0).city = 'B'
     map.getTile(0, 0).terrain = 'grass'
     map.getTile(0, 1).terrain = 'grass'
     map.getTile(0, 2).terrain = 'grass'
     map.getTile(0, 3).terrain = 'grass'
     map.getTile(0, 4).terrain = 'grass'
     map.getTile(1, 4).terrain = 'grass'
     map.getTile(2, 4).terrain = 'grass'
     map.getTile(3, 4).terrain = 'grass'
     map.getTile(4, 4).terrain = 'grass'
     map.getTile(5, 4).terrain = 'grass'
     map.getTile(5, 3).terrain = 'grass'
     map.getTile(5, 2).terrain = 'grass'
     map.getTile(5, 1).terrain = 'grass'
     map.getTile(5, 0).terrain = 'grass'
     map.getTile(5, 0).city = 'A'
     map.drawRoadsBetweenCities()
     self.assertTrue(map.getTile(4, 4).road is not None)
     self.assertTrue(map.getTile(5, 0).road is not None)
     self.assertTrue(map.getTile(0, 0).road is not None)
Esempio n. 8
0
 def __init__(self):
     self.size = 50
     self.map_dict = {ABOVE_GROUND : surface_map.SurfaceMap(self.size, self.size),
                      BELOW_GROUND : cavern_map.CavernMap(self.size, self.size)}