Example #1
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);
    }
Example #2
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);
    }
    void OnClick()
    {
        MasuManager manager = MasuManager.Instance;

        Debug.Log(manager.GetMasuStr());
        Debug.Log(manager.GetSfen());
        Debug.Log(manager.GetMasuDetail());
    }
Example #4
0
    public void modKomanariObj(string objName, string narigomaName, int x, int y)
    {
        string      objNarigomaName = CreateKomaObj(narigomaName, x, y);
        MasuManager manager         = MasuManager.Instance;

        manager.SetMasu(x, y, KomaFunction.GetKomaNameByObjName(objNarigomaName));
        manager.UpdMasuObjNameByXAndY(objNarigomaName, x, y);
        DestroyKomaObj(objName);
    }
Example #5
0
    // Use this for initialization
    void Start()
    {
        MasuManager manager = MasuManager.Instance;

        manager.Init();
        // EmptyKoma ();
        manager.InitHirate();
        RefreshKoma();
    }
Example #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);
    }
Example #7
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);
                }
            }
        }
    }
Example #8
0
    // 駒移動処理
    public void MoveKomaObj(string name, int x, int y)
    {
        bool motigomaFlag = false;

        // 持ち駒の場合
        if (name.IndexOf(KomaConst.motigoma) > -1)
        {
            name = name.Replace(KomaConst.motigoma, "");
            MotigomaManager motigomaManager = MotigomaManager.Instance;
            motigomaManager.Minus(name);
            if (KomaFunction.isSelfKoma(name))
            {
                GameObject     obj = transform.Find("../Motigoma1").gameObject;
                MotigomaScript mSc = obj.GetComponent <MotigomaScript> ();
                mSc.RefreshKoma();
            }
            else
            {
                GameObject     obj = transform.Find("../Motigoma2").gameObject;
                MotigomaScript mSc = obj.GetComponent <MotigomaScript> ();
                mSc.RefreshKoma();
            }
            name = CreateKomaObj(name, x, y);
            MasuManager manager = MasuManager.Instance;
            manager.SetMasu(x, y, KomaFunction.GetKomaNameByObjName(name));
            manager.UpdMasuObjNameByXAndY(name, x, y);
            motigomaFlag = true;
        }
        GameObject gameObj = GameObject.Find(name);
        KomaScript sc      = gameObj.GetComponent <KomaScript> ();

        gameObj.transform.position = new Vector3(basex - per1x * x, basey - per1y * y, 2);
        // 持ち駒でない場合
        if (!motigomaFlag)
        {
            Debug.Log("motigomadenai " + name);
            execCheckGetEnemyKoma(name, x, y);
            execCheckNarigoma(name, x, y);
            // 移動前のマスを初期化
            MasuManager manager = MasuManager.Instance;
            manager.EmptyMasu(sc.x, sc.y);
            sc.x = x;
            sc.y = y;
            manager.SetMasu(x, y, KomaFunction.GetKomaNameByObjName(name));
            manager.UpdMasuObjNameByXAndY(name, x, y);
        }
    }
Example #9
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);
                }
            }
        }
    }
Example #10
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);
    }
Example #11
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);
    }
Example #12
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);
        }
    }
Example #13
0
    public override void OnInspectorGUI()
    {
        MasuManager script = target as MasuManager;

        base.OnInspectorGUI();
        if (GUILayout.Button("Set MasuId"))
        {
            int masu_id = 1;
            foreach (Masu masu in script.gameObject.GetComponentsInChildren <Masu>())
            {
                masu.masu_id = masu_id;
                masu_id     += 1;
            }
        }
        if (GUILayout.Button("Grid to Position"))
        {
            foreach (Masu masu in script.gameObject.GetComponentsInChildren <Masu>())
            {
                masu.transform.localPosition = new Vector3(
                    masu.grid.x * MasuManager.MasuPitch,
                    masu.grid.y * MasuManager.MasuPitch,
                    masu.grid.z * MasuManager.MasuPitch
                    );
            }
        }
        if (GUILayout.Button("Position to Grid"))
        {
            foreach (Masu masu in script.gameObject.GetComponentsInChildren <Masu>())
            {
                masu.grid = MasuManager.Instance.GetGrid(masu.transform.localPosition);
            }
        }
        if (GUILayout.Button("Clear Line"))
        {
            foreach (Masu masu in script.gameObject.GetComponentsInChildren <Masu>())
            {
                masu.ClearLine();
            }
        }

        if (GUILayout.Button("Connect Masu"))
        {
            List <Masu> masu_list = new List <Masu>();
            foreach (Masu masu in script.gameObject.GetComponentsInChildren <Masu>())
            {
                masu.ClearConnectAll();
                masu_list.Add(masu);
            }

            foreach (Masu masu in masu_list)
            {
                List <Masu> search_x = masu_list.FindAll(p => p.grid.x == masu.grid.x && masu.grid.y < p.grid.y);
                search_x.Sort((a, b) => a.grid.y - b.grid.y);

                foreach (Masu masu_x in search_x)
                {
                    if (masu_x.m_bBlockDown == false)
                    {
                        masu.Connect(Masu.DIR.UP, masu_x);
                        break;
                    }
                    else
                    {
                        break;
                    }
                }

                List <Masu> search_z = masu_list.FindAll(p => p.grid.y == masu.grid.y && masu.grid.x < p.grid.x);
                search_z.Sort((a, b) => a.grid.x - b.grid.x);

                foreach (Masu masu_z in search_z)
                {
                    if (masu_z.m_bBlockLeft == false)
                    {
                        masu.Connect(Masu.DIR.RIGHT, masu_z);
                        break;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            foreach (Masu masu in masu_list)
            {
                masu.DrawLine(script.m_matLine);
            }
        }
    }