вторник, 30 июня 2015 г.

Опять переписал генератор регионов.

   Уже наверное, пора ярлык вводить - "переписал генератор регионов". Однако, буду еще переписывать, похоже, есть такое ощущение... Еще добавил для регионов генерацию словаря связанных регионов, со списком индексов общих блоков для каждого. Оно будет надо сильно впоследствии, для вывода юнита в соседний регион.
  Так и не сообразил, как указать высоту блока, тем более, что блок может иметь сразу несколько высот. Типа "b,c,b,a" - весь диапазон высот присутствует. Это для "а,а,а,а" или "с,с,с,с" - никаких проблем.  Надо думать...
Ниже код, хотя без кода классов, оно малопонятно. Длиннота:

пятница, 26 июня 2015 г.

Немного переписал генератор регионов.

А то совсем странно выглядело. Сейчас оно сделано так:

def genRegions(self):
        tempRegionList = []
        for currentBrick in self.brickList:
            if currentBrick.regions == []:
                relList = []
                tempList = list(currentBrick.relatedList)
                for i in tempList:
                    brick = self.brickList[i]
                    #print(brick.h - currentBrick.h)
                    if (brick.regions != [] or 
                    brick.h - currentBrick.h > self.maxH or 
                    self.getDistTo2(currentBrick.position, brick.position) > self.regionDist):
                        brick.regions.append(currentBrick.index)
                        relList.append(brick.index)
                    else:
                        brick.regions.append(currentBrick.index)
                        relList.append(brick.index)
                        #print(brick.relatedList)
                        for appB in brick.relatedList:
                            if appB not in tempList:
                                tempList.append(appB)
                            
                        
                #print(currentBrick.index, relList)
                newRegion = landRegion.landRegion(currentBrick.index, relList)
                tempRegionList.append(newRegion)
                        
        print(tempRegionList)                 
        return 0

Еще надо дописать определение соседних регионов и списка общих точек. И как сделать определение высоты точки, вот в чем вопрос, ведь один блок ландшафта может содержать в себе все уровни высоты...

воскресенье, 7 июня 2015 г.

Начал набрасывать генератор регионов.

   Зато пока сообразил, как сделать, чуть мозг не поломал, но вроде сдвинулось с мертвой точки, тьфу-тьфу-тьфу... Здорово помог MyPaint - редактор графический. Рисовал вручную точки, соединял их линиями, пытался прикинуть, как оно должно работать. Немножко отвлекся, нарисовал картинку, смотрите ниже. Код пока еще страшный, состоит только из генератора списка блоков. Наверное вынесу его в отдельную функцию - пригодится для расчета полей зрения и вообще... Сам класс региона я написал аж в двух вариантах, и оба пойдут в утиль. Еще надо написать определение связанных регионов. Код ниже: