2014-01-25 3 views
0

InitialМонополия игра воссоздание колода карт после того, как выбраны

cardCount = { chest: [0], chance: [0]}; 

Создание карт

function createCards() { 
    cards = { 

     chance: [{ 
      title: 'Advance to go', 
      type: 'move', 
      position: 40 
     }, { 
      title: "Advance to London", 
      type: "move", 
      position: 39 
     }, { 
      title: "Your ass is going to jail", 
      type: "move", 
      position: 10 
     }, { 
      title: "Advance to Rome", 
      type: "move", 
      position: 24 
     }, { 
      title: "Advance to Charles de Gaulle", 
      type: "move", 
      position: 15 
     }, { 
      title: "Advance to Amsterdam", 
      type: "move", 
      position: 11 
     }, { 
      title: "Go back 3 spaces", 
      type: "movex", 
      position: -3 
     }, { 
      title: "No drink and driving mate1", 
      type: "bill", 
      bill: 20 
     }, { 
      title: "Get out of Jail free card", 
      type: "bill", 
      bill: 150 
     }, { 
      title: "Pay school fees", 
      type: "bill", 
      bill: 150 
     }, { 
      title: "Speeding fine", 
      type: "bill", 
      bill: 150 
     }, { 
      title: "Bank pays you dividend", 
      type: "bonus", 
      bonus: 40 
     }, { 
      title: "You have won the competition", 
      type: "bonus", 
      bonus: 200 
     }, { 
      title: "Your building loan matures", 
      type: "bonus", 
      bonus: 200 
     }, { 
      title: "You are assessed for street repairs $40 per house $115 per hotel", 
      type: "billx" 
     }, { 
      title: "House repairs $25 per house $100 per hotel", 
      type: "billx" 
     }], 
     chest: [{ 
      title: "Advance to go", 
      type: "move", 
      newposition: 40, 
      bonus: 200 
     }, { 
      title: "Advance to Cairo", 
      type: "move", 
      newposition: 1 
     }, { 
      title: "Go to Jail", 
      type: "move", 
      newposition: 10 
     }, { 
      title: "Pay hospital fees", 
      type: "bill", 
      bill: 100 
     }, { 
      title: "Pay doctor fees", 
      type: "bill", 
      bill: 50 
     }, { 
      title: "Pay insurance premium", 
      type: "bill", 
      bill: 50 
     }, { 
      title: "Bank error. Collect $200", 
      type: "bonus", 
      bonus: 200 
     }, { 
      title: "Annuity matures. Collect $100", 
      type: "bonus", 
      bonus: 100 
     }, { 
      title: "You inherit $100", 
      type: "bonus", 
      bonus: 100 
     }, { 
      title: "From sale of stock you get $50", 
      type: "bonus", 
      bonus: 50 
     }, { 
      title: "Preference shares: $25", 
      type: "bonus", 
      bonus: 25 
     }, { 
      title: "You have won second prize in a beauty contest. Collect $10.", 
      type: "bonus", 
      bonus: 10 
     }, { 
      title: "It is your birthday. Collect $10.", 
      type: "bonus", 
      bonus: 10 
     }, { 
      title: "You win the lottery. Collect $10", 
      type: "bonus", 
      bonus: 10 
     }] 
    }; 
} 

Pick

function pickCard(type) { 

    var x = Math.floor(Math.random() * (cards[type].length)); 
    var title = cards[type][x].title; 

    cardCount[type][0]++; 
    cards[type].splice(x, 1); 

    if (cards[type].length === 0) { 

     cardCount[type][0] = 0; 
     createCards(); // this is the problem code line 
    } 
} 

Ok ребята мне нужно немного подстроить. Есть две карты, и я держу счетчик для них. Всякий раз, когда колода полностью выбрана, я воссоздаю карты createCards. Проблема заключается в том, что я также воссоздал другую колоду, потому что createCards создает 2 колоды chance и chest. Как мне настроить свой код без создания другого объекта для 2-х колод?

ответ

0

Я предполагаю, что карты являются глобальными или, по крайней мере, вы «var cards» где-то в более широком масштабе?

Первый раз:

createCards() 

От pickCard:

createCards ([type]) 

Изменить createCards следующим образом:

function createCards (options) { 
if (typeof options == "undefined") {options = ['chance', 'chest']; cards = {}} 
if (options.indexOf('chance') != -1) { 
    cards.chance = {...} 
} 
if (options.indexOf('chest') != -1) { 
    cards.chest = {...} 
} 
} 

PS: это сделало бы более интересным, если вы рандомизированы порядок функция createCards.

+0

Да карты являются глобальными. Хорошо, когда вы вызываете 'createCards' из pickCard, вы передаете' type'. Там я с тобой. Затем в createCards вы начинаете с оператора if ... вы проверяете, не определено ли это ... что вы делаете, если оно не определено? –

+0

Этот код не передает 'type', он передает' [type] ':' type' в массиве. Если параметры не заданы, они устанавливают опции '' '' '' '' '' '' '' ''' '' '' '' '' '' 'и' '' пустым объектам ('{}'). – Agamemnus

+0

Хорошо, ты полностью меня потерял. Я буду смотреть на ваш код утром, его определенно не тонет прямо сейчас. Благодарю. –

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