Ten regularni vyraz maze vse, krome cisel. Zalezi na tom, jak mas ty soubory pojmenovane, pak by to mohlo fungovat (cokoliv01.jpg, cokoliv01A.jpg => 01, 01). Jeste jednodussi, nez jsem navrhoval :)
Příspěvky odeslané z IP adresy 2001:718:2601:258:8cd1:96...–
Tak, muj kod vypada nekdy podobne :) Taky si zacinam zvykat na jakysi poradek, strukturu. Hodne k tomu pomahaji class, ktere si obcas vygoogluji, kdyz hledam nejaky problem. V ramci class resi jeden ukol. Ono to pak zvysuje prehlednost a logiku.
Cili, nemichat misto, kde resim eventy, polohu a questy fo jedne funkce. Proto jsem ten kod napsal. Neni to mysleno jako kritika. Tam pak vim, ze veci tykajici se postavy se resi pres promennou postava. Ze timer, ktery resi quest, bude u questu a ne jako jakysi globalni time. mozna bych tam udelal jeste jednu zmenu :)
postava.quest = [];
postava.quest[0] = false; // mysleno tak, ze quest jeste nemam splneny
postava.questOpened = null
postava.questTime = null;
---
postava.questy = [];
postava.questy[0] = false; // false nebo null, typeof 'undefined' (v js)
postava.quest = null; // nebo {id:123, time: 456};
Cili, sleduji, ktere questy ma hotove posle toho, zda tam ma true. A pokud ma guest!=null. U hry jako Wow pak muzes mit nekolik questu najednou s ruznymi parametry (neprijemne ve Wow jsou s omezenym casem). Daily questy, ktere je mozne udelat jednou za den, treba.
Ja bych si to napsal nejak takto, kdyby slo o javascript. Prijde mi, ze celkem michas dokupy samotny pohyb, animace s questy, jako je hlidkovani a pod.
postava = {};
postava.name = "juraj175"
postava.speed = 1
postava.pozice = {x:0, y:0};
postava.quest = [];
postava.quest[0] = false; // mysleno tak, ze quest jeste nemam splneny
postava.questOpened = null
postava.questTime = null;
function nextStep()
{
// questy
if (postava.questTime>0)
{
postava.questTime--;
if (postava.questTime==0)
{questClose(postava, postava.questOpened);}
return;
}
// pohyb
presunXY();
// koize s objekty na mape
if (postava.pozice.x=objekt[0].pozice.x && postava.pozice.y=objekt[0].pozice.y && postava.quest[0]=false)
{questOpen(postava,0);}
}
function questOpen(postava,id)
{
if (id == 0)
{
postava.questOpened = id;
postava.questTime = 5;
}
}
function questClose(postava,id)
{
postava.questOpened = null;
postava.questTime = 0;
if (id == 0)
{
postava.odmena++
}
}
setTimeout(nextStep,300); // nastaveni casovace v js, opakuje kazdych 300ms funkci nextStep
'moc nechápu jak to přesně funguje'
Pri otoceni prvni karticky ulozi src do promenne imgopened.
imgopened = $("#"+id+" img").attr("src"); // <img src="img/autobus.png"/>
Pri otoceni druhe karticky ulozi src do promenne currentopened.
currentopened = $("#"+id+" img").attr("src"); // <img src="img/autobusA.png"/>
Shodu pak porovnava na radku
if (imgopened != currentopened) {
Cili, to porovnavani bys musel opravit. Asi nejjednodussi odstranit pripony '.jpg' a pridat 'A' a podminku duplikovat. Abys dostal neco takoveho:
x==y+'A' || x+'A'==y // pro tvuj pripad v negaci...
!(x==y+'A' || x+'A'==y)
x = odstranPriponu(imgopened); // 'img/autobus.png' => 'img/autobus'
y = odstranPriponu(currentopened); // 'img/autobusA.png' => 'img/autobusA'
if (!(x==y+'A' || x+'A'==y)) {
// 'img/autobus'=='img/autobusA'+'A' => 'img/autobus'=='img/autobusAA' => false
// 'img/autobus'+'A'=='img/autobusA' => 'img/autobusA'=='img/autobusA' => true
// false || true => true
// !true => false
// Puvodni podminka byla take v negaci
imgopened != currentopened // totez jako
!(imgopened == currentopened)
// img/01.jpg==img/01.jpg => true
// img/autobus.png==img/autobusA.png => false
'někdo hodit řešení'
Takhle bohuzel forko nefunguje. Je jasne videt nulova snaha, nulovy zajem ukol sam vyresit. To odrazuje lidi od jakekoliv pomoci cizi osobe. Navic zadarmo a navic skolni uloha pro ZS. Teda, jestli jsi uz postrehl, ze se zacina informatika ucit na ZS :)