Ejemplo n.º 1
0
 def newMap(self):
     print("NEW MAP!")
     self.map = MapCreator.mapGen(120, 160)[0]
     for i in range(len(self.map)):
         for j in range(len(self.map[i])):
             (self.c.create_rectangle(5 * (i + 2), 5 * (j + 8), 5 * (i + 3), 5 * (j + 9),
                                      fill=self.colors[int(self.map[i][j])],
                                      outline='black'))
Ejemplo n.º 2
0
    def gameSetup(self):
        tempSize = self.gameSize.get("1.0", "end")
        tempSize = int(tempSize.strip())
        if tempSize - (tempSize % 3) != 0:
            self.size = tempSize - (tempSize % 3)
            self.frame.destroy()
            self.frame = Frame(self.window, width=1000, height=1000)
            print("yeet")
            self.frame.pack()
            self.map = MapCreator.mapGen(
                self.size)  # Replace with map generator
            self.drawMap()
            self.gameStarted = TRUE

        else:
            print("Please enter a valid number")
Ejemplo n.º 3
0
    def create(cls, num):
        def get_count(obj):
            return randint(obj["min-count"], obj["max-count"])

        # Получаем генераторы:
        map_gen = cls.levels[num - 1]['map']  # карты
        obj_gen = cls.levels[num - 1]['obj']  # объектов

        # Создаем карту
        cls._map = MC.GameMap(map_gen.get(cls.map_obj))

        # Дополняем перечень объектов, загруженных из настроечного файла, данными общими для всех карт
        for group in (cls.obj_lib.objects, cls.obj_lib.ally):
            for name, info in group.items():
                obj_gen.enemy_list[name] = get_count(info)
                obj_gen.enemy_list[name] = get_count(info)

        # Дополняем перечень объектов, полным списоком врагов
        for name in cls.obj_lib.enemies:
            obj_gen.enemy_list.setdefault(name, 0)

        # Создаем словарь из координат и названия объекта
        objects = obj_gen.get(cls._map)

        cls._obj = []
        for coord, name in objects.items():
            if name == "hero":
                # Координаты героя
                cls._hero_pos = list(coord)
            elif name in cls.obj_lib.enemies:
                # Враждебные юниты
                obj_info = cls.obj_lib.enemies[name]
                cls._obj.append(
                    Objects.Enemy(obj_info["sprite"], obj_info["stats"],
                                  obj_info["experience"], coord))
            elif name in cls.obj_lib.objects:
                # Неодушевленные объекты
                obj_info = cls.obj_lib.objects[name]
                cls._obj.append(
                    Objects.Ally(obj_info["sprite"], obj_info["action"],
                                 coord))
            elif name in cls.obj_lib.ally:
                # Союзные или нейтральные объекты
                obj_info = cls.obj_lib.ally[name]
                cls._obj.append(
                    Objects.Ally(obj_info["sprite"], obj_info["action"],
                                 coord))
Ejemplo n.º 4
0
    ret = []
    for i in range(len(array)):
        temp = []
        for j in range(len(array[i])):
            if ((i == x1) and (j == y1)):
                temp.append("5")
            elif ((i == x2) and (j == y2)):
                temp.append("6")
            else:
                temp.append(array[i][j])
        ret.append(temp)
    return ret


for i in range(5):
    map, hard_terrain = MapCreator.mapGen(120, 160)
    for j in range(10):
        posx1, posy1, posx2, posy2 = MapCreator.getCoordinates(map)
        mapTemp = mapHelper(posx1, posy1, posx2, posy2, map)
        savefile = open("maps/map%s/map%s.txt" % (i, j), 'w')
        ogOutPut = sys.stdout
        sys.stdout = savefile
        print(posx1, posy1)
        print(posx2, posy2)
        for x in range(len(hard_terrain)):
            print(hard_terrain[x][0], hard_terrain[x][1])
        for x in range(len(mapTemp)):
            for y in range(len(mapTemp[i])):
                print(mapTemp[x][y], end=" ")
            print()
Ejemplo n.º 5
0
class LevelGenerator:
    obj_lib = None
    graph_lib = None
    map_obj = {
        WALL: MC.Tail(False),
        FLOOR: [MC.Tail(True), MC.Tail(True),
                MC.Tail(True)]
    }
    levels = []
    _map = None
    _obj = None
    _hero_pos = None

    @classmethod
    def total(cls):
        return len(cls.levels)

    @classmethod
    def load(cls, file):
        with open(file, "r") as file:
            cls.levels = yaml.load(file.read())['levels']

        cls.levels = [] if cls.levels is None else cls.levels

    @classmethod
    def set_libs(cls, obj_lib):
        # Библиотека с описанием объектов
        cls.obj_lib = obj_lib
        # Спрайты стен и пола, все тайлы на картах будут ссылаться на них
        cls.map_obj[WALL].sprite = cls.obj_lib.textures[WALL]["sprite"]

        for i, obj in enumerate(cls.map_obj[FLOOR]):
            obj.state = i
            obj.sprite = cls.obj_lib.textures[FLOOR]["sprite"]

    @classmethod
    def hero_coord(cls):
        # Координаты героя
        return cls._hero_pos

    @classmethod
    def map(cls):
        # Объект Карта
        return cls._map

    @classmethod
    def objects(cls):
        # Список объектов на карте
        return cls._obj

    @classmethod
    def create(cls, num):
        def get_count(obj):
            return randint(obj["min-count"], obj["max-count"])

        # Получаем генераторы:
        map_gen = cls.levels[num - 1]['map']  # карты
        obj_gen = cls.levels[num - 1]['obj']  # объектов

        # Создаем карту
        cls._map = MC.GameMap(map_gen.get(cls.map_obj))

        # Дополняем перечень объектов, загруженных из настроечного файла, данными общими для всех карт
        for group in (cls.obj_lib.objects, cls.obj_lib.ally):
            for name, info in group.items():
                obj_gen.enemy_list[name] = get_count(info)
                obj_gen.enemy_list[name] = get_count(info)

        # Дополняем перечень объектов, полным списоком врагов
        for name in cls.obj_lib.enemies:
            obj_gen.enemy_list.setdefault(name, 0)

        # Создаем словарь из координат и названия объекта
        objects = obj_gen.get(cls._map)

        cls._obj = []
        for coord, name in objects.items():
            if name == "hero":
                # Координаты героя
                cls._hero_pos = list(coord)
            elif name in cls.obj_lib.enemies:
                # Враждебные юниты
                obj_info = cls.obj_lib.enemies[name]
                cls._obj.append(
                    Objects.Enemy(obj_info["sprite"], obj_info["stats"],
                                  obj_info["experience"], coord))
            elif name in cls.obj_lib.objects:
                # Неодушевленные объекты
                obj_info = cls.obj_lib.objects[name]
                cls._obj.append(
                    Objects.Ally(obj_info["sprite"], obj_info["action"],
                                 coord))
            elif name in cls.obj_lib.ally:
                # Союзные или нейтральные объекты
                obj_info = cls.obj_lib.ally[name]
                cls._obj.append(
                    Objects.Ally(obj_info["sprite"], obj_info["action"],
                                 coord))
Ejemplo n.º 6
0
 def create_objects(cls):
     return MC.EmptyMapSpawn(cls.__name__)
Ejemplo n.º 7
0
 def create_map(cls):
     return MC.EndMapSurface(cls.__name__)
Ejemplo n.º 8
0
 def create_objects(cls):
     return MC.RandomSpawn(cls.__name__)
Ejemplo n.º 9
0
 def create_map(cls):
     return MC.SpecialMapGenerator(cls.__name__)
Ejemplo n.º 10
0
 def create_map(cls):
     return MC.RandomMapSurface(cls.__name__)
Ejemplo n.º 11
0
 def create_objects(cls):
     return MC.ObjSpawn(cls.__name__)