@Sizoider

Как реализовать повторяющийся цикл?

народ привет
подскажите как реализовать раздачу кард?
скажем у меня есть массив с 4 мя игроками
var playersArr = [player1, player2, player3, player4];
52 карты
var myDeck = 52;
первый берет карту,анализирует,если условие выполняется,то берет следующую карту,если нет,то ход переходит к следуюшему игроку.и так пока колода не закончится
я уже весь мозг сломал
помогите пожалуйста
спасибо заранее

function card(value, name, suit){
    this.value = value;
    this.name = name;
    this.suit = suit;
}

function deck(){
    this.names = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
    this.suits = ['Hearts','Diamonds','Spades','Clubs'];
    var cards = [];
    
    for( var i = 0; i < this.suits.length; i++ ) {
        for( var n = 0; n < this.names.length; n++ ) {
            cards.push( new card( n+2, this.names[n], this.suits[i] ) );
        }
    }

    return cards;
}
var myDeck = new deck();

function shuffle(o) {
    for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
    return o;
}

myDeck = shuffle(myDeck);

function Player(name){
    this.playerDeck = [];
    this.name = name;
    this.takeCard = function(){
        var shiftedCard = myDeck.shift();
        this.playerDeck.push(shiftedCard);
    };
}

var player1 = new Player('player1');
var player2 = new Player('player2');
var player3 = new Player('player3');
var player4 = new Player('player4');
var playersArr = [player1, player2, player3, player4];

for(var i = 0; i < myDeck.length;i++){
    var pl = playersArr[i];
    pl.takeCard();
   // дальше понятия не имею что делать
}
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
@Aves
Перебирать нужно ходы. Так будут брать карту, если значение больше 10, то снова, если меньше, то передавать ход, пока колода не закончится.
function Player(name) {
  this.playerDeck = [];
  this.name = name;
  this.takeCard = function() {
    var shiftedCard = myDeck.shift();
    if (shiftedCard) {
      this.playerDeck.push(shiftedCard);
      return shiftedCard;
    }
  };
}

...

var takenCard, turn = 0;

while (takenCard = playersArr[turn % playersArr.length].takeCard()) {
  if (takenCard.value > 10) {
    console.log(takenCard.name, takenCard.suit, 'take one more');
    continue;
  } else {
    console.log(takenCard.name, takenCard.suit, 'give turn to the next player');
    turn++;
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы