WebHU - Programozási kérdések és válaszok

Királynő mozgás a sakkjátszmában (Javascript)

Javascriptet tanulok és projektfeladatként sakkjátékot készítek benne. Kódoltam a bástya, gyalog, lovag és püspök mozgásának logikáját. Most elakadtam a Queen mozgalomban. A királynő lépése alapvetően Bishop és Rook mozgáslogikáját foglalja magában.

Azt szeretném tenni, amikor a királynőt elköltöztetik, ellenőrizni kell, hogy a fájlja megegyezik a célcsempével. Ha ez ugyanaz, hívja meg a Rook kódmozgási logikáját, vagy hívja meg Bishopét. Például, ha a királynő a d4-re (forráslapkára) kerül, és vagy átkerül a d8-ba vagy a g4-be (céllapka). Ekkor ebben az esetben meg kell hívni a Bástya mozgás függvényét.

Az összes darab objektumban van egy mozgatás(). Tehát ebben az esetben szeretném meghívni a Move() of Rook-ot a Queen's move()-ból. itt ragadtam. Szívesen ajánlja. A megfelelő kód beillesztésre kerül alább. Hasonlóképpen készítettem Rookot és más tárgyakat. Most ebből a Queen() mozdulatából () szeretném meghívni a Rook/Bishop mozdulatát.

        chess.QueenFactory =
            {
                instance: function(color, type)
                {
                    var Queen =
                            {
                                move: function(color, type)
                                {
                                    alert("In Queen");
                                }
                            };
                    createPiece.call(Queen, color, type);
                    return Queen;
                }
            };

Püspöki költözési funkcióm így van elhelyezve

chess.BishopFactory = 
{
    instance: function(color, type) 
    {
        var Bishop =
        {
            move: function(source, destn) 
            { //Code here
            }
        }
    }
}

Ezt a függvényt szeretném meghívni a Queen's move()-ból. Hogyan csináljam?

A teljes kódot az alábbi html linken találja.

https://github.com/varunpaprunia/ChessInJavascript/blob/master/ChessBoard_Tags_1.html


  • Helyezze be a megfelelő kódot a kérdésébe. 30.06.2013
  • x = 'abcdefgh'.indexOf(destination_tile[0]), y = parseInt(destination_tile[1]) - 1; legyen a, b ugyanaz, mint source_tile. A királynő úgy mozoghat, hogy a + b === x + y (bal alsó, jobb felső), a - x === b - y (bal felső, jobb alsó), a === x (fentről lefelé) vagy b === y (balról jobbra). 30.06.2013

Válaszok:


1

Végezze el a következő teszteket, hogy eldöntse, melyik módszert használja

// source tile
var a = 'abcdefgh'.indexOf(source_tile[0]), // 0 to 7
    b = parseInt(source_tile[1]) - 1;       // 0 to 7
// destination tile
var x = 'abcdefgh'.indexOf(dest_tile[0]),   // 0 to 7
    y = parseInt(dest_tile[1]) - 1;         // 0 to 7
// test to see how it's moving
if (a + b === x + y || a - x === b - y) {   // bLeft to tRight || tLeft to bRight
    // queen is moving like a bishop
} else if ( a === x || b === y) {           // top to bottom || left to right
    // queen is moving like a rook
} else {                                    // impossible move
    // invalid move
}

A megjegyzésekből láthatod, hogy melyik utókezelést hova kell hívni. Ha a === x && b === y, akkor source_tile === dest_tile, ami nem számít a darab mozgatásának. Ezek nem ellenőrzik, hogy az utak blokkolva vannak-e, ehhez több logika kellene.

30.06.2013

2

Szerintem ez menne:

function bishopFn(source, destn){ /* bishop move */}
function rookFn(source, destn){ /* rook move */ }

majd rendeld hozzá őket a püspök és a bástya mozgatható objektumokhoz, és a királynőnél csak bármelyiket kell hívnod attól függően, hogy milyen állapotban van.

move: function(source, destn){
    /* condition construction can be done here */
    if (/*condition*/) bishopFn(source, destn);
    else rookFn(source, destn);
}
30.06.2013
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..