/
busroad.py
63 lines (47 loc) · 1.82 KB
/
busroad.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
import pygame
import math
import pickle
import utils
roadWidth=int(utils.meterToPixel(4))
def LoadNodesFromFile(text_Name):
f = open(text_Name)
loadedRoads = pickle.load(f)
f.close()
roads = []
aEnt=[290,0]
bEnt=[603,140]
cEnt=[0,196]
dEnt=[465,660]
aExt=[310,0]
bExt=[603,155]
cExt=[0,180]
dExt=[450,660]
roads.append(BusRoad([cEnt,loadedRoads['Start'][0][0],loadedRoads['End'][1][0],bExt]))
roads.append(BusRoad([bEnt,loadedRoads['Start'][1][0],loadedRoads['End'][0][0],cExt]))
roads.append(BusRoad([dEnt,loadedRoads['Start'][3][0],loadedRoads['End'][2][0],aExt]))
roads.append(BusRoad([dEnt,loadedRoads['Start'][3][0],loadedRoads['End'][0][0],cExt]))
roads.append(BusRoad([cEnt,loadedRoads['Start'][0][0],loadedRoads['End'][3][0],dExt]))
roads.append(BusRoad([aEnt,loadedRoads['Start'][2][0],loadedRoads['End'][3][0],dExt]))
print roads[-1]
return roads
class BusRoad(object):
def __init__(self, roads):
self.roads = roads
def Draw(self, screen, pygame):
for x in range(0,len(self.roads)-1):
pygame.draw.line(screen,(125,125,200),self.roads[x],self.roads[x+1],roadWidth)
def GetNextNode(self,node):
if node < len(self.roads)-1:
return node+1
return -1
def GetNodePosition(self,node):
return self.roads[node]
def GetDistanceToBusStop(self,position,direction):
deltaX=self.roads[2][0]-self.roads[1][0]
deltaY=self.roads[2][1]-self.roads[1][1]
busStopX=self.roads[1][0]+deltaX*0.5
busStopY=self.roads[1][1]+deltaY*0.5
dist=utils.calc_distance((busStopX,busStopY),position)
if (abs(utils.calc_angle(position, (busStopX,busStopY)) - direction)>math.pi/2):
dist=-dist
return dist