一个功能,所以我一直在写一个脚本来播放视频(或真正基于文本)扑克游戏作为学习JavaScript的练习。我有一切努力通过一次游戏的实例来玩,但试图再次运行时,它会产生一个错误:“未捕获的类型错误:对象不是函数”JavaScript错误:对象不是在视频扑克脚本
尝试访问此错误时出现创造一个新的手。
下面是相关的代码,我离开了那几个功能似乎并没有被引起的任何问题:
//object constructor for card
function card(suite, faceValue) {
this.suite = suite,
this.faceValue = faceValue
}
//object constructor for hand
function hand(cards, handName, score, docHandName) {
this.cards = cards,
this.handName = handName,
this.score = score,
this.docHandName = docHandName
}
var deck = new Array;
var buildDeck = function() {
for (var i = 0; i <= 52; i++) {
if (i < 13) {
deck[i] = new card("Spades", i + 2);
}
else if (i < 26) {
deck[i] = new card("Clubs", i - 11);
}
else if (i < 39) {
deck[i] = new card("Hearts", i - 24);
}
else if (i < 52) {
deck[i] = new card("Diamonds", i - 37);
}
}
}
//pulls a card from location in deck specified by randomSpot()
var pullCard = function(spot) {
var newCard = deck[spot];
deck.splice(spot, 1);
return newCard;
}
//takes away a card each time
//passes into pullCard(spot) as spot
var pullCount = 0;
var randomSpot = function() {
var x = Math.floor(Math.random() * (52 - pullCount));
pullCount++;
return x;
}
var dealFiveCards = function() {
var card1 = pullCard(randomSpot());
var card2 = pullCard(randomSpot());
var card3 = pullCard(randomSpot());
var card4 = pullCard(randomSpot());
var card5 = pullCard(randomSpot());
var fiveCards = [card1, card2, card3, card4, card5];
return fiveCards;
}
function createNewHand() {
newHand = new hand();
newHand.cards = dealFiveCards();
return newHand;
}
var playOneGame = function() {
buildDeck();
hand = createNewHand();
hand.cards.sort(compare);
assignHandScore();
wager = prompt("How much do you bet?");
printHandValue();
dealAgain();
hand.cards.sort(compare);
assignHandScore();
payout = pays(wager);
printHandValue();
printPayout();
}
playAgain = "Y";
while (playAgain === "Y") {
playOneGame();
playAgain = prompt("Would you like to play again? Y/N").toUpperCase();
}
试图运行playOneGame()
功能的第二遍的时候出现这样的错误。第一次运行良好,并且创建了一只手。第二次,当它达到hand = createNewHand();
它给该对象不是一个函数错误。
为了清楚起见,我有作为对象,其中所包含的属性cards, handName, score, docHandName
其中cards
是card
对象的,本身含有的属性suite, faceValue
的阵列创建的hand
。
该错误给出函数createNewHand()
中的行newHand = new hand();
作为参考线。
帮助?
圣牛蝙蝠侠,将对象构造函数更改为“手”工作!问题解决了。直到我发现一个新问题... 谢谢! – icegoat 2014-10-10 20:35:34