讓我們考慮一個遊戲,其中玩家在x*y
網格上有n
件數。玩家也可以在任何方向移動棋子(north
,south
,north-east
等)。我們假設唯一的規則是玩家(當他決定移動時)必須儘可能多地移動棋子。在迷宮邊緣的一件作品的優雅驗證
ooooo
.....
.....
.....
.....
玩家移動的第一塊
.oooo
.....
.....
.....
o....
做出這樣的函數(忽略關於玩家可以移動他的作品的其他方向的力矩),我們有:
while(!AtEdge()){
move()
}
但是,這個AtEdge
必須配置爲根據行進方向檢查棋子是否處於邊緣。例如:
o.....
......
......
第一部分是在邊緣如果方向是north
,west
或north-west
但最好在任何其他方向去走。
我現在的想法是,我需要一個switch語句,根據旅行方向檢查是否是AtEdge()
。但是,我還需要一個move
函數的switch語句。
switch(direction){
case NORTH_EAST: //code to move north-east
}
這會導致16 Switch
聲明,但是如果遊戲是3D,那麼數字就會乘以。有沒有更優雅的解決方案來實現我所描述的?根據旅行方向是否有更好的方法來檢查棋子是否可以進一步移動?