我正在用PHP做遊戲(不要問大聲笑),玩家的位置是一個整數。有一個旅遊頁面,這基本上顯示了一個5x5平鋪地圖。每個瓦片是玩家宇宙的不同部分。點擊它可以在那裏旅行。 只給你地圖背後的整數的一個想法:比if語句更高效嗎?
- 11,12,13,14,15
- 21,22,23,24,25
- 31,32,33, 34,35
- 41,42,43,44,45
- 51,52,53,54,55
假設玩家在33(中間)開始,我想向其收取取決於他旅行的距離不同編輯。因此,例如,任何方向上的1個瓦片是100個信用點,2個瓦片是200個等等。
所以我想出了這個。 $ol
代表玩家的當前位置和$nl
是他們旅行到...
if($ol-11==$nl || $ol-10==$nl || $ol-9==$nl || $ol+1==$nl || $ol+11==$nl || $ol+10==$nl || $ol+9==$nl || $ol-1==$nl || $ol-11==$nl){
echo "cost 100 credits!";
}
else if($ol-22==$nl || $ol-21==$nl || $ol-20==$nl || $ol-19==$nl || $ol-18==$nl || $ol-8==$nl || $ol+2==$nl || $ol+12==$nl || $ol+22==$nl
|| $ol+21==$nl || $ol+20==$nl || $ol+19==$nl || $ol+18==$nl || $ol+8==$nl || $ol-2==$nl || $ol-12==$nl){
echo "cost 200 credits!";
}
這對1和2瓦旅遊的代碼。正如你可以看到這是一個冗長的陳述。
我基本上爲我設定的網格制定了一個模式。例如,向上移動1個瓦片將始終爲當前瓦片的-10。
在我輸入更多可笑的長if語句之前,有沒有更好的或更有效的方法來做到這一點?
我們的好老朋友'<', '<=', '> ='和'> '。他們會縮短你的陳述很好的一部分。 – Horen 2013-03-07 23:00:41
你允許在對角線方向上行走,還是隻沿着水平或垂直方向行駛;如果前者,這與水平/垂直的成本相同嗎? – 2013-03-07 23:03:15
我可能會用0/0中心點對單元格重新編號,以允許使用atan2() – 2013-03-07 23:05:05