Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ JavaScript _ Instrukcja if i wartosc zmiennej BOOLEAN

Napisany przez: lucwebdesigntom 5.04.2019, 23:16:07

Witam
Nie moge zrozumiec dlaczego instrukcja if nie dziala prawidlowo w tym ponizszym kodzie.
Na poczatku zadeklarowalem zmienna
var oneVisible = false;

i juz na samym poczatku instrukcji
if(oneVisible == false)

powinna przypisac zmiennej
var oneVisible = true;

i sie zaczymac i sprawdzic instruckje poprawnie i za drugim razem powinno przejsce do
else[b] i zwiekszyc licznik o jeden :

[b]$('.score').html('Turn counter: '+turnCounter);


lecz niestety wykonanie tej instrukcji zwieksza mi licznik na dwa.
Z tego wynika ze ta instrukcja nie dziala.
Prosilbym o podpowiedzi cos jest nie tak)


Kod
var oneVisible = false;
var turnCounter = 0;  
var visible_nr;

function revealCard(nr)
{
    var opacityValue = $('#c'+nr).css('opacity');
    
        var obraz = "url(img/" + cards[nr] + ")";
        
        $('#c'+nr).css('background-image', obraz);
        $('#c'+nr).addClass('cardA');
        $('#c'+nr).removeClass('card');
        
        if(oneVisible == false)
        {
            oneVisible = true;
            alert('one');}
        else
        {
            turnCounter++;
                        $('.score').html('Turn counter: '+turnCounter);
            oneVisible = false;
            alert('two');}
}

Napisany przez: gitbejbe 6.04.2019, 20:01:19

Cytat
i juz na samym poczatku instrukcji
if(oneVisible == false)

powinna przypisac zmiennej
var oneVisible = true;

no i przypisuje.

Cytat
i sie ZACZYMAC
serio ?!

Cytat
i sie zaczymac i sprawdzic instruckje poprawnie i za drugim razem powinno przejsce do

no i przechodzi. Wklej jak wywołujesz funkcję, oraz czy gdzieś dalej manipulujesz zmienną turnCounter.

Napisany przez: lucwebdesigntom 6.04.2019, 23:57:09

Dzieki za odpowiedz
Tutaj jest caly kod funkcji:

Kod
var cards = ["ciri.png","geralt.png","jaskier.png","jaskier.png","iorweth.png","triss.png","geralt.png","yen.png","ciri.png","triss.png","yen.png","iorweth.png"];

var c0 = document.getElementById("c0");
var c1 = document.getElementById("c1");
var c2 = document.getElementById("c2");
var c3 = document.getElementById("c3");

var c4 = document.getElementById("c4");
var c5 = document.getElementById("c5");
var c6 = document.getElementById("c6");
var c7 = document.getElementById("c7");

var c8 = document.getElementById("c8");
var c9 = document.getElementById("c9");
var c10 = document.getElementById("c10");
var c11 = document.getElementById("c11");

c0.addEventListener("click", function() {revealCard(0); });
c1.addEventListener("click", function() {revealCard(1); });
c2.addEventListener("click", function() {revealCard(2); });
c3.addEventListener("click", function() {revealCard(3); });

c4.addEventListener("click", function() {revealCard(4); });
c5.addEventListener("click", function() {revealCard(5); });
c6.addEventListener("click", function() {revealCard(6); });
c7.addEventListener("click", function() {revealCard(7); });

c8.addEventListener("click", function() {revealCard(8); });
c9.addEventListener("click", function() {revealCard(9); });
c10.addEventListener("click", function() {revealCard(10); });
c11.addEventListener("click", function() {revealCard(11); });

var oneVisible = false;
var turnCounter = 0;  
var visible_nr;

function revealCard(nr)
{
    var opacityValue = $('#c'+nr).css('opacity');
    
        var obraz = "url(img/" + cards[nr] + ")";
        
        $('#c'+nr).css('background-image', obraz);
        $('#c'+nr).addClass('cardA');
        $('#c'+nr).removeClass('card');
        
        if(oneVisible == false)
        {
            oneVisible = true;
            alert('jeden');}
        else
        {
            turnCounter++; $('.score').html('Turn counter: '+turnCounter);
            oneVisible = false;
            alert('dwa');}
}


Gra nazywa sie odnalezienie 2 takich samych obrazkow z kart.
Kod dziala na zasadzie odkrywaniu kart. Jak sie odkryje 2 karty to powinnien sie licznik zwiekszyc o 1, natomiast w moim przypadku licznika zwieksza sie po odkryciu 1 karty i kolejnej.... licznik powinien sie zwiekszac o jeden po kazdym odkryciu 2 kart, 4 kart, 6 kart itd
Dzieki za podpowiedz

Napisany przez: gitbejbe 7.04.2019, 18:23:40

o matko boska.... dobrze że tylko 12 kart biggrin.gif żeś nawymyślał z tymi getElementById i addEventListener

  1. <http://december.com/html/4/element/div.html class="card" data-id="0"></http://december.com/html/4/element/div.html>
  2. <http://december.com/html/4/element/div.html class="card" data-id="1"></http://december.com/html/4/element/div.html>
  3. <http://december.com/html/4/element/div.html class="card" data-id="2"></http://december.com/html/4/element/div.html>
  4. // itd
  5.  
  6. <http://december.com/html/4/element/script.html>
  7.  
  8. $(function() {
  9.  
  10. var turnCounter = 0;
  11. var cards = ["ciri.png","geralt.png","jaskier.png","jaskier.png","iorweth.png","triss.png","geralt.png","yen.png","ciri.png","triss.png","yen.png","iorweth.png"];
  12.  
  13.  
  14. $('.card').on('click', function()
  15. {
  16. var id = $(this).data('id');
  17. var opacityValue = $(this).css('opacity');
  18. var obraz = "url(img/" + cards[id] + ")";
  19.  
  20. if($(this).hasClass('clicked')) {
  21. console.log('nie zwiekszam turnCounter bo ta karta została już odkryta');
  22. }
  23. else {
  24. $(this).addClass('clicked');
  25. turnCounter++;
  26. }
  27.  
  28. if(turnCounter % 2 == 0)){
  29. alert('no i masz co 2 karty');
  30. }
  31. });
  32.  
  33. });
  34.  
  35.  
  36. </http://december.com/html/4/element/script.html>

Napisany przez: lucwebdesigntom 8.04.2019, 20:06:47

Dzieki za pomoc. Juz dokonczylem sobie ta gierke:)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)