前回の続き。
max()の方の解説。元はこれですが
x = Math.max(game.width, x + map.width) - map.width;
ちょっと分りづらいのでmax()の2つの引数に - map.width を行い以下に変更。
x = Math.max(game.width - map.width, x);
1つ目の引数で注目すべきは - map.width これはそのまま適用するとMap幅分のスクロール(Map幅分、描画開始位置が左に移動)になるので画面にはマップはまったく表示されなくなります。具体的にはMap画像の右端がゲーム画面の左端の1ピクセル左側になる位置までスクロールしてしまいます。
今回の場合ではゲームの画面サイズ分は残した状態でスクロールを止める必要が有ります。
ここではゲームの画面サイズ分、マイナスの値を減らすために game.width が使われています。これにより1つ目の引数の値がPlayerがMapの右端をうろちょろした時にゲーム画面サイズ分を残してスクロールをストップするリミッターになっています。
このリミッターが発動するのはあくまでPlayerが右端に移動し、Mapのスクロール可能な残りがゲームの画面サイズを切ってからです。それまでは2つ目の引数の min() で代入された x の値がそのまま使われます。