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

Śledzenie liczby prób użytkownika

VPS Starter Arubacloud
+1 głos
199 wizyt
pytanie zadane 5 listopada 2016 w JavaScript przez Adam Klepacz Początkujący (440 p.)
zmienione kategorie 5 listopada 2016 przez Arkadiusz Waluk

Witam serdecznie forumowiczów, to mój pierwszy post więc proszę o wyrozumiałość. 
Otóż przerabiam książkę JS dla dzieci i rozwiązując zadanie z rodziału "szubienica" rozwiązałem dwa dodatkowe zadania ale przy trzecim nie wiem jak do tego podejść. 

Mianowicie chodzi o to by program śledził ile razy użytkownik podjął próbę wpisania litery,i by przy złej próbie odjąć od liczby 10 liczbę możliwych prób, po czym gdy liczba prób = 0 zakończyć program i wyświetlić alert. Czy ktoś może pomóc mi to roxgryźć?

oto kod gry:
 


          // Utwórz tablicę ze słowami
        var słowa = [
            "javascript",
            "monter",
            "niesamowity",
            "lampart",
			"beznadzieja"
        ];
        // Wybierz losowe słowo
        var słowo = słowa[Math.floor(Math.random() * słowa.length)];
        // Skonfiguruj tablicę z odpowiedziami
        var odpowiedzi = [];
        for (var i = 0; i < słowo.length; i++) 
		{
            odpowiedzi[i] = "_";
        }
        var pozostałeLitery = słowo.length;
		var licznik=10;
        // Główna pętla gry
        while (pozostałeLitery > 0 && licznik > 0) 
		{
		
            // Pokaż graczowi bieżący wynik
            alert(odpowiedzi.join(" "));
            // Wczytaj strzał użytkownika
            var strzał = prompt("Podaj literę lub kliknij Anuluj aby zakończyć grę.");
			
			//Jeśli strzał == duża literaz to 
			// strzał przekształć na to samo ale z małą literą.

			if (strzał == strzał.toUpperCase()) 
			{
			 alert("Podałeś dużą literę, zostanie ona przekstrzałcona na małą");
             strzał=strzał.toLowerCase();
        	}

            if (strzał === null) 
			{
            	// Wyjdź z głównej pętli gry
            	break; 
            } else if (strzał.length !== 1) 
			{
            alert("Proszę podaj tylko jedną literę.");
        	} 
			else 
			{
				
	                // Zaktualizuj stan gry na podstawie strzału
	                for (var j = 0; j < słowo.length; j++) 
					{
	                if (słowo[j] === strzał) {
	                 odpowiedzi[j] = strzał;
	                  pozostałeLitery--;
	                }
					
					
				
             }
					
					
          }
        // Koniec głównej pętli gry
        }
			// Pokaż odpowiedź i złóż graczowi gratulacje
        alert(odpowiedzi.join(" "));
        alert("Dobra robota! Szukane słowo to " + słowo);

 

1 odpowiedź

0 głosów
odpowiedź 5 listopada 2016 przez Programista3 Gaduła (3,390 p.)
Sprawdzasz czy podana litera jest prawidłowa. Dodaj do tego if-a else (czyli jeśli podana litera nie jest prawidłowa) i w nim zmniejsz liczbę pozostałych prób (licznik).

Co do alertu to za główną pętlą (zamiast alertów w Pokaż odpowiedź i złóż graczowi gratulacje) sprawdź który przypadek zaszedł (pozostałeLitery > 0 czy licznik > 0) i wyświetl odpowiedni alert.
komentarz 5 listopada 2016 przez Adam Klepacz Początkujący (440 p.)
Znaczy ogólnie wiem że tak to powinno wyglądać, Niestety nie wiem jak się za to zabrać w kodzie. Czy mógłbyś mi przekształcić kod?

Nie wiem też jak licznik ma śledzić liczbę błędnyc prób?

Sorry, jestem totalny newbie w programowaniu.
komentarz 8 listopada 2016 przez Programista3 Gaduła (3,390 p.)

          // Utwórz tablicę ze słowami
        var słowa = [
            "javascript",
            "monter",
            "niesamowity",
            "lampart",
            "beznadzieja"
        ];
        // Wybierz losowe słowo
        var słowo = słowa[Math.floor(Math.random() * słowa.length)];
        // Skonfiguruj tablicę z odpowiedziami
        var odpowiedzi = [];
        for (var i = 0; i < słowo.length; i++) 
        {
            odpowiedzi[i] = "_";
        }
        var pozostałeLitery = słowo.length;
        var licznik=10;
        // Główna pętla gry
        while (pozostałeLitery > 0 && licznik > 0) 
        {
         
            // Pokaż graczowi bieżący wynik
            alert(odpowiedzi.join(" "));
            // Wczytaj strzał użytkownika
            var strzał = prompt("Podaj literę lub kliknij Anuluj aby zakończyć grę.");
             
            //Jeśli strzał == duża literaz to 
            // strzał przekształć na to samo ale z małą literą.
 
            if (strzał == strzał.toUpperCase()) 
            {
             alert("Podałeś dużą literę, zostanie ona przekstrzałcona na małą");
             strzał=strzał.toLowerCase();
            }
 
            if (strzał === null) 
            {
                // Wyjdź z głównej pętli gry
                break; 
            } else if (strzał.length !== 1) 
            {
            alert("Proszę podaj tylko jedną literę.");
            } 
            else
            {
                 
                    // Zaktualizuj stan gry na podstawie strzału
                    for (var j = 0; j < słowo.length; j++) 
                    {
                    if (słowo[j] === strzał) {
                     odpowiedzi[j] = strzał;
                      pozostałeLitery--;
                    }
                    else // Jeśli litera się nie zgadza
                    {
                     licznik--; // Zmniejsz liczbę pozostałych prób
                    }
                     
                     
                 
             }
                     
                     
          }
        // Koniec głównej pętli gry
        }
            // Pokaż odpowiedź i złóż graczowi gratulacje

            if(pozostałeLitery <= 0) // Jeśli gracz odgadł wszystkie litery
            {
               alert(odpowiedzi.join(" "));
               alert("Dobra robota! Szukane słowo to " + słowo);
            }
            else if(licznik <= 0) // Jeśli graczowi nie zostało więcej prób
            {

             alert("Koniec gry! Nie masz więcej prób!");                     
             }

Mniej więcej tak powinno wyglądać, kodu nie testowałem.

Nie wiem też jak licznik ma śledzić liczbę błędnyc prób?

Na początku masz licznik = 10 czyli 10 prób, za każdym razem gdy gracz poda złą literę odejmujesz od liczny prób 1. Gdy licznik = 0 oznacza to że graczowi skończyły się próby (możliwe pomyłki).

komentarz 9 listopada 2016 przez Adam Klepacz Początkujący (440 p.)
niestety kod nie działa poprawnie, po podaniu już jednej jakiekolkwiek litery wyśtwietla komunikat o zakończeniu gry ;/

Podobne pytania

+3 głosów
1 odpowiedź 187 wizyt
pytanie zadane 24 maja 2018 w Sprawy forum przez bwl Obywatel (1,530 p.)
0 głosów
1 odpowiedź 191 wizyt
0 głosów
1 odpowiedź 407 wizyt
pytanie zadane 20 sierpnia 2018 w PHP przez okti00 Obywatel (1,300 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...