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

Licznik punktów

Object Storage Arubacloud
+1 głos
1,201 wizyt
pytanie zadane 21 czerwca 2018 w JavaScript przez Frezi2005 Nowicjusz (130 p.)
word = new Array(20);
word[0] = "N Kata Del Gormo";
word[1] = "Darth Revan";
word[2] = "Boba Fett";
word[3] = "Lando Calrissian";
word[4] = "Maz Kanata";
word[5] = "Padme Amidala";
word[6] = "R2 D2";
word[7] = "Gwiazda Śmierci";
word[8] = "Tatooine";
word[9] = "Xhizor";
word[10] = "Vulpter";
word[11] = "Exar Kun";
word[12] = "Yarael Poof";
word[13] = "Korelia";
word[14] = "Felucia";
word[15] = "Dantooine";
word[16] = "Adi Gallia";
word[17] = "C 3PO";
word[18] = "Obi Wan Kenobi";
word[19] = "Kyber";

var rand = word[Math.floor(Math.random() * word.length)];

var haslo = rand;
haslo = haslo.toUpperCase();

var dlugosc = haslo.length;

var haslo1 = "";
var smierci = 0;
var punkty = 0;

var yes = new Audio("yes.wav"); 
var no = new Audio("no.wav");
var win = new Audio("win.wav");
var lose = new Audio("lose.wav");

for(i=0; i<dlugosc; i++)
{
	if(haslo.charAt(i)==" ") haslo1 = haslo1 + " ";
	else haslo1 = haslo1 + "-";
}

function wypisz_haslo ()
{
	document.getElementById("plansza").innerHTML = haslo1;
}

window.onload = start;

var litery = new Array(45);

litery[0] = "A";
litery[1] = "Ą";
litery[2] = "B";
litery[3] = "C";
litery[4] = "Ć";
litery[5] = "D";
litery[6] = "E";
litery[7] = "Ę";
litery[8] = "F";
litery[9] = "G";
litery[10] = "H";
litery[11] = "I";
litery[12] = "J";
litery[13] = "K";
litery[14] = "L";
litery[15] = "Ł";
litery[16] = "M";
litery[17] = "N";
litery[18] = "Ń";
litery[19] = "O";
litery[20] = "Ó";
litery[21] = "P";
litery[22] = "Q";
litery[23] = "R";
litery[24] = "S";
litery[25] = "Ś";
litery[26] = "T";
litery[27] = "U";
litery[28] = "V";
litery[29] = "W";
litery[30] = "X";
litery[31] = "Y";
litery[32] = "Z";
litery[33] = "Ź";
litery[34] = "Ż";
litery[35] = "0";
litery[36] = "1";
litery[37] = "2";
litery[38] = "3";
litery[39] = "4";
litery[40] = "5";
litery[41] = "6";
litery[42] = "7";
litery[43] = "8";
litery[44] = "9";

function start()
{
	var tresc = "";

	for(i=0; i<=44; i++)
	{
		var element = "lit" + i;
		tresc += '<div class="litera" onclick="sprawdz ('+i+')" id="'+element+'">'+litery[i]+'</div>';
		if( (i+1) % 9 == 0) tresc += '<div style="clear:both;"></div>';
	}

	document.getElementById("alfabet").innerHTML = tresc;

	wypisz_haslo ();
}

String.prototype.ustawZnak = function(miejsce, znak)
{
	if(miejsce > this.length-1)
	{
		return this.toString();
	}
	else
	{
		return this.substr(0, miejsce) + znak + this.substr(miejsce+1);
	}
}

function sprawdz(nr)
{

	var trafiona = false;

	for(i=0; i<dlugosc; i++)
	{

		if(haslo.charAt(i) == litery[nr])
		{
			haslo1 = haslo1.ustawZnak(i, litery[nr]);
			trafiona = true;
		}	
	}

	if(trafiona==true)
	{
		yes.play();
		var element = "lit" + nr;
		document.getElementById(element).style.background = "#003300";
		document.getElementById(element).style.cursor = "default";
		document.getElementById(element).style.color = "#00C000";
		document.getElementById(element).style.border = "3px solid #00C000";

		wypisz_haslo();
	}
	else
	{
		no.play();
		var element = "lit" + nr;
		document.getElementById(element).style.background = "#330000";
		document.getElementById(element).style.cursor = "default";
		document.getElementById(element).style.color = "#C00000";
		document.getElementById(element).style.border = "3px solid #C00000";
		document.getElementById(element).setAttribute("onclick",";");

		smierci += 1;
		var obraz = "img/s"+smierci+".jpg";
		document.getElementById('szubienica').innerHTML = '<img src="'+obraz+'" alt=""/>'
	}

	//wygrana
	if(haslo == haslo1)
	{
		win.play();
		document.getElementById('alfabet').innerHTML = "Tak jest! Podano pawidłowe hasło: " +haslo+ '<br/><br/><span class="reset" onclick="location.reload()">JESZCZE RAZ?</span>'+"<br/><br/>Udzieliłeś/aś " +smierci+ " złych odpowiedzi!";
		punkty += 1;
		document.getElementById("punkty").innerHTML = "Punkty: " + punkty;
	}

	//przegrana
	else if(smierci>=9)
	{
		lose.play();
		document.getElementById('alfabet').innerHTML = "Nie udało się! Prawidłowe hasło: " +haslo+ '<br/><br/><span class="death" onclick="location.reload()">JESZCZE RAZ?</span>';
		punkty -= 1;
		document.getElementById("punkty").innerHTML = "Punkty: " + punkty;
	}	
}

Cześć 

Mam problem z licznikiem punktów w grze wisielec z 3 odcinka kursu JavaScript.

Dodałem zmienną punkty i z każdym razem jak gracz zgadnie hasło to dodaje mu się punkt a jak nie zgadnie to odejmuje. Ale niestety jest taki problem, że jak użytkownik zgadnie drugie hasło to punkty się zerują i tak samo jest jak użytkownik nie zgadnie pomożecie pls.

Zmienna z punktami nazywa się punkty a ich dodawanie albo odejmowanie jest na samym dole podczas sprawdzania czy użytkownik zgadł czy nie.

Za wszystkie odpowiedzi z góry dziękujesmiley

komentarz 22 czerwca 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Nie resetujesz hasła.

haslo == haslo1
komentarz 22 czerwca 2018 przez Frezi2005 Nowicjusz (130 p.)
a mam resetowac to haslo jak sprawdza wygraną i przegraną czy gdzie indziej bo jak resetuje haslo w if-ie sprawdzjacym czy nastapila wygrana czy przegrana to dalej mi sie punkty zerują?
komentarz 22 czerwca 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
no chyba raczej po wygranej przegranej ;d
komentarz 22 czerwca 2018 przez Frezi2005 Nowicjusz (130 p.)
tylko, że jak resteje to hasło po wygranej lub pzregranej to dalej mi się punkty zerują :(

2 odpowiedzi

+1 głos
odpowiedź 23 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)

@Frezi2005,

co to za pomysły z tymi tablicami :)

Poczytaj np. o metodzie split i zrób tak:

const chars = 'AĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSŚTUVWXYZŹŻ0123456789';
const charAsArray = chars.split('');

i masz ładnie w tablicy wszystkie pojedyncze litery. zapis Array(45) jest owszem poprawny składniowo, ale w JS praktycznie bezużyteczny, jeśli już to:

const arr = Array.from({length: 45});

co zrobi Ci faktycznie 45 elementów undefined a nie empty jak w Twoim przypadku, ale to i tak mało sensowne rozwiązanie. Osobiście może z parę razy użyłem tej formy z Array.from gdy chciałem na szybko stworzyć tablicę wielu takich samych elementów w połączeniu z Array.prototype.fill ale to były rzeczy do pewnych szybkich testów a nie kod produkcyjny.

document.getElementById(element).style....

takie zapisy pojawiają się wielokrotnie - niepotrzebnie wiele razy pobierasz tę samą referencję DOM. Pobierz to raz i zapisz sobie w jakieś zmiennej.

Skoro do jednego elementu przypisujesz wielokrotnie różne style to pomyślałbym nad jakimś opakowaniem tego:

function setStyle(element, styles = {}) {
    for (let prop in styles) {
        if (styles.hasOwnProperty(prop)) {
            element.style[prop] = styles[prop];
        }
    }
}

i teraz możesz sobie używać:

const el = document.querySelector('#some_id');

// .. i gdzieś w kodzie ustawienie styli:
setStyle(el, {
    color: 'red',
    width: '10px'
});

Trzeba by tylko dodać pewną sztuczkę do automatycznej zamiany z font-size na fontSize aby stworzyć poprawne składniowo nazwy propertek obiektów albo po prostu podawać je w notacji fontSize i się tym nie przejmować - jak wolisz.

Koledzy widziałem, że dali Ci jakieś uwagi do samego problemu, ja tak tylko trochę pobocznie ponieważ często widzę dużo dziwactw w tych kursach o których ludzie tu co chwilę piszą i szkoda, aby uczyć się dziwnych i złych nawyków... (jestem ciekaw skąd autor tych kursów wytrzasnął te Array(45) i czemu ma to służyć... bo na pewno nie stworzy tablicy o stałej długości... żyjemy w JS, nie w Java czy C++...).

0 głosów
odpowiedź 23 czerwca 2018 przez Patryk L Bywalec (2,000 p.)
Wyzeruj licznik przegranych po każdej wygranej i przegranej
komentarz 23 czerwca 2018 przez Frezi2005 Nowicjusz (130 p.)
nie dziala dalej to samo :(

Podobne pytania

0 głosów
2 odpowiedzi 2,273 wizyt
pytanie zadane 15 kwietnia 2016 w C i C++ przez ludfik Nowicjusz (150 p.)
+1 głos
1 odpowiedź 126 wizyt
pytanie zadane 29 czerwca 2023 w JavaScript przez Cypika Początkujący (290 p.)
+1 głos
0 odpowiedzi 259 wizyt
pytanie zadane 19 listopada 2020 w JavaScript przez xano Początkujący (300 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 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!

...