def send_command(request): data = request.GET.dict() if data['command'] == 'build_path': try: if not copters[int(data["id"])].path: path = build_path(str(data['o']) + '0', str(data['t']) + '0') copters[int(data["id"])].path += path else: return JsonResponse({'m': 'busy'}) except: return JsonResponse({"m": "no way"}) elif data['command'] == 'force_land': copters[int(data["id"])].force_landed = True return JsonResponse({"m": "ok"})
def send_command(request): data = request.GET.dict() if data['command'] == 'build_path': try: if not copters[int(data["id"])].path: path = build_path( str(copters[int(data["id"])].point_to) + '0', str(data['t']) + '0') print(path) copters[int(data["id"])].path += path else: return JsonResponse({'m': 'busy'}) except: return JsonResponse({"m": "no way"}) elif data['command'] == 'arrived': copter = copters[int(data["id"])] if copter.path: copter.point(int(copter.path[0][:-1]), int(copter.path[1][:-1])) copter.toNewTelem(copters) elif data['command'] == 'force_land': copters[int(data["id"])].force_landed = True return JsonResponse({"m": "ok"})
def ask_taxi(request): data = request.GET.dict() busy = 0 points = [] for i in copters: if i.path != []: busy += 1 points.append(-1) else: points.append(get_nearest_point(i)) if busy == len(copters): return JsonResponse({'m': 'busy'}) busy_points = [] for i in copters: busy_points += i.busy_points if str(data['o']) + '0' in busy_points or str( data['t']) + '0' in busy_points: return JsonResponse({'m': 'wrong'}) with open('static/roads.json', 'r') as f: destination_point = load(f)['points'][int(data['t'])] for copter in copters: if copter.status == 'land': if get_distance(copter.x, copter.y, 0, destination_point['x'], destination_point['y'], 0) < nearest_copter_threshold: return JsonResponse({'m': 'wrong'}) paths = [] for i in range(0, len(points)): if points[i] != -1: paths.append( calc_path( build_path(str(points[i]) + '0', str(data['o']) + '0'))) else: paths.append(9999999) nearest_copter = copters[paths.index(min(paths))] first_path = build_path( str(get_nearest_point(nearest_copter)) + '0', str(data['o']) + '0') if len(first_path) != 1: nearest_copter.path += first_path nearest_copter.path.append('-1') nearest_copter.busy_points += [ str(data['o']) + '0', str(data['t']) + '0' ] else: nearest_copter.busy_points += [str(data['t']) + '0'] nearest_copter.path += build_path( str(data['o']) + '0', str(data['t']) + '0') r = lambda: random.randint(0, 255) nearest_copter.led = '#%02X%02X%02X' % (r(), r(), r()) return JsonResponse({ 'm': 'ok', 'color': nearest_copter.led, 'ip': nearest_copter.ip })
def get_dist(request): data = request.GET.dict() path = build_path(str(data['o']) + '0', str(data['t']) + '0') dist = calc_path(path) cost = 150 + dist * 30 return JsonResponse({'dist': dist, 'cost': cost})