Esempio n. 1
0
class DrawMap(object):

    def __init__(self):
        self.no_of_fields_h = 10
        self.no_of_fields_v = 10
        self.field_size = 72
        self.floor_image = PhotoImage(file="assets/floor.png")
        self.wall_image = PhotoImage(file="assets/wall.png")
        self.canvas = canvas
        self.dice = Dice()

        dice_result_1 = self.dice.roll_the_dice()
        self.hero = Hero(dice_result_1[0], dice_result_1[1], canvas)
        draw_hero(self.hero)

        dice_result_2 = self.dice.roll_the_dice()
        self.boss = Boss(dice_result_2[0], dice_result_2[1], canvas)
        draw_boss(self.boss)

        dice_result_3 = self.dice.roll_the_dice()
        self.skeleton_1 = Skeleton(dice_result_3[0], dice_result_3[1], canvas)
        draw_skeleton_1(self.skeleton_1)

        dice_result_4 = self.dice.roll_the_dice()
        self.skeleton_2 = Skeleton(dice_result_4[0], dice_result_4[1], canvas)
        draw_skeleton_2(self.skeleton_2)

        dice_result_5 = self.dice.roll_the_dice()
        self.skeleton_3 = Skeleton(dice_result_5[0], dice_result_5[1], canvas)
        draw_skeleton_3(self.skeleton_3)

        self.map_1 = [[1,0,0,1,0,1,0,0,0,0],
                    [0,0,0,1,0,1,0,1,1,0],
                    [0,1,1,1,0,1,0,1,1,0],
                    [0,0,0,0,0,1,0,0,0,0],
                    [1,1,1,1,0,1,1,1,1,0],
                    [0,1,0,1,0,0,0,0,1,0],
                    [0,1,0,1,0,0,0,0,1,0],
                    [0,0,0,0,0,1,1,0,1,0],
                    [0,1,1,1,0,0,0,0,1,0],
                    [0,0,0,1,0,1,1,0,1,0],
                    [0,1,0,1,0,1,0,0,0,0]]

    def screen_drawer(self):
        for i in range(self.no_of_fields_h):
            for j in range(self.no_of_fields_v):
                if self.map_1[j][i] == 0:
                    self.canvas.create_image(i * self.field_size, j * self.field_size, anchor=NW, image=self.floor_image)
                elif self.map_1[j][i] == 1:
                    self.canvas.create_image(i * self.field_size, j * self.field_size, anchor=NW, image=self.wall_image)

    def draw_hero(dice_result_1):
        if self.map_1.is_obstacle(dice_result_1[0], dice_result_1[1]) == False:
            self.hero = Hero(dice_result_1[0], dice_result_1[1], canvas)
            self.hero.draw()
        else:
            draw_hero(dice_result_1)

    def draw_boss(dice_result_2):
        if self.map_1.is_obstacle(dice_result_2[0], dice_result_2[1]) == False:
            self.boss = Boss(dice_result_2[0], dice_result_2[1], canvas)
            self.boss.draw()
        else:
            draw_boss(dice_result_2)

    def draw_skeleton_1(dice_result_3):
        if self.map_1.is_obstacle(dice_result_3[0], dice_result_3[1]) == False:
            self.skeleton_1 = Skeleton(dice_result_3[0], dice_result_3[1], canvas)
            self.skeleton_1.draw()
        else:
            draw_skeleton_1(dice_result_3)

    def draw_skeleton_2(dice_result_4):
        if self.map_1.is_obstacle(dice_result_4[0], dice_result_4[1]) == False:
            self.skeleton_2 = Skeleton(dice_result_4[0], dice_result_4[1], canvas)
            self.skeleton_2.draw()
        else:
            draw_skeleton_2(dice_result_4)

    def draw_skeleton_3(dice_result_5):
        if self.map_1.is_obstacle(dice_result_5[0], dice_result_5[1]) == False:
            self.skeleton_3 = Skeleton(dice_result_5[0], dice_result_5[1], canvas)
            self.skeleton_3.draw()
        else:
            draw_skeleton_3(dice_result_5)

    def stats_drawer(self):
        self.info_box_height = 80
        self.canvas.create_rectangle(0, self.field_size * self.no_of_fields_v, self.field_size * self.no_of_fields_h, self.field_size * self.no_of_fields_h + self.info_box_height, fill="grey")
        self.canvas.create_rectangle(10, self.field_size * self.no_of_fields_v + 10, self.field_size * self.no_of_fields_h + 10, self.field_size * self.no_of_fields_h + self.info_box_height - 10, fill="white")
        self.canvas.create_text(self.field_size * self.no_of_fields_h/2, self.field_size * self.no_of_fields_h + self.info_box_height/2, text='Hero (Level 1) HP: 8/10 | DP: 8 | SP: 6', font=('Arial', 24, 'bold'))

    def is_obstacle(self, x, y):
        if self.map_1[x][y] == 0:
            return True
        else:
            return False

    def move_down(event):
        self.hero.move_down()
        screen_drawer(no_of_fields_h, no_of_fields_v)

    def move_up(event):
        self.hero.move_up()
        screen_drawer(no_of_fields_h, no_of_fields_v)

    def move_left(event):
        self.hero.move_left()
        screen_drawer(no_of_fields_h, no_of_fields_v)

    def move_right(event):
        self.hero.move_right()
        screen_drawer(no_of_fields_h, no_of_fields_v)