• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JavaScript losowanie liczby jeszcze raz jeżeli nie spełni warunku.

HackNation - ogólnopolski hackathon
0 głosów
841 wizyt
pytanie zadane 19 marca 2016 w JavaScript przez uRTLy Bywalec (2,420 p.)
edycja 19 marca 2016 przez uRTLy

 

function computerLogic(array) {

  function random() {

    var rand = Math.floor(Math.random() * 9);

    var result = (array[rand] === computerChoice) || (array[rand] === playerChoice) ?
      random(): (function() {
        array[rand] = computerChoice;
        grid.item(rand).innerHTML = computerChoice;
      })(rand);
  }

  random();


}

Moze i proste ale moja logika mnie zawodzi.  

To  gra w kółko i krzyżyk , computerLogic(array) jest wywoływana za każdym razem jak użytkownik kliknie i wtedy losowana jest liczba . Jak pod  indexem tablicy znajduje sie X albo O ( playerChoice) albo (userChoice) chce żeby wylosowało liczbe jeszcze raz. Do tej pory robiłem to jakby rekursywnie ale nie chce zeby za każdym razem wywoływało znowu funkcje random tylko poprostu znowu wylosowało..I jakoś wogóle nie mam pomysłu..

https://github.com/uRTLy/Tic-Tac-Toe tutaj kod aplikacji ale przed tym jak zmieniłem na ternary operator zamiast ifów.
 

edit
może też wracać do początku funkcji znowu albo poprostu niech znowu włączy rand ale niech ponownie sprawdzi czy nie wylosowało indexu z zajętym polem. Tylko niech nie wywołuje się jeszcze raz bo pod koniec w konsoli przeglądarki mam 10 randomów wywołanych i maximum call stack exceeded przy kółku i krzyżyku....

 

1 odpowiedź

+2 głosów
odpowiedź 19 marca 2016 przez Comandeer Guru (607,330 p.)

Osobiście nie szedłbym w rekurencję, a w pętlę do...while.

komentarz 19 marca 2016 przez uRTLy Bywalec (2,420 p.)
function computerLogic(array) {
var random;
var zero = 0;
while (array[random] === zero){
  random=(function (){
    var a= Math.floor(Math.random()*9);
    return a;
  })();
}
  console.log(random);

if(array[random] === zero ){
array[random]=computerChoice;
grid.item(random).innerHTML=computerChoice;
}
}

 

Ułatwiłem to sobie, jeżeli array[random] === 0 to znaczy że nie jest równy ani playerChoice ani computerChoice.

Tylko dalej jest coś nie tak, myślałem że to z porównaniem coś nie tak więc dalem 0 w zmienna. Hmm nie wiem co jest nie tak. Albo ta funkcja random jest zle zrobiona ale już próbowałem każdej.

komentarz 19 marca 2016 przez Comandeer Guru (607,330 p.)

Ehh… Przeczytaj jeszcze raz to:

Pętla ma się wykonywać tak długo, jak długo wylosowana liczba BĘDZIE zajęta przez gracza lub komputer.

A teraz pomyśl, co robi Twój kod ;) 

komentarz 20 marca 2016 przez uRTLy Bywalec (2,420 p.)
while (array[random] !== zero)

zapewne o to ci chodzi ale teraz while crashuje program,

komentarz 20 marca 2016 przez Comandeer Guru (607,330 p.)
Jak będę mieć chwilę wolnego, to obadam Twój projekt na GH.
komentarz 20 marca 2016 przez uRTLy Bywalec (2,420 p.)
Wiesz co zrobie od nowa całe kółko i krzyżyk całkiem inaczej bo mam teraz troche inny pomysł.

Podobne pytania

0 głosów
1 odpowiedź 1,528 wizyt
pytanie zadane 28 czerwca 2018 w JavaScript przez Tomasz Ozi Orzech Początkujący (300 p.)
0 głosów
2 odpowiedzi 2,357 wizyt
0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 6 marca 2018 w JavaScript przez myku18 Nowicjusz (210 p.)

93,626 zapytań

142,549 odpowiedzi

323,034 komentarzy

63,129 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1452p. - dia-Chann
  2. 1437p. - DziarnowskiJ
  3. 1411p. - Łukasz Piwowar
  4. 1409p. - CC PL
  5. 1371p. - raydeal
  6. 1369p. - Adrian Wieprzkowicz
  7. 1335p. - robwarsz
  8. 1275p. - Maurycy W
  9. 1141p. - ssynowiec
  10. 1134p. - Tomasz Bielak
  11. 1116p. - rucin93
  12. 1100p. - Mariusz Fornal
  13. 885p. - Dominik Łempicki (kapitan)
  14. 847p. - Grzegorz Aleksander Klementowski
  15. 838p. - Wojciech Malicki
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...