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

Problem z podmianą znaków

Object Storage Arubacloud
0 głosów
289 wizyt
pytanie zadane 23 lutego 2017 w JavaScript przez czujek22 Dyskutant (7,670 p.)
edycja 23 lutego 2017 przez czujek22

Witam. Mam problem przy modyfikacji gry z odcinka 3. Chcę zrobić mechanizm przejścia do następnych haseł po odgadnięciu poprzednich ale problem już pojawia się przy podmianie liter przy wybraniu którejś.

 

http://codepen.io/czujek22/pen/OpJPWm

Hasło pierwsze to łańcuch "Pierwszy". Na podglądzie dobrze wyświetla hasło zakreskowane ale gdy już klikam np. na litere P to nic nie podmienia.

 

Edit. Już to zrobiłem i działa (chyba za szybko założyłem temat) :) Ale, żeby nie zmarnować go to może podsuniecie jakieś pomysły mechanizmu zmiany na nowe hasło i zdjęcie po odgadnięciu poprzedniego ? Cały program zamykać w pętli, funkcji ? Czy może jakaś gotowa funkcja jest do tego typu działań. Chodzi o to, aby po kliknięciu 'DALEJ' zmieniło się na nowe hasło do odgadnięcia. Więc pewnie coś z onclickiem?

1 odpowiedź

+1 głos
odpowiedź 25 lutego 2017 przez d0man94 Początkujący (480 p.)
wybrane 25 lutego 2017 przez czujek22
 
Najlepsza

Ja rozwiazalem to tak:

var rand10 = Math.floor((Math.random() * 11));
var haslaPrzyslowia = new Array(10);

haslaPrzyslowia[0] = "Bez pracy nie ma kołaczy";
haslaPrzyslowia[1] = "Apetyt rośnie w miarę jedzenia";
haslaPrzyslowia[2] = "Czym kto wojuje od tego ginie";
haslaPrzyslowia[3] = "Jak cię widzą tak cię piszą";
haslaPrzyslowia[4] = "Komu w drogę temu czas";
haslaPrzyslowia[5] = "Nie życz drugiemu co tobie niemiło";
haslaPrzyslowia[6] = "Od przybytku głowa nie boli";
haslaPrzyslowia[7] = "Apetyt rośnie w miarę jedzenia";
haslaPrzyslowia[8] = "Baba z wozu koniom lżej";
haslaPrzyslowia[9] = "Być pracowitym jak pszczoła";
haslaPrzyslowia[10] = "Co dwie głowy to nie jedna";

var haslo = haslaPrzyslowia[rand10];

Po kliknieciu poza codepen.io na JESZCZE RAZ? wejdzie ci onlick location.reload(), a reload sam z siebie spowoduje ponowne uruchomienie metody Math.random losujacej haslo z puli.

1
komentarz 25 lutego 2017 przez niezalogowany

Hej, do tworzenia tablicy użyj literału zamiast konstruktora. Jest szybszy, bezpieczniejszy, a przede wszystkim - czytelniejszy

var haslaPrzyslowia = [
	"Bez pracy nie ma kołaczy",
	"Apetyt rośnie w miarę jedzenia", 
	"Czym kto wojuje od tego ginie", 
	"Jak cię widzą tak cię piszą", 
	"Komu w drogę temu czas", 
	"Nie życz drugiemu co tobie niemiło", 
	"Od przybytku głowa nie boli", 
	"Apetyt rośnie w miarę jedzenia", 
	"Baba z wozu koniom lżej",
	"Być pracowitym jak pszczoła",
	"Co dwie głowy to nie jedna"
];

Dodatkowo możesz uczynić ten kod bardziej uniwersalnym. Do losowania hasła użyj długości tablicy

Math.floor((Math.random() * haslaPrzyslowia.length)); 
komentarz 25 lutego 2017 przez d0man94 Początkujący (480 p.)
świetna wskazówka, dzięki, na pewno użyję w swoim kodzie!
komentarz 25 lutego 2017 przez czujek22 Dyskutant (7,670 p.)
edycja 25 lutego 2017 przez czujek22
ooo ciekawy pomysł :) spróbuję zrobić to w ten sposób.

Tego szukałem :) Tylko czy jest jakiś sposób do zabezpieczenia przed powtórzeniem się 1 hasła ?
1
komentarz 25 lutego 2017 przez niezalogowany

Jeśli możemy założyć, że żadne hasło ma się nigdy nie powtórzyć - wylosowane hasło można usunąć z tablicy

hasla.splice(wylosowanyIndex, 1);
komentarz 25 lutego 2017 przez czujek22 Dyskutant (7,670 p.)

W moim przypadku to nie dziala, wciaz losuje po kilka razy.

var pilkarze = ["Cristiano Ronaldo","Gerard Pique","Eden Hazard","Marc-Andre ter Stegen","Andre Schurrle","Roberto Firmino","Nicolae Stanciu"];

for(i=0;i<7;i++)
  {
    pilkarze[i] = pilkarze[i].toUpperCase();
  }

var dlugosc = new Array(7);

dlugosc[0]=pilkarze[0].length;
dlugosc[1]=pilkarze[1].length;
dlugosc[2]=pilkarze[2].length;
dlugosc[3]=pilkarze[3].length;
dlugosc[4]=pilkarze[4].length;
dlugosc[5]=pilkarze[5].length;
dlugosc[6]=pilkarze[6].length;


 var l=0;
var ile = 8;
var numer=0;

var haslo1 = new Array(7);

haslo1[0] = "";
haslo1[1] = "";
haslo1[2] = "";
haslo1[3] = "";
haslo1[4] = "";
haslo1[5] = "";
haslo1[6] = "";

var c =5;

for(j=0;j<7;j++)
  {
        for(i=0; i<dlugosc[j]; i++)
    {
      if (pilkarze[j].charAt(i)==" ")
        haslo1[j] = haslo1[j] + " ";
      else
      haslo1[j] = haslo1[j] + "-";
    }
  }

  var rand7 = Math.floor((Math.random() * 7));

var haslo = pilkarze[rand7];

pilkarze.splice(rand7,1);

....
....
....

 

1
komentarz 25 lutego 2017 przez niezalogowany

czujek22 może redefiniujesz tablice piłkarze za każdym razem?

komentarz 25 lutego 2017 przez czujek22 Dyskutant (7,670 p.)
ah xd ze nie wpadlem na to ;d teraz problem bo nie wiem jak za 2+ odświeżeniem pominąć tą linijkę
komentarz 25 lutego 2017 przez niezalogowany
po co odświeżać? wyzeruj wszystko JS-em
komentarz 25 lutego 2017 przez czujek22 Dyskutant (7,670 p.)
odświeżam stronę location.reload() po kliknięciu DALEJ aby pojawiło sie nowe hasło i program przechodzi na początek skryptu wykonując go od nowa. Innymi sposobami sobie nie radziłem
komentarz 25 lutego 2017 przez niezalogowany

Jeśli chcesz zachować dane, reset JS-em jest najprostszym wyjściem. (Zawsze jeszcze możesz skorzystać z localStorage albo ciasteczek...)

Podobne pytania

0 głosów
2 odpowiedzi 327 wizyt
0 głosów
1 odpowiedź 164 wizyt
pytanie zadane 1 marca 2017 w C# przez marcin99b Szeryf (82,080 p.)
0 głosów
1 odpowiedź 461 wizyt
pytanie zadane 15 października 2017 w C# przez rexar123499 Nowicjusz (180 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...