Mam do wykonania skrypt w JS, który będzie działał w nastepujący sposób:
1.Utworzę na stronie przyciski/pola wypełnione różnymi obrazkami (konkretnie karty jak do gry), każdy z nich będzie miał inną wartość przekazywaną dalej
funkcja akceptująca klikanie na wartości od najmniejszej do największej
W jaki sposób najlepiej to wykonać ? Nie chodzi mi o podanie kodu, tylko sposobu, żeby to i tak przekazywać, tu użyć takeij pętli. chodzi mi o to, żebym wiedział czego konkretniej szukać i móc sie tego uczyć.
zmienna globalna przechowująca ostatnio klikniętą wartość
zdarzenie onClick na kartach (każda karta wywołuje funkcję z inną wartością, zależną od karty)
Funkcja obsługująca zdarzenie sprawdzi, czy ostatnio klinięta wartość jest równa obecnie klikniętej minus jeden i jeśli tak, zaktualizuje globalną zmienną. Jeśli nie (jak mniemam) zakończy test. Kod zmieści się w kilku (dosłownie) liniach.
mam tablicę z obrazkami i chce im przypisywać wartość za pomocą switch z argumentem indeksem w tablicy ( w ten sposób, że na przykład indeks numer 1, 14, 27, 40 to karta 2. w jaki jednak sposób pobrać numer indeksu ?
pokazuje kodzik:
var karty = new Array (
'',
.
.
.
''
);
var i=0;
while (i<3) {
var losowa = Math.floor(Math.random() * 51 + 1);
document.write (karty[losowa].);
i++;
}
var karta=0;
switch (karty['']) { //tu jest właśnie problem
case 1, 14, 27, 40 :
karta= 2;
}
[/code]
kurcze, problemów ciąg dalszy, nadal z tym porównywaniem kart.
ma być, tak, że jesli klikam na nie najmniejszą kartę to wyskakuje mi komunikat wybierz najmnijsza. wartosc aktualnie mam przypisywaną do zmiennej karta i jest dobrze. ale jak porownac do tych pozostalych ? bo w tablicy karty[] to mam numery plików, a nie ich “wartości”. to co dałeś [alex] wygląda na naprawdę ciekawe, ale jakos nie moge się z tym uporac.
function KlikNaKarte(img,kliknieta){
for (var i=0;i((karty[i]-1)%13)) nr=i;
var wartosc=0;
wartosc=(kliknieta - 1) % 13 + 2;
alert ("numer obrazka: "+kliknieta+"wartosc: "+wartosc+"najmniejsza to: "+karta[nr]+"karta: "+karta);
if (karta[nr] != wartosc){
alert("wybierz najmniejszą kartę");
}
else {
$('karteczka'+kliknieta).fade(); //return false; //efekt zaniknięcia
delete karta[nr];
//alert("karta: "+karta);
}
}
dobra, pomijajac kwiestie wyliczenia wartości kart (z czym sobie poradze) to nie moge osiagnac efektu, aby po kliknieciu na najmniejszą karte i kliknieciu na ktoras z pozostalych kart wyliczalo mi mniejsza z tych dwóch pozostalych.
update: heh, poradziłem sobie z tym odnawianie, a z obliczaniem wartości kart to tylko as jest problematyczny
usuwa wartość dla tego indeksu, ale pozostawia puste pole nawet jesli ustawie zeby pozniej zapisalo to jakas maksymalnie duza liczba to i tak uznaje, że jest to najmniejsza
siemanko, heeh, w końcu poradziłem sobie z tym wszystkim, teraz elegancko działa zrezygnowałem z wyszukiwania najmniejszych wartości na rzecz posortowania tablicy karta z wartościami od najmniejszej i banalnie porównuję to z obecnie klikniętą kartą
var f=0;
//Akcja po kliknięciu
function KlikNaKarte(img,kliknieta){
var wartosc=(kliknieta - 1) % 13 + 1;
if (wartosc <=karta[f]){
$('karteczka'+kliknieta).fade();
f++
}
else {
alert("Wybierz najmniejszą kartę");
}
}