/// <summary> ///小车移动函数,小车的横纵坐标每改变一次,窗体就执行重绘函数,就实现了小车的移动 /// </summary> /// <param name="Elc"></param> public int SearchRoute(ElecMap Elc, int startX, int startY, int endX, int endY)//04022 { AstarSearch astartSearch = new AstarSearch(); Elc.mapnode[startX, startY].nodeCanUsed = true; //小车自己所在的地方解除占用 Elc.TempMapNode[startX, startY].nodeCanUsed = true; //小车自己所在的地方解除占用 this.route = astartSearch.search(Elc, Elc.Width, Elc.Height, startX, startY, endX, endY); routeIndex = 0; if (this.route == null) { this.vehical_state = v_state.cannotToDestination; } for (int ii = 0; ii < this.route.Count; ii++) { this.cost = this.cost + 1; // Elc.mapnode[(int)this.route[ii].X, (int)this.route[ii].Y].vehiclePriority = new List<int>(); // Elc.mapnode[(int)this.route[ii].Height, (int)this.route[ii].Width].vehiclePriority.Add(this.v_num); } //解除节点的占用 for (int p = 0; p < Elc.heightNum; p++) { for (int q = 0; q < Elc.widthNum; q++) { Elc.mapnode[p, q].nodeCanUsed = true; Elc.TempMapNode[p, q].nodeCanUsed = true;//小车自己所在的地方解除占用 } } return(this.route.Count); }
/// <summary> /// 构造函数,初始化所有变量 /// </summary> /// <param name="speed">速度</param> /// <param name="electricity">电量</param> /// <param name="acceleration">加速度</param> /// <param name="maxspeed">最大速度</param> public Vehicle(int x, int y, int speed, int electricity, int acceleration, int maxspeed) { this.startX = x; this.startY = y; this.X = x; this.Y = y; this.Speed = speed; this.Electricity = electricity; this.Acceleration = acceleration; this.MaxSpeed = maxspeed; this.vehical_state = v_state.normal; }