Beispiel #1
0
 def draw(self):
     self.surface.fill(pygame.Color("WHITE"))
     self.tek_map.draw(self.surface, GREEN, RED, BLUE, 3, 3, 3)
     if self.mode == 1 and self.sel_reb != []:
         self.draw_sel_reb()
     if self.mode == 1:
         tek = pygame.mouse.get_pos()
         num = self.find_nearest_reb(
             geoma.point(tek[0] - self.dx, tek[1] - self.dy))
         self.draw_reb(num, self.sel_time_color)
     if (self.mode == 1 and self.is_obl):
         a = min(self.point1.x, self.point2.x)
         b = min(self.point1.y, self.point2.y)
         w = max(self.point1.x, self.point2.x) - a
         h = max(self.point1.y, self.point2.y) - b
         pygame.draw.rect(self.surface, self.rect_color,
                          pygame.Rect(a, b, w, h))
     if self.mode == 0 and self.is_first:
         self.draw_new_reb()
     if (self.mode == 0 and not (self.is_first)):
         tek = pygame.mouse.get_pos()
         pygame.draw.circle(
             self.surface, self.sel_time_color,
             self.get_point(geoma.point(tek[0], tek[1])).to_arr(), 5)
     self.screen.blit(self.surface, (self.dx, self.dy))
     pygame.display.update()
Beispiel #2
0
 def __init__(self, screen_init: pygame.display, surface_init):
     self.surface = surface_init
     self.screen = screen_init
     self.tek_map = map()
     self.mode = 1
     self.sel_reb = []
     self.sel_color = pygame.Color("lightblue")
     self.sel_time_color = pygame.Color("Brown")
     self.sel_width = 6
     self.is_first = 0
     self.reb_type = "w"
     self.is_obl = 0
     self.rect_color = pygame.Color("lightgray")
     self.point1 = geoma.point(0, 0)
     self.point2 = geoma.point(0, 0)
     self.last_point = geoma.point(0, 0)
Beispiel #3
0
 def calc_walls(self):
     self.w1 = geoma.otr(geoma.point(self.point1.x, self.point1.y),
                         geoma.point(self.point1.x, self.point2.y))
     self.w2 = geoma.otr(geoma.point(self.point2.x, self.point1.y),
                         geoma.point(self.point2.x, self.point2.y))
     self.w3 = geoma.otr(geoma.point(self.point1.x, self.point1.y),
                         geoma.point(self.point2.x, self.point1.y))
     self.w4 = geoma.otr(geoma.point(self.point1.x, self.point2.y),
                         geoma.point(self.point2.x, self.point2.y))
Beispiel #4
0
 def load(self):
     path = easygui.fileopenbox("Выберите карту", "", "Maps/*.mirmap",
                                [["*.*", "All files"]])
     f = open(path, "r")
     lines = f.readlines()
     f.close()
     self.walls.clear()
     self.start.clear()
     self.finish.clear()
     j = 3
     for i in range(int(lines[0])):
         tek = lines[j].split(" ")
         self.walls.append(
             geoma.otr(geoma.point(float(tek[0]), float(tek[1])),
                       geoma.point(float(tek[2]), float(tek[3]))))
         j += 1
     for i in range(int(lines[1])):
         tek = lines[j].split(" ")
         self.start.append(
             geoma.otr(geoma.point(float(tek[0]), float(tek[1])),
                       geoma.point(float(tek[2]), float(tek[3]))))
         j += 1
     for i in range(int(lines[2])):
         tek = lines[j].split(" ")
         self.finish.append(
             geoma.otr(geoma.point(float(tek[0]), float(tek[1])),
                       geoma.point(float(tek[2]), float(tek[3]))))
         j += 1
Beispiel #5
0
    def start(self):
        run = True
        change = True
        while run:
            if change:
                # change = False
                self.draw()

            for event in pygame.event.get():
                pressed = pygame.key.get_pressed()

                self.shift_pressed = pressed[pygame.K_LSHIFT] or pressed[
                    pygame.K_RSHIFT]

                if event.type == pygame.QUIT:
                    run = False
                if (self.mode == 0):
                    if event.type == pygame.MOUSEBUTTONDOWN:
                        if (event.button == 1):
                            self.is_first = 1
                            self.first_point = geoma.point(
                                event.pos[0], event.pos[1])
                            self.first_point = self.get_point(self.first_point)
                            self.second_point = geoma.point(
                                event.pos[0], event.pos[1])
                            self.second_point = self.get_point(
                                self.second_point)
                            change = 1
                        if (event.button == 3):
                            self.is_first = 1
                            self.first_point = self.last_point
                            self.second_point = geoma.point(
                                event.pos[0], event.pos[1])
                            self.second_point = self.get_point(
                                self.second_point)
                            change = 1

                    if (event.type == pygame.MOUSEMOTION):
                        if (self.is_first):
                            self.second_point = geoma.point(
                                event.pos[0], event.pos[1])
                            self.second_point = self.get_point(
                                self.second_point)
                        change = 1

                    if event.type == pygame.MOUSEBUTTONUP:
                        if (event.button == 1):
                            if (self.is_first):
                                self.add_reb()
                                change = 1
                                self.is_first = 0
                                self.last_point = geoma.point(
                                    event.pos[0] - self.dx,
                                    event.pos[1] - self.dy)
                        if (event.button == 3):
                            self.add_reb()
                            change = 1
                            self.is_first = 0
                            self.last_point = self.second_point

                elif (self.mode == 1):
                    if (event.type == pygame.MOUSEBUTTONDOWN):
                        if (event.button == 1):
                            tek = self.find_nearest_reb(
                                geoma.point(event.pos[0] - self.dx,
                                            event.pos[1] - self.dy))
                            for x in self.sel_reb:
                                if (x == tek): tek = -1
                            if (tek != -1):
                                self.sel_reb.append(tek)
                            change = 1

                    if event.type == pygame.MOUSEBUTTONDOWN:
                        if (event.button == 3):
                            self.is_obl = 1
                            self.point1 = geoma.point(event.pos[0],
                                                      event.pos[1])
                            self.point1 = self.get_point(self.point1)
                            self.point2 = geoma.point(event.pos[0],
                                                      event.pos[1])
                            self.point2 = self.get_point(self.point2)
                            change = 1

                    if (event.type == pygame.MOUSEMOTION):
                        if (self.is_obl):
                            self.point2 = geoma.point(event.pos[0] - self.dx,
                                                      event.pos[1] - self.dy)
                            # self.point2 = self.get_point(self.point2)
                        change = 1

                    if event.type == pygame.MOUSEBUTTONUP:
                        if (event.button == 3):
                            if (self.is_obl):
                                change = 1
                                self.is_obl = 0
                                self.select_obl()

                if event.type == pygame.KEYDOWN:
                    if (event.key == pygame.K_ESCAPE):
                        run = False

                    if (event.key == pygame.K_0 and self.mode != 0):
                        self.mode = 0
                        self.is_first = 0
                        self.is_obl = 0
                        self.sel_reb = []
                        change = True

                    if (event.key == pygame.K_1 and self.mode != 1):
                        self.mode = 1
                        self.is_first = 0
                        self.is_obl = 0
                        self.sel_reb = []
                        change = True

                    if (event.key == pygame.K_s and
                        (pressed[pygame.K_LCTRL] or pressed[pygame.K_RCTRL])):
                        self.save()
                        change = 1

                    if (event.key == pygame.K_o and
                        (pressed[pygame.K_LCTRL] or pressed[pygame.K_RCTRL])):
                        self.load()
                        change = 1

                    if (event.key == pygame.K_n and
                        (pressed[pygame.K_LCTRL] or pressed[pygame.K_RCTRL])):
                        self.clear()
                        change = 1

                    # --------------

                    if (event.key == pygame.K_w and self.reb_type != "w"):
                        self.reb_type = "w"
                        change = True

                    if (event.key == pygame.K_s and self.reb_type != "s"):
                        self.reb_type = "s"
                        change = True

                    if (event.key == pygame.K_f and self.reb_type != "f"):
                        self.reb_type = "f"
                        change = True

                    if (event.key == pygame.K_DELETE and self.sel_reb != -1):
                        self.delete_reb()
                        change = 1
Beispiel #6
0
def get_point2():
	a = get_point()
	return geoma.point(a["pos"][0], a["pos"][1])