2012-02-10 2 views
0
// function scoreHandArray scores your hand 
function scoreHandArray(hand) { 
    var score = 0; 
    for (i=0,i<hand.length,i++) { 
     score = score + hand[i].value; 
    }; 
    return score; 
}; 

console.log("You have the " + player[0].face + " of " + player[0].suit " and the " + player[1].face " of " + player[1].suit " for a score of " scoreHandArray(player)); 

こんにちは、もう一度私です!この関数はここに私が見つけることができないエラーがあり、返すSyntaxError: Expected ';'。 (私はそれが関数だと知っています、console.logのコメントアウトは何も変わらないからです)。関数scoreHandArrayはオブジェクトの配列をとり、オブジェクトのスコアを返します。ここでは完全なソースコード:カードオブジェクトの得点ハンド

// This code defines the Object constructor Card, used to make the card objects 
var Card = function(card) { 
    this.face = theFace(card); 
    this.suit = theSuit(card); 
    this.value = theValue(card); 
}; 

// This code creates the Deck to be used. 
var deck = []; 
for (i=0 ; i<52 ; i++) { 
    deck.push(i); 
}; 
for (i=51 ; i>0 ; i--) { 
    var random = Math.floor(Math.random()*i); 
    var temp = deck[random]; 
    deck[random] = deck[i]; 
    deck[i] = temp; 
}; 
// 0-12 is Spades. 
// 13-25 is Hearts. 
// 26-38 is Clubs. 
// 39-51 is Diamonds. 

// Now we create the hand of the player and dealer 
var player = []; 
var dealer = []; 

// Now to deal a card to player 
player.push(deck.pop()); 
dealer.push(deck.pop()); 

// and another 
player.push(deck.pop()); 
dealer.push(deck.pop()); 

// function theFace gives the face of a card 
function theFace(card) { 
    var faces = ["King","Ace","2","3","4","5","6","7","8","9","10","Queen","Jack"]; 
    return(faces[card%13]); 
}; 

// function theValue uses 'switch' to determine points from a card 
function theValue(card) { 
    var value = card % 13; 
    switch(value) { 

     case(0): 
     case(11): 
     case(12): 
      value = 10; 
      break; 

     case(1): 
      value = 11; 
      break; 

     default: 
      value = value; 
      break; 

    }; 
    return value; 
}; 

// function theSuit returns the suit of a card 
function theSuit(card) { 
    var suit; 
    if(card>38) { 
     suit = "Diamonds"; 
    }else if(card>25) { 
     suit = "Clubs"; 
    }else if(card>12) { 
     suit = "Hearts"; 
    }else { 
     suit = "Spades"; 
    }; 
    return suit; 
}; 

// function toObject the first (numbered) card of of a hand 
// and turns it into an Object with the desired properties 
function toObject(hand) { 
    var card = hand.pop(); 
    if (typeof(card) !== "number") { 
     hand.push(card); 
    } else { 
     var card = new Card (card); 
     hand.unshift(card); 
    }; 
    return hand; 
}; 

toObject(player); 
toObject(player); 
toObject(dealer); 
toObject(dealer); 

// function scoreHandArray scores your hand 
function scoreHandArray(hand) { 
    var score = 0; 
    for (i=0,i<hand.length,i++) { 
     score = score + hand[i].value; 
    }; 
    return score; 
}; 

console.log("You have the " + player[0].face + " of " + player[0].suit " and the " + player[1].face " of " + player[1].suit " for a score of " scoreHandArray(player)); 

ストレンジは、今; sのforループで, Sを交換した後、それは今ReferenceError: expected ')'を応答します。何が)できますか? (エラーは最後のconsole.log行にあるように見えますが、コメントアウトするとエラーが消えてしまいます)。私はこの行に2を返します。(と2 )

答えて

1

あなたの問題はここにあるように見えます:

for (i=0,i<hand.length,i++) { 
    score = score + hand[i].value; 
}; 

あなたは;forループでカンマを交換する必要があります。また、}以降のセミコロンは必要ありません。

さらに、ループの始めにvar i=0を使用することが推奨され、グローバルi変数を参照することによるスコープの問題も防止されます。

+0

aww、よろしく!私はそれをチェックしたと思った!ありがとう! – CAD97

+0

ようこそ。 JSLint(Mike_Kによって投稿された)もチェックしてください。かなり役に立ちます。 – davethegr8

0

すべてのJavaScriptコードをJSLintに入れることをお勧めします。これは、問題にカスケードするシンタックスの問題を解決するのに役立ち、ブラウザ間の互換性のために大きな時間を費やします。

関連する問題