Exemple #1
0
 def get_state(cls, value):
     if value == cls.DIFFICULT:
         return DIFFICULT.LOCALISED_SPEED.get(
             DIFFICULT.get_speed(cls.get_speed())[0])
     return Color("ВКЛЮЧЕНО",
                  Color.GREEN) if cls.DATA.get(value) else Color(
                      "ВЫКЛЮЧЕНО", Color.RED)
Exemple #2
0
    def count_pixels(self):
        for i in range(self.sz):
            print(i / self.sz * 100, '%')
            self.height.append([])
            for j in range(self.sz):
                h = self.landscape[i, j]
                self.height[-1].append(h)
                global color
                if h < self.water_level:  # Water
                    color = Color(0, 0, h / 2 * 1000 / self.range)
                elif h < self.snow_level:
                    color = Color(h * 100 / self.range, h / 4 * 1000 / self.range, h / 30 * 1000 / self.range)
                else:
                    c = 1000
                    color = Color(c, c, c)

                if self.make_clouds:
                    color *= 0.2
                else:
                    color *= 0.4

                # Clouds
                if self.make_clouds:
                    h = (self.clouds[i, j] / self.range) ** 3 * self.range
                    color = (color + Color(h / 4 * 1000 / self.range, h / 4 * 1000 / self.range, h / 4 * 1000 / self.range) * 0.8)

                self.pixels[i, j] = int(color.r), int(color.g), int(color.b)

        arr = [int(filename.split('_')[0]) for filename in filter(lambda name: '_' in name, os.listdir('map_results'))]
        n = 1
        if arr:
            n += max(arr)
        self.im.save(f'map_results/{n}_map.png')
    def count_color(self, i, j):
        color = Color(0, 0, 0)

        for layer in self.layers:
            color += layer.pixels(i, j)

        return color
Exemple #4
0
    def edit_page(cls, size: SIZE_TYPE, val, title):
        if val == cls.DIFFICULT:
            p = cls.PAGES[1] % (cls.get_state(cls.DIFFICULT), '\n'.join(
                "    %s) %s" % i
                for i in enumerate(DIFFICULT.LOCALISED_SPEED.values(), 1)),
                                len(DIFFICULT.LOCALISED_SPEED) + 1)
        elif val in cls.LOCALIZED_FUNCS:
            p = cls.PAGES[0] % (cls.LOCALIZED_FUNCS[val], cls.get_state(val))
        else:
            return

        clear()
        print('\r%s' % Color(center_text(size, title), 30, 47),
              end='',
              flush=True)
        slow_print(p, 0)
        i = input()
        while True:
            if i.isnumeric():
                i = int(i)
                if i == 0:
                    return "back"
                if val == cls.DIFFICULT and i in range(1, 6):
                    cls.set_difficult(
                        list(DIFFICULT.LOCALISED_SPEED.keys())[i - 1])
                elif i in range(1, 3):
                    cls.set_any_bool(val, bool(i - 2))
                else:
                    i = input(
                        "Вы ввели данные некорректно! Попробуйте снова: ")
                    continue
                print("Изменения сохранены!", end='', flush=True)
                time.sleep(1.5)
                return
            i = input("Вы ввели данные некорректно! Попробуйте снова: ")
Exemple #5
0
class DIFFICULT:
    SUPER_HARD = 5
    HARD = 4
    NORMAL = 3
    EASY = 2
    SUPER_EASY = 1

    STR_SUPER_HARD = "super-hard"
    STR_HARD = "hard"
    STR_NORMAL = "normal"
    STR_EASY = "easy"
    STR_SUPER_EASY = "super-easy"

    LOCALISED_SPEED = {
        STR_SUPER_HARD: Color("ОЧЕНЬ СЛОЖНО", Color.RED),
        STR_HARD: Color("Сложно", Color.RED),
        STR_NORMAL: Color("Нормально", Color.YELLOW),
        STR_EASY: Color("Просто", Color.GREEN),
        STR_SUPER_EASY: Color("ОЧЕНЬ ПРОСТО", Color.GREEN),
    }

    SPEED = {
        STR_SUPER_HARD: 0.025,
        SUPER_HARD: 0.025,
        0.025: (STR_SUPER_HARD, SUPER_HARD),
        STR_HARD: 0.05,
        HARD: 0.05,
        0.05: (STR_HARD, HARD),
        STR_NORMAL: 0.1,
        NORMAL: 0.1,
        0.1: (STR_NORMAL, NORMAL),
        STR_EASY: 0.2,
        EASY: 0.2,
        0.2: (STR_EASY, EASY),
        STR_SUPER_EASY: 0.4,
        SUPER_EASY: 0.4,
        0.4: (STR_SUPER_EASY, SUPER_EASY),
    }

    @classmethod
    def get_speed(cls, diff):
        return cls.SPEED.get(diff.lower() if type(diff) is str else diff)
 def count_color(self, i, j):
     c = self[i, j] / self.start_range * 255
     return Color(c, c, c)
                if isinstance(color, Color):
                    color = color.tuple()
                pygame.draw.rect(self.win, color, [i, j, 1, 1])

        pygame.display.update()

    def __getitem__(self, item):
        return sum([layer[item] for layer in self.layers])


class ColorLayerGroup(LayerGroup):
    def __init__(self, *args, win=None, layer_class=ColorLayer):
        super().__init__(*args, win=win, layer_class=ColorLayer)

    def count_color(self, i, j):
        color = Color(0, 0, 0)

        for layer in self.layers:
            color += layer.pixels(i, j)

        return color


if __name__ == '__main__':
    pygame.init()
    win = pygame.display.set_mode((1024, 1024))

    layer_group = ColorLayerGroup(33, 512, Color(1, 256, 256), win=win)
    layer_group.show()
    input()
 def new_random_item(self):
     return Color(color_range=self.range)
 def color(self, i, j):
     color = self.pixels(i, j) / self.range * 255
     return Color(color, color, color)
Exemple #10
0
def center_text(size: SIZE_TYPE, text: str, add_right=True):
    y, x = size
    de_colored_text = Color.de_color(text)
    space_l = " " * (x // 2 - len(de_colored_text) // 2)
    space_r = " " * (x - len(space_l) - len(de_colored_text))
    return space_l + text + (space_r if add_right else '')