TEVI
评价数不足
[紀念用]白霧森林地圖略解
由 星読み 制作
本來這個攻略是打算做完白霧森林和夢想之地之後再放出來的……
但是白霧森林本體已經被優化了,變成了只要到過一次最左下角白霧就會散去,就不會隨意傳送了。
因此放棄了夢想之地那一邊的編寫只貼下白霧森林的(畢竟白霧森林的已經寫完了)

實際上白霧森林和夢想之地都有放出過中文的攻略,而且自己也本來是為了通關後全收集的才寫的。
(但是通關後的地圖被簡化了,所以本身這篇東西已經沒有意義了……只是都寫完了不發出來難受,所以還是發了)
因此建議大家也可以看下其他大佬寫的攻略,說不定更有用途
   
奖励
收藏
已收藏
取消收藏
[1]地圖說明
這是白霧森林我最開始截圖時的地圖
白霧散去後所有房間聯通的更新是這幾天的事情,在2023年12月10日的帖子中有人提到了這件事。
隨著這次更新,同時在11左邊的1格子上新增了一個傳送點
因為是舊地圖,所有並沒有加上,而後面的攻略也不會提到這個傳送點
如果是更新前達到100%收集的人需要重新跑到這重新完成100%完成率

下面來說地圖,這個地圖是以坐標軸表現的,前兩位為下面的X軸,最後一位為左邊的Y軸
之後的地圖塊也是以坐標呈現
[2]地鐵圖化的白霧森林地圖


浪費了好多心血重做了幾次的 地鐵圖化了的白霧森林地圖

為了方便理解,將整個地圖分成了4個主幹道,
其中最核心的區域為B區域,
玩家剛進入白霧森林時最快接觸到的則是A區域,
C區域則是在擊敗BOSS後深入探索才會循環。

箭頭從A指向B意味著可以從A到B
箭頭上的U\D\L\R等分別為Up、Down、Left、Right、UpsideRight等
當移動的方向跨區域時,不是直接連線過去導致圖變得更加複雜,而是通過顏色和前面的A/等表明去的區域和該區域的格子

(相對來說可能不太好用,因為這個圖中沒有指名路中會不會有阻攔格子)
目前這個圖的意義在於……幫助大家理解為什麼白霧森林會循環和如何記住白霧森林
即把雙向通行的主幹道給記住(畢竟只要到過最左下角這個地圖就失去意義了)
[3]草履蟲級別的C++導航代碼[其一]
這個想法本身來自於Philos大佬的
https://psteamcommunity.yuanyoumao.com/sharedfiles/filedetails/?id=3107453931
最下方的给更聪明的TEVI
因為自己也不是吃代碼這口飯的,程序也是基本能跑就行,因此是草履蟲級別的
因為本身是打算也寫夢想之地的,但是好像已經沒那個必要了,所以放棄了沒問成,代碼結構其實也差不多,就是地圖轉換和地圖表要重寫

代碼用法大概就是輸入起點、輸入重點、輸入希望在多少步以內完成,然後等結果。
由於條條大路通羅馬(目的地),加之白霧森林共有75個格子(不算新加的傳送點),因此步數過多後似乎就會陷入很讓人頭大的循環狀態(不是出的結果超多就是一直等不出結果)。

原因主要是因為路上時不時會有路障,可能要炸開什麼的或者是路障會自己恢復,因此只列一條路說不定就列了一條死路了……所以全部路都列了出來。

具體代碼如下,可以隨便使用和修改(畢竟我也不打算修BUG了……還不如直接散去白霧後自己找來得快)
#include <iostream> #include <stack> using namespace std; int map[77][2][8] = { {{0,0,03,02,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 1 {{27,0,01,01,0,0,0,0},{1,0,0,0,0,0,0,0}}, //Coordinates 2 {{04,04,04,01,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 3 {{47,03,01,05,0,0,0,0},{4,0,0,0,0,0,0,0}}, //Coordinates 4 {{0,0,04,06,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 5 {{0,0,05,07,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 6 {{45,0,8,46,0,0,0,0},{4,0,0,0,0,0,0,0}}, //Coordinates 7 {{0,10,9,07,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 8 {{10,02,8,8,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 9 {{0,11,70,9,0,0,0,0},{0,0,2,0,0,0,0,0}}, //Coordinates 10 {{45,0,12,0,0,0,47,47},{5,0,0,0,0,0,0,0}}, //Coordinates 11 {{0,10,18,13,14,0,21,0},{0,0,0,0,0,0,1,0}}, //Coordinates 12 {{0,0,8,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 13 {{0,12,15,19,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 14 {{03,11,16,11,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 15 {{29,17,25,15,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 16 {{0,02,01,01,16,0,16,0},{0,0,0,0,0,0,0,0}}, //Coordinates 17 {{72,0,71,12,0,17,0,17},{2,0,2,0,0,2,0,0}}, //Coordinates 18 {{25,0,14,20,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 19 {{77,22,21,24,0,0,0,0},{1,0,0,0,0,0,0,0}}, //Coordinates 20 {{0,12,0,20,0,0,0,0},{1,0,0,0,0,0,0,0}}, //Coordinates 21 {{23,20,34,35,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 22 {{0,22,06,24,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 23 {{14,19,23,32,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 24 {{0,27,29,26,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 25 {{0,12,25,07,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 26 {{28,02,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 27 {{44,27,14,01,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 28 {{30,16,01,03,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 29 {{0,29,12,41,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 30 {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 31 empty {{0,45,19,33,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 32 {{0,50,18,49,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 33 {{0,37,36,22,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 34 {{65,0,20,48,0,51,0,51},{2,0,0,2,0,0,0,0}}, //Coordinates 35 {{0,37,38,34,0,0,0,0},{0,5,0,0,0,0,0,0}}, //Coordinates 36 {{0,38,0,38,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 37 {{37,39,37,36,0,0,0,0},{0,3,0,5,0,0,0,0}}, //Coordinates 38 {{38,0,40,34,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 39 {{20,57,12,34,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 40 {{0,28,0,8,42,42,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 41 {{0,0,0,0,43,12,43,43},{0,0,0,0,0,0,0,0}}, //Coordinates 42 {{0,0,0,0,42,42,42,0},{0,0,0,0,0,0,0,0}}, //Coordinates 43 {{0,28,48,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 44 {{32,07,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 45 {{0,0,0,0,11,11,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 46 {{0,04,11,44,11,0,0,0},{0,0,0,2,0,2,0,0}}, //Coordinates 47 {{67,63,66,22,0,0,0,0},{2,2,2,0,0,0,0,0}}, //Coordinates 48 {{0,0,19,73,0,0,0,0},{0,0,0,2,0,0,0,0}}, //Coordinates 49 {{33,0,17,52,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 50 {{0,0,54,52,35,0,35,0},{0,0,0,0,0,0,0,0}}, //Coordinates 51 {{0,0,50,53,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 52 {{0,0,51,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 53 {{56,0,59,55,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 54 {{0,0,50,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 55 {{0,0,0,14,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 56 {{17,58,0,59,0,0,0,0},{1,0,0,0,0,0,0,0}}, //Coordinates 57 {{57,0,28,61,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 58 {{0,19,60,54,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 59 {{24,65,22,16,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 60 {{59,62,58,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 61 {{34,0,63,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 62 {{48,0,0,64,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 63 {{0,0,63,22,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 64 {{60,35,0,0,0,0,0,0},{2,0,0,0,0,0,0,0}}, //Coordinates 65 {{0,0,35,48,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 66 {{15,48,69,0,0,0,0,0},{1,2,0,0,0,0,0,0}}, //Coordinates 67 {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 68 empty {{16,0,0,0,16,0,10,0},{0,0,0,0,0,0,0,0}}, //Coordinates 69 {{42,0,73,71,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 70 {{41,0,70,18,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 71 {{0,18,0,12,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 72 {{40,54,74,74,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 73 {{36,0,75,70,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 74 {{0,0,76,70,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 75 {{0,0,75,75,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 76 {{0,20,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, //Coordinates 77 }; //Sequence int loopTimesA = 0; //WayNumber int loopTimesB = 0; int CoordinateTransformationA(int Coordinate){ switch(Coordinate){ case 11 : return 76;case 21 : return 76;case 31 : return 75; case 32 : return 43;case 33 : return 74;case 34 : return 36; case 35 : return 5;case 41 : return 70;case 42 : return 42; case 43 : return 62;case 44 : return 34;case 45 : return 6; case 51 : return 71;case 52 : return 41;case 53 : return 62; case 54 : return 22;case 55 : return 23;case 56 : return 56; case 61 : return 51;case 62 : return 35;case 63 : return 65; case 64 : return 60;case 65 : return 24;case 66 : return 14; case 71 : return 53;case 72 : return 66;case 73 : return 69; case 74 : return 16;case 75 : return 29;case 76 : return 30; case 77 : return 11;case 81 : return 63;case 82 : return 48; case 83 : return 67;case 84 : return 15;case 85 : return 3; case 86 : return 4;case 87 : return 47;case 88 : return 46; case 91 : return 64;case 92 : return 2;case 93 : return 27; case 94 : return 28;case 95 : return 44;case 96 : return 39; case 97 : return 38;case 98 : return 37;case 101 : return 17; case 102 : return 18;case 103 : return 72;case 104 : return 58; case 105 : return 57;case 106 : return 9;case 107 : return 10; case 108 : return 1;case 111 : return 50;case 112 : return 33; case 113 : return 12;case 114 : return 61;case 115 : return 59; case 116 : return 8;case 117 : return 19;case 118 : return 25; case 121 : return 52;case 122 : return 49;case 123 : return 12; case 124 : return 21;case 125 : return 55;case 126 : return 13; case 127 : return 19;case 128 : return 26;case 131 : return 54; case 132 : return 73;case 133 : return 40;case 134 : return 20; case 135 : return 77;case 136 : return 45;case 137 : return 32; case 138 : return 7; } };
[3]草履蟲級別的C++導航代碼[其二]
int CoordinateTransformationB(int Coordinate){ switch(Coordinate){ case 1 : return 108;case 2 : return 92;case 3 : return 85; case 4 : return 86;case 5 : return 35;case 6 : return 45; case 7 : return 138;case 8 : return 116;case 9 : return 106; case 10 : return 107;case 11 : return 77;case 12 : return 113; case 13 : return 126;case 14 : return 66;case 15 : return 84; case 16 : return 74;case 17 : return 101;case 18 : return 102; case 19 : return 117;case 20 : return 134;case 21 : return 124; case 22 : return 54;case 23 : return 55;case 24 : return 65; case 25 : return 118;case 26 : return 128;case 27 : return 93; case 28 : return 94;case 29 : return 75;case 30 : return 76; case 32 : return 137;case 33 : return 112;case 34 : return 44; case 35 : return 62;case 36 : return 34;case 37 : return 98; case 38 : return 97;case 39 : return 96;case 40 : return 133; case 41 : return 52;case 42 : return 42;case 43 : return 32; case 44 : return 95;case 45 : return 136;case 46 : return 88; case 47 : return 87;case 48 : return 82;case 49 : return 122; case 50 : return 111;case 51 : return 61;case 52 : return 121; case 53 : return 71;case 54 : return 131;case 55 : return 125; case 56 : return 56;case 57 : return 105;case 58 : return 104; case 59 : return 115;case 60 : return 64;case 61 : return 114; case 62 : return 43;case 63 : return 81;case 64 : return 91; case 65 : return 63;case 66 : return 72;case 67 : return 83; case 68 : return 73;case 70 : return 41;case 71 : return 51; case 72 : return 103;case 73 : return 132;case 74 : return 33; case 75 : return 31;case 76 : return 11;case 77 : return 135; } }; class path{ public: stack <int> way; stack <int> direction; stack <int> block; void addCoordinates(int wayA,int directionA,int blockA){ way.push(wayA); direction.push(directionA); block.push(blockA); }; void deleteCoordinates(){ way.pop(); direction.pop(); block.pop(); }; void readPath(int times){ stack <int> wayCache = way; stack <int> directionCache = direction; stack <int> blockCache = block; if(wayCache.size() <= times){ while(wayCache.size() > 0){ if((wayCache.top() == 12) || (wayCache.top() == 19) || (wayCache.top() == 62) || (wayCache.top() == 76)){ switch(wayCache.top()){ case 12: cout << "113/123 << ";break; case 19: cout << "117/127 << ";break; case 62: cout << "43/53 << ";break; case 76: cout << "11/21 <<";break; } }else{ cout << CoordinateTransformationB(wayCache.top()) << " << "; } wayCache.pop(); }; cout << "start" << endl << "finish"; while(directionCache.size() > 0){ switch(directionCache.top()){ //Up,Down,Left,Right,UpsideLeft,DownsideLeft,UpsideRight,UpsideLeft case 1:cout << " << Up";break; case 2:cout << " << Down";break; case 3:cout << " << Left";break; case 4:cout << " << Right";break; case 5:cout << " << UpsideLeft";break; case 6:cout << " << DownsideLeft";break; case 7:cout << " << UpsideRight";break; case 8:cout << " << UpsideLeft";break; }; // cout << directionCache.top() << " << "; directionCache.pop(); }; cout << endl; while(blockCache.size() > 0){ switch(blockCache.top()){ //1 - 3 = block{outside,inside,hidden},4 - 5 can't pass case 0:cout << "pass << ";break; case 1:cout << "OutsideBlock << ";break; case 2:cout << "InsideBlock << ";break; case 3:cout << "HiddenBlock << ";break; case 4:cout << "can't pass << ";break; case 5:cout << "can't pass << ";break; }; blockCache.pop(); }; cout << "start\n\n"; }; }; }; path pathA; int wayLoop(int times,int start,int goal) { int point = 0,flag = 0; if(start == goal){ cout << "What?" << endl; return 1; }; for(int direction = 0; direction < 8; direction++){ if(map[start - 1][0][direction] != 0){ point = map[start - 1][0][direction]; stack <int> cache = pathA.way; while(cache.size() > 0){ if(cache.top() == point){ flag = 1; }; cache.pop(); } if(flag == 0){ if(pathA.way.size() <= times){ pathA.addCoordinates(point,(direction + 1),map[start - 1][1][direction]); if (pathA.way.top() != goal){ if(wayLoop(times,pathA.way.top(),goal) == 0){}; }else{ pathA.readPath(times); pathA.deleteCoordinates(); }; } }else if(flag == 1){ flag = 0; }; }; }; //cout << "flag G\t"; pathA.deleteCoordinates(); return 0; }; int main(int argc, char *argv[]) { int start = 0,goal = 0,times = 0; //input cout << "input the starting point:"; cin >> start; start = CoordinateTransformationA(start); cout << "input the goal:"; cin >> goal; goal = CoordinateTransformationA(goal); cout << "input the move count you hope:"; cin >> times; if(wayLoop(times,start,goal) == 0){}; cout << "waiting input to exit: "; cin >> times; return 0; }
1 条留言
る~こと 11 月 5 日 下午 6:52 
感谢分享