/
mcp.py
70 lines (51 loc) · 2.1 KB
/
mcp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import drone
class mcp:
def __init__(self):
self.drones = []
self.zones = [] #areas that are assigned to each drone
self.survay = None #the main area that is subdevided into zones.
def setSurvay(topPoint, bottomPoint):
self.survay = (topPoint, bottomPoint)
def addZone(topPoint, bottomPoint):
self.zones.append((topPoint, bottomPoint))
def addDrone(self):
self.drones.append(drone.drone())
if __name__ == "__main__":
import Tkinter as tk
import random
import time
from state_utils import point3D
def updateDrone(drone, deltaTime, canvas):
tartag = drone.uid + "_target"
lastPos = drone.position
drone.update_state(deltaTime)
canvas.move(drone.uid, drone.position.x - lastPos.x, drone.position.y - lastPos.y)
if drone.distToTarget < 5:
ltp = drone.targetPositon
drone.set_target_pos(point3D(random.random()*750+25, random.random()*750+25))
canvas.move(tartag, drone.get_target_pos().x - ltp.x, drone.get_target_pos().y - ltp.y)
window = tk.Tk()
canvas = tk.Canvas(window, width = 800, height = 800)
canvas.pack()
master = mcp()
for i in range(100):
master.addDrone()
i = 0
for drone in master.drones:
drone.set_uid("drone" + str(i))
tartag = drone.uid + "_target"
drone.position = point3D(random.random()*750+25, random.random()*750+25)
drone.set_target_pos(point3D(random.random()*750+25, random.random()*750+25))
canvas.create_oval(drone.position.x-5,drone.position.y-5,drone.position.x+5,drone.position.y+5,fill="red", tag=drone.uid)
canvas.create_oval(drone.targetPositon.x-3, drone.targetPositon.y-3, drone.targetPositon.x + 3, drone.targetPositon.y + 3, fill="blue", tag=tartag)
i = i+1
lastTime = time.time()
deltaTime = 0
while True:
for drone in master.drones:
updateDrone(drone, deltaTime, canvas)
canvas.after(20)
canvas.update()
deltaTime = time.time() - lastTime
lastTime = time.time()
window.mainloop()