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

Gra w wisielca z 3 odcinka kursu JS

Object Storage Arubacloud
0 głosów
243 wizyt
pytanie zadane 14 stycznia 2017 w JavaScript przez kingkushlee Gaduła (3,960 p.)

Witam, oto mój system losowania pytań z kursu javascript odcinka 3. Mógłby ktoś zobaczyć co mogłem zrobić lepiej, co jest nipotrzebne? Oto kod:

	<?php
	
		require_once "connect.php";
		mysqli_report(MYSQLI_REPORT_STRICT);		
		
		try
		{
			$polaczenie = new mysqli($host, $user, $password, $db_name);
			if($polaczenie->connect_errno!=0)
			{
				throw new Exception($polaczenie->connect_errno);
			}	
		}
		catch(Exception $e)
		{
			echo '<span style="color: red;">Przepraszamy, problem z MySQL!</span>';
		}
		if($polaczenie->connect_errno==0)
		{
			//Poprawne kodowanie polskich ogonków
			$zapytanie1 = "SET CHARSET utf8";
			$zapytanie2 = "SET NAMES `utf8` COLLATE `utf8_polish_ci`";			
			$rezultat1 = @$polaczenie->query($zapytanie1);
			$rezultat2 = @$polaczenie->query($zapytanie2);
			//Właściwe zapytanie
			$query = "SELECT * FROM hasla";
			if($rezultat = $polaczenie->query($query))
			{
				//Tablica asocjacyjna oraz ilość rekordów
				$rows = $rezultat->num_rows;
				$wiersz = $rezultat->fetch_assoc();
				//Pobranie wartości z bazy
				$id = $wiersz['id'];
				//nowe hasło
				$losowaliczba= rand(1,$rows);
				$newquery = "SELECT * FROM hasla WHERE id='$losowaliczba'";
				//nowe zapytanie
				if($nowyrezultat = $polaczenie->query($newquery))
				{
					$newrows = $nowyrezultat->num_rows;
					$nowywiersz = $nowyrezultat->fetch_assoc();
					//nowe dane
					$tohaslo = $nowywiersz['haslo'];
					$takategoria = $nowywiersz['kategoria'];
					$polaczenie->close();
				}
				else
				{
					echo '<span style="color: red;">Przepraszamy, problem z MySQL!</span>';
				}					
			}	
			else
			{
				echo '<span style="color: red;">Przepraszamy, problem z MySQL!</span>';
			}	
		}
		else
		{
			echo '<span style="color: red;">Przepraszamy, problem z MySQL!</span>';
		}	
	?>
	var haslo = "<?= $tohaslo?>";
		haslo = haslo.toUpperCase();
		
		var dlugosc = haslo.length;
		var ile_skuch = 0;
		
		var yes = new Audio("snd/yes.wav");
		var no = new Audio("snd/no.wav");
		var lose = new Audio("snd/lose.wav");
		var win = new Audio("snd/win.wav");
		
		var haslo1 = "";
		
		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(35);
		
		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] = "Ż";
	
		function start()
		{
			
			var tresc_diva = "";
			
			for (i = 0; i <= 34; i++)
			{
				var element = "lit"+i;
				tresc_diva = tresc_diva + '<div class="litera" id="'+element+'" onclick="sprawdz('+i+')">'+litery[i]+'</div>';
				if ( (i+1) % 7 == 0) tresc_diva = tresc_diva + '<div style="clear: both;"></div>';
			}	
			
			wypisz_haslo();
			
			document.getElementById("alfabet").innerHTML = tresc_diva;
		}
		
		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;
				}	
			}	
			
			wypisz_haslo();
			if(trafiona==true)
			{
				yes.play();
				var element = "lit"+nr;
				document.getElementById(element).style.background = "#003300";
				document.getElementById(element).style.color = "#00c000";
				document.getElementById(element).style.border = "3px solid #00c000";
				document.getElementById(element).style.cursor = "default";
				
				wypisz_haslo();
			}	
			else
			{
				no.play();
				var element = "lit" + nr;
				document.getElementById(element).style.background = "#330000";
				document.getElementById(element).style.color = "#C00000";
				document.getElementById(element).style.border = "3px solid #C00000";
				document.getElementById(element).style.cursor = "default";		
				document.getElementById(element).setAttribute("onclick",";");		
				
				//skucha
				ile_skuch++;
				var obraz = "img/s"+ ile_skuch + ".jpg";
				document.getElementById("szubienica").innerHTML = '<img src="'+obraz+'" alt="" />';
			}
			if(haslo == haslo1) 
			{
				win.play();
				document.getElementById("alfabet").innerHTML = "Tak jest! Podano prawidłowe hasło! "+haslo+'<br /><br /><div class="reset" onclick="location.reload()">Jeszcze raz?</div>';				
			}
			if(ile_skuch >= 9)
				document.getElementById("alfabet").innerHTML = "Przegrałeś! Poprawne hasło to: "+haslo+'<br /><br /><div class="reset2" onclick="location.reload()">Jeszcze raz?</div>';
		}
		

 

komentarz 14 stycznia 2017 przez xmentor Nałogowiec (49,520 p.)
var haslo = "<?= $tohaslo?>";

sad

komentarz 14 stycznia 2017 przez kingkushlee Gaduła (3,960 p.)
Dlaczego to rozwiązanie Ci się nie podoba? Mógłbyś mi powiedzieć, co jest lepsze?
1
komentarz 14 stycznia 2017 przez xmentor Nałogowiec (49,520 p.)
edycja 14 stycznia 2017 przez xmentor
Bo tak się nie powinno robić. Możesz tą zmienną wyświetlić w jakimś ukrytym divie lub inpucie[type=hidden] i JS-em pobrać wartość.
komentarz 14 stycznia 2017 przez kingkushlee Gaduła (3,960 p.)
Dziękuje
komentarz 14 stycznia 2017 przez niezalogowany

Jeszcze sposób w jaki tworzysz alfabet... Wiesz, że możesz zrobić po prostu długi string?

var alphabet = "AĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSŚTUVWXYZŹŻ"

alphabet[0]; // = 'A'

 

komentarz 15 stycznia 2017 przez kingkushlee Gaduła (3,960 p.)
edycja 15 stycznia 2017 przez kingkushlee

Czyli mógłbym zrobić to tak?:

var alphabet = "AĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSŚTUVWXYZŹŻ";

alphabet.charAt(0) // = 'A'

 

komentarz 15 stycznia 2017 przez niezalogowany
Tak też możesz, ale działa też pobieranie znaku używając [ ]
komentarz 16 stycznia 2017 przez Szymon Polaczy Obywatel (1,660 p.)
Słuchając dokładnie odc.3 kursu JS wiedziałbyś że pan Mirosław powiedział że używanie [] jest niebezpieczne w użyciu i w nie każdej przeglądarce będzie to dobrze działać
2
komentarz 16 stycznia 2017 przez Czort Nałogowiec (32,500 p.)
No tak bo ECMA5 nie jest wspierane przez niektóre przeglądarki... z 2010 roku.
komentarz 18 stycznia 2017 przez Szymon Polaczy Obywatel (1,660 p.)
Aha. Ale przezorny zawsze ubezpieczony
komentarz 18 stycznia 2017 przez niezalogowany
Idąc tym torem rozumowania powinieneś pisać strony zgodnie ze specyfikacją sprzed 7 lat ;)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 279 wizyt
pytanie zadane 29 października 2017 w JavaScript przez nebel Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 244 wizyt
pytanie zadane 21 stycznia 2022 w HTML i CSS przez Maciej111 Nowicjusz (120 p.)
0 głosów
4 odpowiedzi 394 wizyt

92,555 zapytań

141,402 odpowiedzi

319,541 komentarzy

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

...