私はPHPでゲームを作っています(笑しないでください)、プレーヤーには整数の場所があります。旅行のページがあり、これは基本的に 5x5 のタイル マップを示しています。各タイルは、プレイヤーの宇宙の異なる部分です。それをクリックすると、そこに移動できます。マップの背後にある整数のアイデアを提供するためだけに:
- 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 ステートメントを入力する前に、これを行うためのより適切で効率的な方法はありますか?