Private Vector Findroad (int POSX, INT POSY, INT DIR) {
Vector Roadupvec = NULL, RoadRightVec = NULL, RoadDownVec = NULL, RoadLEFTVEC = NULL
Boolean Tempup = false, Tempright = false, Templeft = false, tempdown = false;
INT UPNUM = 0, DOWNNUM = 0, Rightnum = 0, leftnum = 0, MaxNum = 0;
IF (Posy> 0 && M_nowMap [POSX] [POSY-1]! = 0 && Dir! = DIR_UP) {
Roadupvec = new vector ();
Roadupvec.addelement (new integer (pOSX));
Roadupvec.addelement (new integer (posy-1));
Vector TempVec = Findroad (POSX, POSY-1, DIR_DOWN);
IF (tempvec! = null) {
For (int i = 0; i Roadupvec.addelement (TempVec.Elementat (i)); } } Else Tempup = false; IF (POSX RoadrightVec = new vector (); RoadrightVec.Addelement (New Integer (POSX 1)); RoadrightVec.addelement (New Integer (POSY)); Vector tempvec = findroad (POSX 1, Posy, Dir_left); IF (tempvec! = null) { For (int i = 0; i RoadrightVec.addelement (TempVec.Elementat (i)); } } Else Tempright = false; IF (Posy RoaddownVec = new vector (); RoaddownVec.AddeElement (new integer (pOSX)); RoaddownVec.AddeElement (New Integer); Vector TempVec = Findroad (POSX, POSY 1, DIR_UP); IF (tempvec! = null) { For (int i = 0; i RoaddownVec.Addelement (TempVec.Elementat (i)); } } Else Tempdown = false; IF (POSX <0 && M_NowMap [POSX-1] [POSY]! = 0 && Dir! = DIR_LEFT) { RoadLeftVec = New Vector (); RoadLeftVec.AddeElement (new integer (pOSX-1)); RoadLeftVec.Addelement (new integer (posy)); Vector TempVec = Findroad (POSX-1, POSY, DIR_RIGHT); IF (tempvec! = null) { For (int i = 0; i RoadLeftVec.Addelement (TempVec.Elementat (i)); } } Else Templeft = false; IF (! Tempup &&! Tempright &&! Tempdown &&! Templeft) Return NULL; Else { IF (Roadupvec! = NULL) Upnum = roadupvec.size (); IF (RoadRightVec! = NULL) Rightnum = roadupvec.size (); IF (RoadDownVec! = NULL) Downnum = roadupvec.size (); IF (RoadleFTVec! = NULL) Leftnum = roadupvec.size (); Maxnum = rightnum; IF (UPNUM> MAXNUM) Maxnum = UPNUM; IF (Leftnum> MaxNum) Maxnum = leftnum; IF (Downnum> MaxNum) MaxNum = Downnnum; IF (MAXNUM == UPNUM) Return Roadupvec; Else IF (MAXNUM == DownnUM) Return RoaddownVec; Else IF (MAXNUM == Rightnum) Return RoadRightVec; Else IF (MAXNUM == Leftnum) Return RoadLeftvec; Else Return NULL; } }