2016-11-12 3 views
1

Я новичок, пытающийся построить покерную игру в Техасском Холдеме для практики. Для простоты, допустим, у меня 4 игрока, и мы в раунде/игре номер 4, поэтому мой дилерский чарт будет на игроке4. Кроме того, для простоты, мы начинаем дело в dealerChip т.е. игроку 4.Javascript - как использовать переменную внутри функции

var numberPlayers = 4; 
var gameNumber = 4 
var deck = ["1","3","4","2"] 
var player4 = []; 
var dealerChip = "player0"; 

if (gameNumber <= numberPlayers) { 
    dealerChip = "player" + gameNumber; 
} 
else { 
    var val = Math.floor((gameNumber-1)/numberPlayers); 
    dealerChip = "player" + gameNumber - numberPlayers * val; 
}; 

function deal(toWhere) { 
    toWhere.push(deck[deck.length-1]); 
    deck.pop(); 
} 

Вот мой вопрос - когда я пытаюсь использовать функцию сделки по player4 непосредственно (сделка (player4);), он отлично работает.

Но когда я использую функцию сделки на DealChip (сделка (DealChip);), которая равна игроку4, она не работает.

Это потому, что переменная dealerChip на самом деле является строкой? Как это изменить? Извините, если вопрос повторяется - я слишком новичок, чтобы даже знать, что искать ...

+0

http://importblogkit.com/2015/07/does-not-work/ – Biffen

+1

Возможно, вы имели в виду ' "игрок" + (gameNumber - numberPlayers * знач);' Убедитесь, что вы смотрите в консоли для ошибки также - и посмотрите на 'console.log' – mplungjan

+0

* 'deal (dealerChip);), равный игроку4 *' Нет.' player4' * не * равно '' player4 "'. – Biffen

ответ

0

Вот пример того, что, как я думаю, вы пытаетесь сделать. Вам необходимо использовать javascript's bracket notation.

//place properties into object. 
var obj = { 
    numberPlayers: 4, 
    gameNumber: 4, 
    deck: ["1","3","4","2"], 
    player4: [], 
    dealerChip: "player0" 
}; 

function deal(toWhere) { 
    toWhere.push(obj.deck[obj.deck.length-1]); 
    obj.deck.pop(); 
} 

obj.dealerChip = "player4"; 

//now, to call deal() 

//what you do and works because player4 is an array 
deal(obj.player4); 
//what you want to do; this access the property in the obj 
//that has a name equal to the value of dealerChip. 
//In this case, dealerChip has the value of "player4". 
deal(obj[obj.dealerChip]); 
//Therefore, it can be rewritten as: 
deal(obj["player4"]); 
//which can also be rewritten as: 
deal(obj.player4); 
//which is the same as the original you attempted 
+0

Вау, большое спасибо за ваше время, Джеймс. Я пойду и разобью это! :) – madna

+0

Большое спасибо, Джеймс! Теперь он работает правильно, и я работаю над его включением в остальную часть моего кода! – madna

+0

@madna Дайте ему верхнюю отметку, чтобы выразить признательность. – Carcigenicate

Смежные вопросы