please make the below code more complex and if possible make it more real life like
import random
import math
import tkinter as tk
import folium

class Drone:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.mode = "Idle"

    def update_location(self, new_x, new_y):
        self.x = max(0, min(new_x, 100))
        self.y = max(0, min(new_y, 100))

    def update_mode(self, new_mode):
        self.mode = new_mode

def calculate_distance(drone1, drone2, metrics):
    total_distance = 0
    for metric in metrics:
        if metric == 'euclidean':
            distance = math.sqrt((drone1.x - drone2.x) ** 2 + (drone1.y - drone2.y) ** 2)
        elif metric == 'manhattan':
            distance = abs(drone1.x - drone2.x) + abs(drone1.y - drone2.y)
        elif metric == 'chebyshev':
            distance = max(abs(drone1.x - drone2.x), abs(drone1.y - drone2.y))
        total_distance += distance
    return total_distance


def update_display():
    # Clear canvas
    canvas.delete("all")

    # Move drones
    for drone in drones:
        dx = random.randint(-2, 2)
        dy = random.randint(-2, 2)
        drone.update_location(drone.x + dx, drone.y + dy)

    # Update drone modes
    for drone in drones:
        if random.random() < 0.1:  # 10% chance of mode change
            new_mode = random.choice(["Idle", "Active"])
            drone.update_mode(new_mode)

    # Plot drone locations and modes
    for drone in drones:
        x = drone.x * SCALE
        y = (100 - drone.y) * SCALE
        marker = mode_markers[drone.mode]
        canvas.create_oval(x - RADIUS, y - RADIUS, x + RADIUS, y + RADIUS, fill=marker, outline="white", width=2)





    distanceLabelText = []

    # Calculate and display distances between each pair of drones
    label_count = 0
    for i in range(num_drones):
        for j in range(i+1, num_drones):
            drone1 = drones[i]
            drone2 = drones[j]
            distance = calculate_distance(drone1, drone2, ['euclidean', 'manhattan'])
            distanceLabelText.append(f"Distance between Drone {i} and Drone {j} : {distance:.2f} m")
            distance_labels[label_count].config(text=distanceLabelText[label_count])
            label_count += 1


    for i, drone in enumerate(drones):
        info_labels[i].config(text=f"Drone {i} - Location: ({drone.x}, {drone.y}), Mode: {drone.mode}")

    # Update GUI
    root.update()

# Create drones
num_drones = 3
drones = []
for _ in range(num_drones):
    x = random.randint(0, 100)
    y = random.randint(0, 100)
    drone = Drone(x, y)
    drones.append(drone)

# Initialize(GTK)
root = tk.Tk()
root.title("Swarming Simulation")
root.configure(bg="#333")

WINDOW_WIDTH = 600
WINDOW_HEIGHT = 600
SCALE = WINDOW_WIDTH / 100
RADIUS = 7

main_frame = tk.Frame(root, bg="#333")
main_frame.pack(side="left")

canvas_frame = tk.Frame(main_frame, bg="#333")
canvas_frame.grid(row=0, column=0)
canvas = tk.Canvas(canvas_frame, width=WINDOW_WIDTH, height=WINDOW_HEIGHT, bg="#333", highlightthickness=0)
canvas.pack()

info_frame = tk.Frame(main_frame, bg="#333")
info_frame.grid(row=0, column=1)

mode_markers = {"Idle": "blue", "Active": "red"}

distance_labels = []
info_labels = []

label_font = ("Consolas", 12)
fg_color = "white"

for _ in range(num_drones * (num_drones - 1) // 2):
    distance_label = tk.Label(info_frame, bg="#333", fg=fg_color, font=label_font)
    distance_label.pack(pady=3)
    distance_labels.append(distance_label)

for _ in range(num_drones):
    info_label = tk.Label(info_frame, bg="#333", fg=fg_color, font=label_font)
    info_label.pack(pady=3)
    info_labels.append(info_label)


while tk._default_root:
    # Update drone locations and modes
    update_display()

    # Update GUI display
    update_display()
    root.after(100)

# Replace these coordinates with desired(map_center_latitude)
_map_center_latitude = 47.5870
_map_center_longitude = -122.3363

_map = folium.Map(location=[_map_center_latitude, _map_center_longitude], zoom_start=12, control_scale=True)

for drone in drones:
    folium.Marker(
        location=[drone.y + _map_center_latitude, drone.x + _map_center_longitude],
        popup=f"Drone - Location: ({drone.x}, {drone.y}), Mode: {drone.mode}"
    ).add_to(_map)

_map.save("DroneMap.html")