def expandContinentBy(self, cont, numBlocks): # this plot is not valid; choose an in-bounds plot adjacent to an existing plot and try again: #print "expand continent by", numBlocks blockOrder = CvUtil.shuffle(len(cont.blocks), self.mapRand) for blockIndex in blockOrder: x,y = cont.blocks[blockIndex] dirOrder = CvUtil.shuffle(len(cardinal_directions), self.mapRand) for dirIndex in dirOrder: dx, dy = cardinal_directions[dirIndex] if self.isValid(x+dx,y+dy, cont): cont.addBlock(x+dx,y+dy) land_value = 208 + self.mapRand.get(48, "Expand Continent PYTHON") self.setValue(x+dx, y+dy, land_value) #print "\tadded block", x+dx, y+dy if (numBlocks > 1): return self.expandContinentBy(cont, numBlocks-1) else: return True print "\tcould not expand continent:" printMap(self.data, self.w, self.h, cont.centerx, cont.centery) cont.done = True return False
def findValid(self, x, y, dist=-1): if (dist == -1): dist = max(self.w, self.h) if (dist > 0): foundx, foundy = self.findValid(x, y, dist-1) if (foundx != -1 and foundy != -1): return foundx, foundy plots = [] for dx in range(-dist, dist+1): for dy in range(-dist, dist+1): if max(abs(dx), abs(dy)) == dist: plots.append((x+dx, y+dy)) plotOrder = CvUtil.shuffle(len(plots), self.mapRand) for plotIndex in plotOrder: tryx, tryy = plots[plotIndex] if self.isValid(tryx, tryy): return tryx, tryy return -1, -1