Beispiel #1
0
    public void SetMasu(int x, int y, string name)
    {
        if (x > 9 || y > 9 || x < 1 || y < 1)
        {
            return;
        }
        string[] names = name.Split(new char[] { '_' });
        MasuInit masu  = new MasuInit();

        masu.x        = x;
        masu.y        = y;
        masu.komaName = name;
        masu.exists   = true;
        if (int.Parse(names[1]) >= 15)
        {
            masu.selfFlag  = false;
            masu.enemyFlag = true;
        }
        else
        {
            masu.selfFlag  = true;
            masu.enemyFlag = false;
        }
        komas [x + "-" + y] = masu;
    }
Beispiel #2
0
    /**
     * P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
     *      P2 * -HI *  *  *  *  * -KA *
     *      P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
     *      P4 *  *  *  *  *  *  *  *  *
     *      P5 *  *  *  *  *  *  *  *  *
     *      P6 *  *  *  *  *  *  *  *  *
     *      P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
     *      P8 * +KA *  *  *  *  * +HI *
     *      P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
     */
    public string GetMasuStr()
    {
        string line = "";

        for (int y = 1; y <= 9; y++)
        {
            line += "P" + y;
            for (int x = 9; x >= 1; x--)
            {
                MasuInit masu = komas [x + "-" + y];
                if (masu.selfFlag)
                {
                    line += "+";
                }
                else if (masu.enemyFlag)
                {
                    line += "-";
                }
                else
                {
                    line += " ";
                }
                if (masu.komaName != "")
                {
                    line += KomaConst.GetKomaName(masu.komaName).Substring(0, 2).ToUpper() + "";
                }
                else
                {
                    line += "* ";
                }
            }
            line += "\n";
        }
        return(line);
    }
    public void SetKoma(int x, int y, string objName)
    {
        string[] names  = objName.Split(new char[] { '_' });
        string   name   = "yose5p_" + names[1];
        MasuInit detail = new MasuInit();

        detail.x        = x;
        detail.y        = y;
        detail.komaName = name;
        detail.objName  = objName;
        detail.exists   = true;
        if (int.Parse(names[4]) == 0)
        {
            detail.selfFlag  = true;
            detail.enemyFlag = false;

            /*
             * detail.selfFlag = false;
             * detail.enemyFlag = true;
             */
        }
        else
        {
            detail.selfFlag  = false;
            detail.enemyFlag = true;

            /*
             * detail.selfFlag = true;
             * detail.enemyFlag = false;
             */
        }
    }
Beispiel #4
0
    public List <KomaMove> GetMotigomaMoves(KomaScript sc)
    {
        List <KomaMove> moves   = new List <KomaMove> ();
        MasuManager     manager = MasuManager.Instance;

        for (int x = 1; x <= 9; x++)
        {
            for (int y = 1; y <= 9; y++)
            {
                MasuInit masu = manager.GetMasu(x, y);
                // 敵味方の駒がいないとき
                if (!masu.exists)
                {
                    KomaMove move = new KomaMove();
                    move.x = x;
                    move.y = y;
                    moves.Add(move);
                }
                else
                {
                    continue;
                }
            }
        }
        return(moves);
    }
Beispiel #5
0
    public List <KomaMove> GetMoves(KomaScript sc, bool reverse = false)
    {
        int reversenum = 1;

        if (reverse)
        {
            reversenum = -1;
        }
        List <KomaMove> moves   = new List <KomaMove>();
        MasuManager     manager = MasuManager.Instance;

        int[] xs = { 0, -1, -1, 0, 1, 1 };
        int[] ys = { 1, 0, -1, -1, -1, 0 };
        int   i  = 0;

        foreach (int x in xs)
        {
            int      y    = ys [i];
            MasuInit masu = manager.GetMasu(sc.x + x, sc.y + y * reversenum);
            if (masu.selfFlag != sc.selfFlag || masu.enemyFlag != sc.enemyFlag)
            {
                KomaMove move = new KomaMove();
                move.x = x;
                move.y = y * reversenum;
                moves.Add(move);
            }
            i++;
        }
        return(moves);
    }
Beispiel #6
0
    public List <KomaMove> GetMotigomaMoves(KomaScript sc, bool reverse = false)
    {
        List <KomaMove> moves   = new List <KomaMove> ();
        MasuManager     manager = MasuManager.Instance;
        int             ymin    = 1;
        int             ymax    = 9;

        if (reverse)
        {
            ymax = 8;
        }
        else
        {
            ymin = 2;
        }
        for (int x = 1; x <= 9; x++)
        {
            bool nifuFlag = false;
            for (int y = ymin; y <= ymax; y++)
            {
                MasuInit masu = manager.GetMasu(x, y);
                // 味方側
                if (!reverse && masu.komaName.Equals(KomaConst.komaFu))
                {
                    nifuFlag = true;
                    break;
                    // 敵側
                }
                else if (reverse && masu.komaName.Equals(KomaConst.komaFu2))
                {
                    nifuFlag = true;
                    break;
                }
            }
            if (!nifuFlag)
            {
                for (int y = ymin; y <= ymax; y++)
                {
                    MasuInit masu = manager.GetMasu(x, y);
                    // 敵味方の駒がいないとき
                    if (!masu.exists)
                    {
                        KomaMove move = new KomaMove();
                        move.x = x;
                        move.y = y;
                        moves.Add(move);
                    }
                    else
                    {
                        continue;
                    }
                }
            }
        }
        return(moves);
    }
Beispiel #7
0
 public MasuInit GetMasu(int x, int y)
 {
     if (x > 9 || y > 9 || x < 1 || y < 1)
     {
         MasuInit masu = new MasuInit();
         masu.Init(0, 0);
         return(masu);
     }
     return(komas [x + "-" + y]);
 }
Beispiel #8
0
    public void UpdMasuObjNameByXAndY(string objName, int x, int y)
    {
        if (x > 9 || y > 9 || x < 1 || y < 1)
        {
            return;
        }
        MasuInit masu = GetMasu(x, y);

        masu.objName        = objName;
        komas [x + "-" + y] = masu;
    }
Beispiel #9
0
    // マスを空に
    public void EmptyMasu(int x, int y)
    {
        if (x > 9 || y > 9 || x < 1 || y < 1)
        {
            return;
        }
        MasuInit masu = new MasuInit();

        masu.Init(x, y);
        komas [x + "-" + y] = masu;
    }
Beispiel #10
0
 public void Init()
 {
     for (int x = 1; x <= 9; x++)
     {
         for (int y = 1; y <= 9; y++)
         {
             MasuInit masu = new MasuInit();
             masu.Init(x, y);
             komas [x + "-" + y] = masu;
         }
     }
 }
Beispiel #11
0
    public void EmptyKoma()
    {
        MasuManager manager = MasuManager.Instance;

        for (int y = 1; y <= 9; y++)
        {
            for (int x = 1; x <= 9; x++)
            {
                MasuInit masu = manager.GetMasu(x, y);
                if (masu.exists)
                {
                    DestroyKomaObj(masu.objName);
                }
            }
        }
    }
Beispiel #12
0
    public void RefreshKoma()
    {
        MasuManager manager = MasuManager.Instance;

        for (int y = 1; y <= 9; y++)
        {
            for (int x = 1; x <= 9; x++)
            {
                MasuInit masu = manager.GetMasu(x, y);
                if (masu.exists)
                {
                    string objName = CreateKomaObj(masu.komaName, x, y);
                    manager.UpdMasuObjNameByXAndY(objName, x, y);
                }
            }
        }
    }
Beispiel #13
0
    public string GetMasuDetail()
    {
        string line = "";

        for (int y = 1; y <= 9; y++)
        {
            for (int x = 1; x <= 9; x++)
            {
                MasuInit masu = komas [x + "-" + y];
                line += "(" + x + "-" + y + ")";
                line += "selfFlag:" + masu.selfFlag + "\n";
                line += "enemyFlag:" + masu.enemyFlag + "\n";
                line += "exists:" + masu.exists + "\n";
                line += "komaName:" + masu.komaName + "\n";
                line += "objName:" + masu.objName + "\n";
            }
        }
        return(line);
    }
Beispiel #14
0
    public void SetKoma(int x, int y, string objName)
    {
        string[] names  = objName.Split(new char[] { '_' });
        string   name   = "koma_" + names [1];
        MasuInit detail = new MasuInit();

        this.x        = x;
        this.y        = y;
        this.komaName = name;
        this.objName  = objName;
        if (int.Parse(names [1]) >= 15)
        {
            selfFlag  = false;
            enemyFlag = true;
        }
        else
        {
            selfFlag  = true;
            enemyFlag = false;
        }
    }
Beispiel #15
0
    public List <KomaMove> GetMoves(KomaScript sc, bool reverse = false)
    {
        int reversenum = 1;

        if (reverse)
        {
            reversenum = -1;
        }
        List <KomaMove> moves   = new List <KomaMove> ();
        MasuManager     manager = MasuManager.Instance;

        for (int i = 1; i <= 8; i++)
        {
            MasuInit masu = manager.GetMasu(sc.x, sc.y + -1 * i * reversenum);
            // 敵の駒に当たったとき
            if (masu.enemyFlag && sc.selfFlag || masu.selfFlag && sc.enemyFlag)
            {
                KomaMove move = new KomaMove();
                move.x = 0;
                move.y = -1 * i * reversenum;
                moves.Add(move);
                break;
                // 味方の駒に当たってないとき
            }
            else if (masu.selfFlag != sc.selfFlag || masu.enemyFlag != sc.enemyFlag)
            {
                KomaMove move = new KomaMove();
                move.x = 0;
                move.y = -1 * i * reversenum;
                moves.Add(move);
            }
            else
            {
                break;
            }
        }
        return(moves);
    }
Beispiel #16
0
    public List <KomaMove> GetMotigomaMoves(KomaScript sc, bool reverse = false)
    {
        List <KomaMove> moves   = new List <KomaMove> ();
        MasuManager     manager = MasuManager.Instance;
        int             ymin    = 1;
        int             ymax    = 9;

        if (reverse)
        {
            ymax = 7;
        }
        else
        {
            ymin = 3;
        }
        for (int x = 1; x <= 9; x++)
        {
            for (int y = ymin; y <= ymax; y++)
            {
                MasuInit masu = manager.GetMasu(x, y);
                // 敵味方の駒がいないとき
                if (!masu.exists)
                {
                    KomaMove move = new KomaMove();
                    move.x = x;
                    move.y = y;
                    moves.Add(move);
                }
                else
                {
                    continue;
                }
            }
        }
        return(moves);
    }
Beispiel #17
0
    // 相手の駒を取ったか確認&実行時
    void execCheckGetEnemyKoma(string objName, int x, int y)
    {
        GameObject      gameObj  = GameObject.Find(objName);
        KomaScript      sc       = gameObj.GetComponent <KomaScript>();
        MasuManager     manager  = MasuManager.Instance;
        MasuInit        masu     = manager.GetMasu(x, y);
        MotigomaManager mManager = MotigomaManager.Instance;

        if (sc.selfFlag && masu.enemyFlag)
        {
            if (masu.komaName.Equals(KomaConst.komaOu2) || masu.komaName.Equals(KomaConst.komaGy2))
            {
                mManager.Plus(KomaConst.komaOu);
            }
            else if (masu.komaName.Equals(KomaConst.komaHi2) || masu.komaName.Equals(KomaConst.komaRy2))
            {
                mManager.Plus(KomaConst.komaHi);
            }
            else if (masu.komaName.Equals(KomaConst.komaKa2) || masu.komaName.Equals(KomaConst.komaUm2))
            {
                mManager.Plus(KomaConst.komaKa);
            }
            else if (masu.komaName.Equals(KomaConst.komaKi2))
            {
                mManager.Plus(KomaConst.komaKi);
            }
            else if (masu.komaName.Equals(KomaConst.komaGi2) || masu.komaName.Equals(KomaConst.komaNg2))
            {
                mManager.Plus(KomaConst.komaGi);
            }
            else if (masu.komaName.Equals(KomaConst.komaKe2) || masu.komaName.Equals(KomaConst.komaNk2))
            {
                mManager.Plus(KomaConst.komaKe);
            }
            else if (masu.komaName.Equals(KomaConst.komaKy2) || masu.komaName.Equals(KomaConst.komaNy2))
            {
                mManager.Plus(KomaConst.komaKy);
            }
            else if (masu.komaName.Equals(KomaConst.komaFu2) || masu.komaName.Equals(KomaConst.komaTo2))
            {
                mManager.Plus(KomaConst.komaFu);
            }
            GameObject     obj = transform.Find("../Motigoma1").gameObject;
            MotigomaScript mSc = obj.GetComponent <MotigomaScript>();
            mSc.RefreshKoma();
            DestroyKomaObj(masu.objName);
        }
        else if (sc.enemyFlag && masu.selfFlag)
        {
            if (masu.komaName.Equals(KomaConst.komaOu) || masu.komaName.Equals(KomaConst.komaGy))
            {
                mManager.Plus(KomaConst.komaOu2);
            }
            else if (masu.komaName.Equals(KomaConst.komaHi) || masu.komaName.Equals(KomaConst.komaRy))
            {
                mManager.Plus(KomaConst.komaHi2);
            }
            else if (masu.komaName.Equals(KomaConst.komaKa) || masu.komaName.Equals(KomaConst.komaUm))
            {
                mManager.Plus(KomaConst.komaKa2);
            }
            else if (masu.komaName.Equals(KomaConst.komaKi))
            {
                mManager.Plus(KomaConst.komaKi2);
            }
            else if (masu.komaName.Equals(KomaConst.komaGi) || masu.komaName.Equals(KomaConst.komaNg))
            {
                mManager.Plus(KomaConst.komaGi2);
            }
            else if (masu.komaName.Equals(KomaConst.komaKe) || masu.komaName.Equals(KomaConst.komaNk))
            {
                mManager.Plus(KomaConst.komaKe2);
            }
            else if (masu.komaName.Equals(KomaConst.komaKy) || masu.komaName.Equals(KomaConst.komaNy))
            {
                mManager.Plus(KomaConst.komaKy2);
            }
            else if (masu.komaName.Equals(KomaConst.komaFu) || masu.komaName.Equals(KomaConst.komaTo))
            {
                mManager.Plus(KomaConst.komaFu2);
            }
            GameObject     obj = transform.Find("../Motigoma2").gameObject;
            MotigomaScript mSc = obj.GetComponent <MotigomaScript>();
            mSc.RefreshKoma();
            DestroyKomaObj(masu.objName);
        }
    }
Beispiel #18
0
    // lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL
    // lnsgksnl/1r5b1/pppp1ppp/9/9/9/PPPPP1PPP/1B7/LNSGKGSNL
    // lnsgkgP+nl/1r5b1/pppppp1pp/9/9/9/PPPPPP1PP/1B5R1/LNSGKGSNL
    public string GetSfen()
    {
        string line     = "";
        int    emptyCnt = 0;

        for (int y = 1; y <= 9; y++)
        {
            for (int x = 9; x >= 1; x--)
            {
                MasuInit masu = komas [x + "-" + y];
                if (masu.exists && emptyCnt > 0)
                {
                    line    += emptyCnt;
                    emptyCnt = 0;
                }
                if (masu.komaName.Equals(KomaConst.komaFu))
                {
                    line += "P";
                }
                else if (masu.komaName.Equals(KomaConst.komaKy))
                {
                    line += "L";
                }
                else if (masu.komaName.Equals(KomaConst.komaKe))
                {
                    line += "N";
                }
                else if (masu.komaName.Equals(KomaConst.komaGi))
                {
                    line += "S";
                }
                else if (masu.komaName.Equals(KomaConst.komaKi))
                {
                    line += "G";
                }
                else if (masu.komaName.Equals(KomaConst.komaKa))
                {
                    line += "B";
                }
                else if (masu.komaName.Equals(KomaConst.komaHi))
                {
                    line += "R";
                }
                else if (masu.komaName.Equals(KomaConst.komaOu) || masu.komaName.Equals(KomaConst.komaGy))
                {
                    line += "K";
                }
                else if (masu.komaName.Equals(KomaConst.komaFu2))
                {
                    line += "p";
                }
                else if (masu.komaName.Equals(KomaConst.komaKy2))
                {
                    line += "l";
                }
                else if (masu.komaName.Equals(KomaConst.komaKe2))
                {
                    line += "n";
                }
                else if (masu.komaName.Equals(KomaConst.komaGi2))
                {
                    line += "s";
                }
                else if (masu.komaName.Equals(KomaConst.komaKi2))
                {
                    line += "g";
                }
                else if (masu.komaName.Equals(KomaConst.komaKa2))
                {
                    line += "b";
                }
                else if (masu.komaName.Equals(KomaConst.komaHi2))
                {
                    line += "r";
                }
                else if (masu.komaName.Equals(KomaConst.komaOu2) || masu.komaName.Equals(KomaConst.komaGy2))
                {
                    line += "k";
                }
                else if (masu.komaName.Equals(KomaConst.komaTo))
                {
                    line += "P+";
                }
                else if (masu.komaName.Equals(KomaConst.komaNy))
                {
                    line += "L+";
                }
                else if (masu.komaName.Equals(KomaConst.komaNk))
                {
                    line += "N+";
                }
                else if (masu.komaName.Equals(KomaConst.komaNg))
                {
                    line += "S+";
                }
                else if (masu.komaName.Equals(KomaConst.komaUm))
                {
                    line += "B+";
                }
                else if (masu.komaName.Equals(KomaConst.komaRy))
                {
                    line += "R+";
                }
                else if (masu.komaName.Equals(KomaConst.komaTo2))
                {
                    line += "p+";
                }
                else if (masu.komaName.Equals(KomaConst.komaNy2))
                {
                    line += "l+";
                }
                else if (masu.komaName.Equals(KomaConst.komaNk2))
                {
                    line += "n+";
                }
                else if (masu.komaName.Equals(KomaConst.komaNg2))
                {
                    line += "s+";
                }
                else if (masu.komaName.Equals(KomaConst.komaUm2))
                {
                    line += "b+";
                }
                else if (masu.komaName.Equals(KomaConst.komaRy2))
                {
                    line += "r+";
                }
                else if (!masu.exists)
                {
                    emptyCnt++;
                }
            }
            if (emptyCnt > 0)
            {
                line    += emptyCnt;
                emptyCnt = 0;
            }
            if (y < 9)
            {
                line += "/";
            }
        }
        MotigomaManager manager  = MotigomaManager.Instance;
        string          motigoma = manager.GetSfen();

        return("sfen " + line + " w " + motigoma + " 1");
    }