1

私は基本的に、グリッドを含むゲームを作ろうとしています。これが私がこれまでに持っているものです(私が何をする必要があるかを説明する前に、ゲームを見るのに役立ちます):

Javascript (html については jsfiddle を参照):

var score = 0;
var points = function(val, box) {
    var noise = Math.round(Math.round(0.1*val*Math.random()*2) - 0.1*val);
    score = score + (val + noise);
    var square = document.getElementById(box);
    square.innerHTML = val + noise;
    square.style.display='block';
    setTimeout(function() {
       square.style.display='none'; 
    }, 400);
    document.getElementById("out").innerHTML = score;
}

http://jsfiddle.net/stefvhuynh/aTQW5/1/

グリッドの左下にある 4 つの赤い四角は、ゲームの開始点である必要があります。これらのボックスの 1 つをクリックすると、隣接するボックスをクリックしてグリッドに沿って移動できます。基本的には、プレイヤーがクリックしたばかりのボックスから上下左右にしか移動できないようにする必要があります。プレーヤーがクリックしてはならないボックスをクリックしたときに、ポイント関数が呼び出されることを望んでいません。

さらに、プレーヤーが 400 ミリ秒が経過するまで別のボックスをクリックできないようにする必要があります。

私はプログラミングに比較的慣れていないので、どんな助けでも素晴らしいでしょう。また、プログラムをより効率的にする方法があれば、ヒントをいただければ幸いです。

4

1 に答える 1

0

一般的なアイデア:

など、すべてのボックスに同様の ID を設定し、box_x_y文字列のリストを保存することをお勧めしますallowedSquares

次に、ボックスをクリックすると、その id が にあるかどうかをチェックし、allowedSquaresそうである場合は を呼び出しpoints(val, box)て内容を更新し、allowedSquares位置の変更を反映する関数を作成できます。

すべてのボックスに標準の id 規則を使用するポイントは、記述できることgetPosition(box)getBox(intX, intY)、id 文字列を解析してボックスの位置を返すこと、またはその逆を行うことです。

updateAllowedSquares(clickedBox)次のステップが許可されていることを示すために、関数で隣接するボックスの色を変更することもできます。

編集:いくつかのコード例:

免責事項: これらは、探しているコード行ではありません。

これは、開始位置が右下の 1 つの正方形の 3x3 グリッドを想定した、開始キットにすぎません。このコードを少し調整する必要があります。また、アウトオブバウンズに関しては、何かがうまくいかないだろうと予測しています。このような場合、完全な解決策よりも思考の糧を与えることを好むので、これについて少し考えさせてください...

var allowedSquares = ["box_2_2"]; // Initial list

function decodePositionFromID(boxId) {
  return boxId.split("_").slice(1,2);
}

function getIDfromXY(x, y) {
  return "box_" + x + "_" + y;
}

function updateAllowedSquaresList(boxID) {
  // 1 - We clear the array.
  allowedSquares.length = 0; 

  // 2 - We get the adjacent boxes IDs.
  var xyArray = decodePositionFromID(boxId);
  var upperBoxID = getIDfromXY(xyArray[0], xyArray[1]-1);
  // Rince, repeat, and add some gameboard boundaries checks.

  // 3 - We add the new IDs to the list.
  allowedSquares.push(upperBoxID, ...);
} 

function boxClick(val, boxID) {
  // We check if the box is a valid square to play.
  if (allowedSquares.indexOf(boxID) != -1) {
    points(val, boxID);
    updateAllowedSquaresList(boxID);
  }
}  
于 2013-02-14T07:47:27.960 に答える