Diskuze: Hra šibenice s diakritikou
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Libor Šimo (libcosenior):30.8.2016 7:52
Toto ti možno pomôže
var diakritika = "aábcčdďeéěfgh iíjklmnňoópqrřsštťuúůvwxyýzž";
function vypis() {
for (var i = 0; i < diakritika.length; i++) {
if (diakritika[i] == " ") {
var p = $('<p></p>').text(i + ". ch");
$('body').append(p);
}
else
var p = $('<p></p>').text(i + ". " + diakritika[i]);
$('body').append(p);
}
}
$(function() {
vypis();
});
Bohužel mi to nepomohlo. Vložil jsem to tam a pod hrou se mi zobrazilo toto:
0. a
1. á
2. b
3. c
4. č
5. d
6. ď
7. e
8. é
9. ě
10. f
11. g
12. h
13. ch
14. i
15. í
16. j
17. k
18. l
19. m
20. n
21. ň
22. o
23. ó
24. p
25. q
26. r
27. ř
28. s
29. š
30. t
31. ť
32. u
33. ú
34. ů
35. v
36. w
37. x
38. y
39. ý
40. z
41. ž
Libor Šimo (libcosenior):30.8.2016 8:46
To nebol kód na vloženie do hry, ale na ilustráciu poľa s celou českou
abecedou bez a s diakritikou.
Manipulácia s jednotlivými prvkami poľa je ti určite jasná.
Možná, že jsem to špatně popsal. Já nepotřebuji vypsat celou abecedu s diakritikou. Já potřebuji vypsat abecedu bez diakritiky, aby při kliknutí na písmeno se například ve slově kráva zobrazilo A i Á, ne pouze A .
Libor Šimo (libcosenior):30.8.2016 11:21
Jedno z možných riešení. Neriešil som písmeno ch, to sa mi už nechcelo.
index.html
<!DOCTYPE html>
<html lang="sk">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/testy.js"></script>
<title>Narodeniny</title>
</head>
<body>
<p id="tajnicka"></p>
<a>hádaj písmeno: </a>
<input id="hadaj" type="text" />
<p id="uhadol"></p>
</body>
</html>
style.css
#hadaj {
width: 50px;
text-align: center;
font-size: 1.5em;
}
#tajnicka {
font-size: 2em;
margin-left: 95px;
}
testy.js
var diakritika = "aábcčdďeéěfgh iíjklmnňoópqrřsštťuúůvwxyýzž";
var pole = [
[0,1], // a, á
[2], // b
[3,4], // c, č
[5,6], // atd....
[7,8,9],
[10],
[11],
[12],
[13],
[14,15],
[16],
[17],
[18],
[19],
[20,21],
[22,23],
[24],
[25],
[26,27],
[28,29],
[30,31],
[32,33,34],
[35],
[36],
[37],
[38,39],
[40,41]
]
var test = ['kráva','zvíře'];
var pom = new Array;
function vypisTajnicky(taj) {
var vysledok = "";
for (var i = 0; i < taj.length; i++) {
vysledok += pom[i];
}
$('#tajnicka').text(vysledok);
$('#hadaj').val("");
}
function naplnenieTajnicky() {
for (var i = 0; i < test[0].length; i++) {
pom[i] = "-";
}
vypisTajnicky(pom);
}
function hadajPismeno(p) {
$('#uhadol').text("");
if (test[0].match(p)) { // ak sa písmeno nachádza v tajničke
var x = diakritika.indexOf(p);
for (var i = 0; i < pole.length; i++) {
for (var j = 0; j < pole[i].length; j++) {
if (pole[i][j] == x) {
var xy = pole[i];
}
}
}
for (var i = 0; i < xy.length; i++) {
for (var j = 0; j < test[0].length; j++){
if (test[0][j] == diakritika[xy[i]]) {
pom[j] = diakritika[xy[i]];
}
else {
if ([0][j] == p)
pom[j] = p;
}
}
}
vypisTajnicky(pom);
}
else {
$('#uhadol').text("Neuhádol!");
$('#hadaj').val("");
}
}
$(function() {
$('#hadaj').focus();
naplnenieTajnicky();
$('#hadaj').change(function() {
hadajPismeno($(this).val());
});
});
+20 Zkušeností
+2,50 Kč
Díky, CH nepotřebuji. Stačí, aby hráč zadal C a H.
Pokoušel jsem se tvůj kód spojit s tím mým, ale šibenice mi přestala fungovat. Nevíš proč?
Kód zde:
var diakritika = "aábcčdďeéěfgh iíjklmnňoópqrřsštťuúůvwxyýzž";
var pole = [
[0,1], // a, á
[2], // b
[3,4], // c, č
[5,6], // atd....
[7,8,9],
[10],
[11],
[12],
[13],
[14,15],
[16],
[17],
[18],
[19],
[20,21],
[22,23],
[24],
[25],
[26,27],
[28,29],
[30,31],
[32,33,34],
[35],
[36],
[37],
[38,39],
[40,41]
]
var pom = new Array;
var databaze = ['kráva','zvíře'];
var vysledek = [];
var abeceda = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
var uhodnute = [];
var pokusu = 10, index, i, j, k, l, m = 0, n, o, konec = false, tajenka, napoveda, vyhry = 0, prohry = 0;
var cervena = "#ff0000", zelena = "#00ff00";
var prednacist = [];
for(o=0;o<=pokusu;o++) {
prednacist[o] = new Image();
prednacist[o].src = "images/sibenice"+o+".jpg";
}
function nova_tajenka() {
index = 2*(Math.floor(Math.random()*(databaze.length/2)));
for(n = 0; n<uhodnute.length; n++) {
if(uhodnute[n]==index) {
index = 2*(Math.floor(Math.random()*(databaze.length/2)));
n = -1;
}
}
tajenka = databaze[index].split("");
napoveda = databaze[index+1];
vysledek = [];
for(k = 0; k<tajenka.length; k++) {
vysledek[k] = "_";
}
obnovit();
}
function pismena() {
$("#pismena").html("<div class=\"radek\">");
for(l = 0; l<abeceda.length; l++){
$("#pismena").html($("#pismena").html()+"<a href=\""+abeceda[l]+"\">"+abeceda[l].toUpperCase()+"</a>");
if(l==(abeceda.length/2)-1) {
$("#pismena").html($("#pismena").html()+"</div><div class=\"radek\">");
}
}
$("#pismena").html($("#pismena").html()+"</div>");
$("#pismena a").click(function(){
if(($(this).attr("class")!="clicked")&&(konec==false)) {
hra($(this).attr("href"));
}
return false;
});
}
function reset() {
i = 0;
nova_tajenka();
pismena();
$("#status").html("");
$("#sibenice").css({"background-image":"url(images/sibenice"+i+".jpg)"});
}
function obnovit() {
$("#policko").html(vysledek.join(""));
$("#help").html(napoveda);
}
function hra(pismeno) {
spravne_pismeno = false;
for (k = 0; k < tajenka.length; k++){
if (tajenka[k].match(pismeno)) {
var x = diakritika.indexOf(pismeno);
for (i = 0; i < pole.length; i++) {
for (j = 0; j < pole[i].length; j++) {
if (pole[i][j] == x) {
var xy = pole[i];
}
}
}
for (i = 0; i < xy.length; i++) {
if (tajenka[k] == diakritika[xy[i]]) {
pom[k] = diakritika[xy[i]];
}
else {
if (tajenka[k] == pismeno)
pom[k] = pismeno;
}
}
spravne_pismeno = true;
$("#pismena a[href$="+pismeno+"]").css({"background-color":zelena});
}
}
if(spravne_pismeno==false) {
$("#pismena a[href$="+pismeno+"]").css({"background-color":cervena});
i++;
$("#sibenice").css({"background-image":"url(images/sibenice"+i+".jpg)"});
}
obnovit();
$("#pismena a[href$="+pismeno+"]").attr("class", "clicked");
if(vysledek.join("")==tajenka.join("")) {
$("#status").css({"color":zelena});
$("#status").html("Gratuluji, VÝHRA!");
konec = true;
vyhry++;
$("#vyhry").html(vyhry);
uhodnute[m] = index;
m++;
if(uhodnute.length==(databaze.length)/2) {
uhodnute = [];
m = 0;
}
}
if(i==pokusu) {
$("#status").css({"color":cervena});
$("#status").html("Už nemáš více pokusů, PROHRA!");
konec = true;
prohry++;
$("#prohry").html(prohry);
}
if(konec) {
$("#ovladani input:submit").removeAttr("disabled");
$("#ovladani input").focus();
}
}
$(document).ready(function(){
$("a[href=about]").click(function(){
alert("Hra šibenice\n"
+"Počet slov v databázi: " +(databaze.length/2) +"\n"
+"Jazyk: JavaScript\n"
+"Autor: David Moškoř\n"
+"© 2016");
return false;
});
$("a[href=help]").click(function(){
alert("Známá hra šibenice (hangman)\n\n"
+"1) Cílem hry je uhodnout celé slovo podle nápovědy.\n"
+"2) Počet podržítek značí, kolik je ve slově písmen.\n"
+"3) Písmena pište na klávesnici nebo na ně klikejte.\n"
+"4) Správné písmeno bude označeno zeleně špatné červeně.\n"
+"5) Každé písmeno je možné použít jen jednou.\n"
+"6) Slovo musíte uhodnout dřív než budete oběšen :-)\n\n"
+"Přeji příjemnou zábavu :-)");
return false;
});
$("#vyhry").html(vyhry);
$("#prohry").html(prohry);
reset();
$("#ovladani").submit(function(){
konec = false;
reset();
$("#ovladani input:submit").attr("disabled", "disabled");
return false;
});
$(document).keydown(function(klavesa) {
if(konec==false) {
if(((klavesa.keyCode-65)>=0)&&((klavesa.keyCode-65)<abeceda.length)) {
pismeno_klavesnice = abeceda[klavesa.keyCode-65];
if($("#pismena a[href$="+pismeno_klavesnice+"]").attr("class")!="clicked") {
hra(pismeno_klavesnice);
}
}
}
});
});
window.onbeforeunload = function(){
if(konec==false) {
return "Máte rozehranou hru opravdu chcete odejít?";
}
}
Libor Šimo (libcosenior):30.8.2016 13:02
Môj kód je iba ukážka, ako sa to dá.
Upraviť si svoju hru už musíš sám, ak môjmu kódu rozumieš.
Ak ti kód nefunguje, stlač F12 a v konzole by si mal mať vypísané
prečo.
Už mi to funguje. Jen jsem tam potřeboval dopsat vysledek[k]=pismeno;. Ale diakritika bohužel ne. Když kliknu na a tak nic. To je zvláštní protože by fungovat měla. Mám PSPad editor a konzole mi nic nepíše.
Ja tiež na kódenie používam PSPad. Ale keď si to otvorím v prehliadačí (chrome), potom F12 otvorí spodné okno, kde je okrem iného záložka console.
Ak chceš, aby som ti to pozrel poriadne, zbaľ celú zložku s html, css aj js do zip-u a pošli mi to na libcosenior@gmail.com, aby som to mohol otestovať.
Poslal jsem
A teď už jo? Posílal jsem to 14:37 na email: libcosenior@gmail.com
Už to pozriem len doma, za chviľku idem z práce.
Super, měl jsem tam malou chybu. Už jsem to vyřešil takhle:
var diakritika = "aábcčdďeéěfgh iíjklmnňoópqrřsštťuúůvwxyýzž";
var pole = [
[0,1], // a, á
[2], // b
[3,4], // c, č
[5,6], // atd....
[7,8,9],
[10],
[11],
[12],
[13],
[14,15],
[16],
[17],
[18],
[19],
[20,21],
[22,23],
[24],
[25],
[26,27],
[28,29],
[30,31],
[32,33,34],
[35],
[36],
[37],
[38,39],
[40,41]
]
var pom = new Array;
var databaze = ['kráva','zvíře', 'cestování','moje záliba'];
var vysledek = [];
var abeceda = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
var uhodnute = [];
var pokusu = 10, index, i, j, k, l, m = 0, n, o, konec = false, tajenka, spravna_tajenka, napoveda, vyhry = 0, prohry = 0;
var cervena = "#ff0000", zelena = "#00ff00";
var prednacist = [];
for(o=0;o<=pokusu;o++) {
prednacist[o] = new Image();
prednacist[o].src = "images/sibenice"+o+".jpg";
}
function nova_tajenka() {
index = 2*(Math.floor(Math.random()*(databaze.length/2)));
for(n = 0; n<uhodnute.length; n++) {
if(uhodnute[n]==index) {
index = 2*(Math.floor(Math.random()*(databaze.length/2)));
n = -1;
}
}
spravna_tajenka = databaze[index];
tajenka = databaze[index].split("");
napoveda = databaze[index+1];
vysledek = [];
for(k = 0; k<tajenka.length; k++) {
vysledek[k] = "_";
}
obnovit();
}
function pismena() {
$("#pismena").html("<div class=\"radek\">");
for(l = 0; l<abeceda.length; l++){
$("#pismena").html($("#pismena").html()+"<a href=\""+abeceda[l]+"\">"+abeceda[l].toUpperCase()+"</a>");
if(l==(abeceda.length/2)-1) {
$("#pismena").html($("#pismena").html()+"</div><div class=\"radek\">");
}
}
$("#pismena").html($("#pismena").html()+"</div>");
$("#pismena a").click(function(){
if(($(this).attr("class")!="clicked")&&(konec==false)) {
hra($(this).attr("href"));
}
return false;
});
}
function reset() {
i = 0;
nova_tajenka();
pismena();
$("#policko").css({"color":"white"});
$("#status").html("");
$("#sibenice").css({"background-image":"url(images/sibenice"+i+".jpg)"});
}
function obnovit() {
$("#policko").html(vysledek.join(""));
$("#help").html(napoveda);
}
function hra(pismeno) {
spravne_pismeno = false;
for (m = 0; m < databaze.length; m++){
for (k = 0; k < tajenka.length; k++){
if (databaze[m].match(pismeno)) {
var x = diakritika.indexOf(pismeno);
for (i = 0; i < pole.length; i++) {
for (j = 0; j < pole[i].length; j++) {
if (pole[i][j] == x) {
var xy = pole[i];
}
}
}
for (i = 0; i < xy.length; i++) {
if (tajenka[k] == diakritika[xy[i]]) {
vysledek[k] = diakritika[xy[i]];
}
else {
if (tajenka[k] == pismeno)
vysledek[k] = pismeno;
}
}
spravne_pismeno = true;
$("#pismena a[href$="+pismeno+"]").css({"background-color":zelena});
}
}
}
if(spravne_pismeno==false) {
$("#pismena a[href$="+pismeno+"]").css({"background-color":cervena});
i++;
$("#sibenice").css({"background-image":"url(images/sibenice"+i+".jpg)"});
}
obnovit();
$("#pismena a[href$="+pismeno+"]").attr("class", "clicked");
if(vysledek.join("")==tajenka.join("")) {
$("#status").css({"color":zelena});
$("#status").html("Gratuluji, VÝHRA!");
konec = true;
vyhry++;
$("#vyhry").html(vyhry);
uhodnute[m] = index;
m++;
if(uhodnute.length==(databaze.length)/2) {
uhodnute = [];
m = 0;
}
}
if(i==pokusu) {
$("#status").css({"color":cervena});
$("#status").html("Už nemáš více pokusů, PROHRA!");
$("#policko").css({"color":cervena});
$("#policko").html(spravna_tajenka);
konec = true;
prohry++;
$("#prohry").html(prohry);
}
if(konec) {
$("#ovladani input:submit").removeAttr("disabled");
$("#ovladani input").focus();
}
}
$(document).ready(function(){
$("a[href=about]").click(function(){
alert("Hra šibenice\n"
+"Počet slov v databázi: " +(databaze.length/2) +"\n"
+"Jazyk: JavaScript\n"
+"Autor: David Moškoř\n"
+"© 2016");
return false;
});
$("a[href=help]").click(function(){
alert("Známá hra šibenice (hangman)\n\n"
+"1) Cílem hry je uhodnout celé slovo podle nápovědy.\n"
+"2) Počet podržítek značí, kolik je ve slově písmen.\n"
+"3) Písmena pište na klávesnici nebo na ně klikejte.\n"
+"4) Správné písmeno bude označeno zeleně špatné červeně.\n"
+"5) Každé písmeno je možné použít jen jednou.\n"
+"6) Slovo musíte uhodnout dřív než budete oběšen :-)\n\n"
+"Přeji příjemnou zábavu :-)");
return false;
});
$("#vyhry").html(vyhry);
$("#prohry").html(prohry);
reset();
$("#ovladani").submit(function(){
konec = false;
reset();
$("#ovladani input:submit").attr("disabled", "disabled");
return false;
});
$(document).keydown(function(klavesa) {
if(konec==false) {
if(((klavesa.keyCode-65)>=0)&&((klavesa.keyCode-65)<abeceda.length)) {
pismeno_klavesnice = abeceda[klavesa.keyCode-65];
if($("#pismena a[href$="+pismeno_klavesnice+"]").attr("class")!="clicked") {
hra(pismeno_klavesnice);
}
}
}
});
});
window.onbeforeunload = function(){
if(konec==false) {
return "Máte rozehranou hru opravdu chcete odejít?";
}
}
Zobrazeno 18 zpráv z 18.