コード例 #1
0
    public void Pushing(EPushingDirection _ePushingDirection) //壓縮動作,只需將 "方向" 帶入
    {
        List <List <BlockData> > listPushing = this.GetPushingList(_ePushingDirection);

        foreach (List <BlockData> listPushingLine in listPushing) //挑出行線群的其中一條
        {
            for (int i = 0; i < listPushingLine.Count; i++)
            {
                BlockData blockComparing = listPushingLine[i];
                bool      bPolling       = true; //表示正在輪尋
                for (int j = i + 1; j < listPushingLine.Count && bPolling; j++)
                {
                    BlockData blockPolling = listPushingLine[j];
                    if (blockPolling.GetBlockValue() != 0)
                    {
                        if (blockComparing.GetBlockValue() == 0)
                        {
                            blockComparing.PlusOn(blockPolling);
                        }
                        else if (blockComparing.GetBlockValue() == blockPolling.GetBlockValue())
                        {
                            blockComparing.PlusOn(blockPolling);
                            this.m_iScore += blockComparing.GetBlockValue();
                            bPolling       = false;
                        }
                        else if (blockComparing.GetBlockValue() != blockPolling.GetBlockValue())
                        {
                            bPolling = false;
                        }
                    }
                }
            }
        }
    }
コード例 #2
0
 public void SetText(BlockData _data)
 {
     if (_data.GetBlockType() == BlockData.EBlockType.Normal) //只有當我發現你是普通格子時,我才會去更動我的數字
     {
         this.SetText(_data.GetBlockValue());
     }
 }
コード例 #3
0
 public void SpawnBlock(int _iSpawnPos, BlockData _block)            //生成格子
 {
     if (this.m_listBoard != null && _iSpawnPos < this.m_iBoardSize) //只在棋盤有被生出來,而且你選定的索引值在範圍內時才允許生成
     {
         this.m_listBoard[_iSpawnPos].SetBlockValue(_block.GetBlockValue());
         this.m_listBoard[_iSpawnPos].SetBlockType(_block.GetBlockType());
     }
 }
コード例 #4
0
    public bool GetPushAble(EPushingDirection _ePushingDirection)
    {
        List <List <BlockData> > listPushing = this.GetPushingList(_ePushingDirection);
        bool bPushAble = false;                                   //是否可進行壓縮

        for (int i = 0; i < listPushing.Count && !bPushAble; i++) //挑出行線群的每一條行線進行檢查,若中途發現可以進行壓縮的話就跳出迴圈,因為沒有繼續檢查下去的必要
        {
            for (int j = 0; j < listPushing[i].Count - 1 && !bPushAble; j++)
            {
                BlockData blockComparing = listPushing[i][j]; //根據行線索引值找到該block物件
                BlockData blockPolling   = listPushing[i][j + 1];
                if (blockComparing.GetBlockValue() == 0 && blockPolling.GetBlockValue() != 0)
                {
                    bPushAble = true;
                }
                else if (blockComparing.GetBlockValue() != 0 && blockComparing.GetBlockValue() == blockPolling.GetBlockValue())
                {
                    bPushAble = true;
                }
            }
        }
        return(bPushAble);
    }
コード例 #5
0
    public void SetBlock(BlockData _data)
    {
        switch (_data.GetBlockType())
        {
        case BlockData.EBlockType.Normal:
            this.m_imgBlockFace.sprite = m_sprNormalFace;
            this.SetText(_data.GetBlockValue());
            break;

        case BlockData.EBlockType.Obstruct:
            this.m_imgBlockFace.sprite = m_sprObstructFace;
            this.SetText(0);
            break;

        case BlockData.EBlockType.None:
            this.m_imgBlockFace.sprite = m_sprNoneFace;
            this.SetText(0);
            break;
        }
    }