2016-10-31 17 views
-1

私はチェスゲームを作っています。私は関数内で4つの変数を変更する必要があるという点に達したので、次に関数を実行するときに変数が異なります。以下に私は見るために必要なコードがあります:次回呼び出すときに関数内の変数を変更しますか?

function piecesRotationは、他のプレイヤーが再生するようにすべてのピースの位置を上下に回転します。

Javascriptを:HTMLで

function piecesRotation(){ 
    //rotate the pieces 
} 

function check(el){ 

    //there variables indicate which user turn is it 
    var FirstCurrentPlayersPiece = "B"; 
    var CurrentPlayersPieceColor = "black"; 
    var FirstOpponentsPieceLetter = "W"; 
    var OpponentsPieceColor = "white"; 
    //If player played then run the function below to change the position of the pieces and change the 4 variables so the other player will play 
    piecesRotation(); 
    FirstCurrentPlayersPiece = "W"; 
    CurrentPlayersPieceColor = "white"; 
    FirstOpponentsPieceLetter = "B"; 
    OpponentsPieceColor = "black"; 
} 

私はエルは、プレイヤーがクリックelepemtある機能チェック(EL)を呼び出します。説明するために

、私はこれらの変数に変更する何とか必要があります。これに

var FirstCurrentPlayersPiece = "B"; 
var CurrentPlayersPieceColor = "black"; 
var FirstOpponentsPieceLetter = "W"; 
var OpponentsPieceColor = "white"; 

var FirstCurrentPlayersPiece = "W"; 
var CurrentPlayersPieceColor = "white"; 
var FirstOpponentsPieceLetter = "B"; 
var OpponentsPieceColor = "black"; 

をこれらの変数の変更は、プレイヤーが演じるたびに発生します。それを行う方法はありますか?

重要 英語は私の最初の言語ではないので、私はそれが悪いです。

注1 それは巨大だとスタックオーバーフローが、私はそれを貼り付けることはできませんので、私は全体のコードを提供するわけではない理由があります。

注2 私は愚かです。私は、彼らが悪い習慣だと思うように、それが唯一の解決策だ(グローバル変数を使用する必要がありました。

+7

に渡しますその値を保持するようにします – Ted

+0

関数check(el)はHTML関数によって呼び出されますonClick = "check()" – GeorGios

+1

関数をオブジェクトに変換すると、 'this.OpponentsPieceColor = 'black' 'check.OpponentsPieceColor = 'white';'(あなたのオブジェクトがインスタンス化される変数で 'check'を変更します) –

答えて

1

ちょうど関数の外で変数を宣言したオブジェクト内の変数を配置し、機能

var boardState = { 
     FirstCurrentPlayersPiece : "B", 
     CurrentPlayersPieceColor : "black", 
     FirstOpponentsPieceLetter: "W", 
     OpponentsPieceColor: "white" 
} 

function piecesRotation(){  
    boardState = { 
      FirstCurrentPlayersPiece : boardState.FirstOpponentsPieceLetter, 
      CurrentPlayersPieceColor : boardState.OpponentsPieceColor, 
      FirstOpponentsPieceLetter: boardState.FirstCurrentPlayersPiece, 
      OpponentsPieceColor: boardState.CurrentPlayersPieceColor 
    } 
} 


function check(el){ 
    piecesRotation(); 
} 
+0

コードを使用する前に、コードの動作を教えてください。 (私はそれがどのように動作するのかわからない場合はコードの一部を使用したくないので私は尋ねています)。 – GeorGios

+0

オブジェクトをオブジェクト内に配置し、 'piecesRotation'を呼び出してオブジェクトを渡すと、FirstCurrentPlayersPieceとCurrentPlayersPieceColorをFirstOpponentsPieceLetter OpponentsPieceColorで置き換えて、変更したオブジェクトを返します。その変更されたオブジェクトを使用してアプリケーションの状態を変更することができます –

+0

私はあなたのコードを試しましたが、動作しません。 – GeorGios

関連する問題