Oczko w JS

0

Witam, proszę o "podpowiedź"/nakierowanie jak mogę "dokończyć dzieła" - chodzi o stworzenie gry oczko, utknełem w miejscu z powodu braku koncepcji - how to. Chciałbym to koniecznie zrobić z tablicami asocj. Oto kod:

var allCards = [];
allCards[0] = ['As', '11'];
allCards[1] = ['Ten', '10'];
allCards[2] = ['Nine', '9'];
allCards[3] = ['King', '4'];
allCards[4] = ['Queen', '3'];
allCards[5] = ['Wallet', '2'];

var currentPoint = 0;
var targetPoint = 21;
var round = 0;

function randCard() {
	var rand = allCards[Math.floor(Math.random() * allCards.length)];
	console.log(rand);
}

console.log(randCard());

Gracz losuje kartę, i sam podejmuje decyzję czy zakończyć grę czy "ryzykować" przeskoczenie 21pkt i dalszą grę.
co losowanie, na ekranie wyskakuje która to już runda

  1. While ( currentPoint <= targetPoint)...
  2. round++; i kontakenacja...
  3. może być prompt pytający Y/N + if/else
  4. zastanawiam się czy może lepiej zaimplementować boolean...

Jakoś nie mogę tego wszystkiego składnie pozbierać w jedną całość... Jakieś propozycję?:)

0

Bardzo prymitywna implementacja: JSFiddle

W grach jest coś takiego jak game loop. Za to odpowiada pętla while. Jedna runda to jeden obrót pętli. Z pętli wychodzimy za pomocą instrukcji break jeżeli gracz zebrał powyżej 21 punktów lub nie chce dalej grać.

Musisz dołożyć jeszcze informacje czy wygrał czy przegrał itp. Mozesz np. rozwinąć gre o przeciwnika. W pętli losuj po prostu dwie karty. Jedna karta dla gracza druga dla komputera. Ładuj wynik do osobnych zmiennych scorePlayer scoreAI, czy coś i voila. Wtedy tam gdzie teraz jest sprawdzany wynik sprawdź czy którykolwiek jest większy równy 21.

Jak masz jakieś pytania to śmiało :)

A i btw. w JavaScript tablica asocjacyjna to inaczej obiekt.

var deck = {
    cards: [{
      name: 'As',
      value: 11
    }, {
      name: 'Ten',
      value: 10
    }, {
      name: 'Nine',
      value: 9
    }, {
      name: 'King',
      value: 8
    }, {
      name: 'Queen',
      value: 7
    }, {
      name: 'Wallet',
      value: 6
    }],
    getRandom: function() {
      var randomIndex = Math.floor(Math.random() * this.cards.length);
      return this.cards[randomIndex]
    }
  },
  messages = {
    continue: 'Czy chcesz kontynuować grę?'
  },
  score = 0,
  currentCard;

while (true) { // tzw. game loop
  currentCard = deck.getRandom();
  
  score += currentCard.value;
  
  if(score >= 21) {
  	break; 
  }
  
  alert("Wylosowałeś: " + currentCard.name);
  alert("Masz punktów: " + score);

  if (!confirm(messages.continue)) {
    break;
  }
}

alert("Koniec gry!");

1 użytkowników online, w tym zalogowanych: 0, gości: 1