В JavaScript-коде я пытаюсь переименовать объект по его сохраненным данным. Я попытался использовать pathTo, как предложил этот сайт (http://thedesignspace.net/MT2archives/000381.html), но моя консоль возвращает «ReferenceError:« pathTo »не определена». Мой код выглядит примерно так:переименование переменных по свойствам (JavaScript)
// This code defines the Object constructor Card, used to make the card objects
var Card = function() {
this.face = theFace(this);
this.suit = theSuit(this);
this.value = theValue(this);
};
// 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.shift();
if (typeof(card) !== "number") {
hand.unshift(card);
} else {
var card = new Card();
card = pathTo[card.suit + card.face];
};
return hand;
};
console.log(player);
toObject(player);
toObject(player);
console.log(player);
Я пытаюсь переименовать карту я превратившись из TYPEOF === «число» в TYPEOF === «объекта», так что, когда я запустить код несколько раз (следовательно, функция) У меня нет дубликатов имен объектов в массиве рук.
Вот некоторые примеры того, что печатает моя консоль:
[ 19, 46 ]
ReferenceError: 'pathTo' is undefined
и
[ 31, 18 ]
ReferenceError: 'pathTo' is undefined
Там должен быть способ сделать это, я просто не могу найти как.
В функции toObject Я пытаюсь взять первый номер (карту) в ручном массиве и превратить его в объект, описывающий его квалификаторы, как карту стандартной колоды карт 52. EDIT: Я просто понял, что я даже не отталкиваю его. Я собираюсь попробовать что-то, чтобы увидеть, будет ли это работать.
EDITEDITED_SOLVED: Я сделал это! Оказывается, мне не нужно менять имя, код будет держать его отдельно для меня каким-то образом. Все, что мне нужно было сделать так, чтобы она работала правильно это:
Заменить
var Card = function() {
this.face = theFace(this);
this.suit = theSuit(this);
this.value = theValue(this);
};
с
var Card = function(card) {
this.face = theFace(card);
this.suit = theSuit(card);
this.value = theValue(card);
};
и
function toObject(hand) {
var card = hand.shift();
if (typeof(card) !== "number") {
hand.unshift(card);
} else {
var card = new Card();
card = pathTo[card.suit + card.face];
};
return hand;
};
с
function toObject(hand) {
var card = hand.shift();
if (typeof(card) !== "number") {
hand.unshift(card);
} else {
var card = new Card (card);
hand.push(card);
};
return hand;
};
Спасибо за помощь!
Не могли бы вы объяснить на простом английском языке, чего вы пытаетесь достичь с помощью этого кода? – georg
Извините, я думал, что сделал. То, что я делаю, занимает #r, стоящее за карточкой в колоде из 52 карт (0-51) и поворачивая ее, а в ручном массиве - на объект, описывающий его свойства. Однако мне нужно создать имя для карты, и именно здесь 'pathTo' создает' ReferenceError'. – CAD97
Моя основная проблема заключается в попытке изменить имя карты, поэтому я не получаю несколько объектов карты в моем массиве. – CAD97