Exemple #1
0
 def __init__(self, size, snake=None, food=None, blocks=None):
     self.snake = snake or None
     self.food_count = food or size//2
     self.blocks_count = blocks or size//2
     self.objects = (self.snake, self.food, self.blocks)
     self.world_size = size
     self.world_vector = Vector((Point([0, 0]), size * Point([1, 1])))
     self.level_render = LevelRender(self.world_vector)
     self.update_level()
Exemple #2
0
class Level(object):

    snake = Blocks((), form='snake', eatable=False)
    food = Blocks((), form='food', eatable=True)
    blocks = Blocks((), form='block', eatable=False)

    def __init__(self, size, snake=None, food=None, blocks=None):
        self.snake = snake or None
        self.food_count = food or size//2
        self.blocks_count = blocks or size//2
        self.objects = (self.snake, self.food, self.blocks)
        self.world_size = size
        self.world_vector = Vector((Point([0, 0]), size * Point([1, 1])))
        self.level_render = LevelRender(self.world_vector)
        self.update_level()

    def update_level(self):
        """Draw game (while playing)."""
        self.snake.bound(self.world_size)
        self.level_render.draw_level(self.world_vector)
        if not self.food:
            self.seed_food()

        if not self.blocks:
            self.seed_blocks()

        for object in self.objects:
            for point in object:
                self.level_render.draw_point(point, object.form)
        # if self.snake.update():
        #     return True

    def create_block(self):
        random.seed()
        x = random.choice(xrange(self.world_size))
        y = random.choice(xrange(self.world_size))
        block = Point((x, y))
        for obj in self.objects:
            if block in obj:
                return
        return block

    def seed_food(self, num=None):
        num = num or self.food_count
        for x in xrange(0, num):
            meal = self.create_block()
            if meal:
                self.food.append(meal)

    def seed_blocks(self, num=None):
        num = num or self.blocks_count
        for x in xrange(0, num):
            block = self.create_block()
            if block:
                self.blocks.append(block)

    def show_level(self):
        self.level_render.show_level()