Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern void object::Main()
- {
- smove(40);
- }
- void object::smove(int dist) //move avoiding terrain difficulties
- {
- point p = chkpos(0, dist);
- while(distance2d(this.position, p)<dist)
- {
- if(chkifhgh(0, 1)==true){motor(-0.1,-0.1);adjhgh(7,8);}
- else{motor(1,1);adjhgh(5,6);}
- }
- }
- void object::adjhgh(int min, int max)
- {
- while(this.altitude<min){jet(1);}
- while(this.altitude>max){jet(-1);}
- jet(0);
- }
- point object::chkpos(int ang, int c)
- {
- if(ang>90 or ang<-90){ang = 0;}
- int ori = this.orientation+ang, a, b;
- point p, t = this.position;
- if(0 <= ori && ori <= 90){ori = 90-ori; a = c*sin(ori); b = c*cos(ori); p.x=(t.x+a); p.y=(t.y+b);}
- if(90 <= ori && ori <= 180){ori = 180-ori;a = c*sin(ori); b = c*cos(ori); p.x=(t.x-a); p.y=(t.y+b);}
- if(180 <= ori && ori <= 270){ori = 270-ori;a = c*sin(ori); b = c*cos(ori); p.x=(t.x-a); p.y=(t.y-b);}
- if(270 <= ori && ori <= 360){ori = 360-ori;a = c*cos(ori); b = c*sin(ori); p.x=(t.x+a); p.y=(t.y-b);}
- return p;
- }
- bool object::chkifhgh(int ang, int c)
- {
- if(ang>90 or ang<-90){ang = 0;}
- int ori = this.orientation+ang, a, b;
- point p, t = this.position;
- if(0 <= ori && ori <= 90){ori = 90-ori; a = c*sin(ori); b = c*cos(ori); p.x=(t.x+a); p.y=(t.y+b);}
- if(90 <= ori && ori <= 180){ori = 180-ori;a = c*sin(ori); b = c*cos(ori); p.x=(t.x-a); p.y=(t.y+b);}
- if(180 <= ori && ori <= 270){ori = 270-ori;a = c*sin(ori); b = c*cos(ori); p.x=(t.x-a); p.y=(t.y-b);}
- if(270 <= ori && ori <= 360){ori = 360-ori;a = c*cos(ori); b = c*sin(ori); p.x=(t.x+a); p.y=(t.y-b);}
- if(topo(p)>this.altitude){return true;}
- else {return false;}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement