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; } } } } } }
public void SetText(BlockData _data) { if (_data.GetBlockType() == BlockData.EBlockType.Normal) //只有當我發現你是普通格子時,我才會去更動我的數字 { this.SetText(_data.GetBlockValue()); } }
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()); } }
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); }
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; } }