private void OnScroll(Vector2 data) { if (!_isEnable) { return; } var tmp = (m_isVertical ? data.y : 1 - data.x); tmp = Mathf.Clamp01(tmp); var value = (ContentSpace - ViewSpace) * tmp; var start = ContentSpace - value - ViewSpace; var startIndex = Mathf.FloorToInt(start / itemSpace); startIndex = Mathf.Max(0, startIndex); if (startIndex != m_startIndex) { ///根据m_startIndex 与 startIndex 大小,判断玩家滑动的方向 _moveDict = m_startIndex - startIndex < 0 ? MoveDict.rightordown : MoveDict.leftorup; m_startIndex = startIndex; UpdateView(); _moveDict = MoveDict.none; } }
/// <summary> /// 移动一步 /// </summary> /// <param name="dict">移动方向</param> private void OneMove(MoveDict dict) { SavePrevValue(); //bool needGetNext1 = false; //bool needGetNext2 = false; //bool needGetNext3 = false; //bool needGetNext4 = false; switch (dict) { case MoveDict.Up: _score += MoveLine(B12, B8, B4, B0) + MoveLine(B13, B9, B5, B1) + MoveLine(B14, B10, B6, B2) + MoveLine(B15, B11, B7, B3); break; case MoveDict.Down: _score += MoveLine(B0, B4, B8, B12) + MoveLine(B1, B5, B9, B13) + MoveLine(B2, B6, B10, B14) + MoveLine(B3, B7, B11, B15); break; case MoveDict.Right: _score += MoveLine(B0, B1, B2, B3) + MoveLine(B4, B5, B6, B7) + MoveLine(B8, B9, B10, B11) + MoveLine(B12, B13, B14, B15); break; case MoveDict.Left: _score += MoveLine(B3, B2, B1, B0) + MoveLine(B7, B6, B5, B4) + MoveLine(B11, B10, B9, B8) + MoveLine(B15, B14, B13, B12); break; default: break; } TScore.Text = _score.ToString(); //int n = cubes.Count(isZero); int n = _tiles.Count(cube => { return(cube.Value == 0); });//计算为0的方块数 //还有空方块则新建一个方块 if (n > 0) { GetNextCube(); } else { //判断是否还能移动 if (!CanMove()) { SetRecord(); MessageBox.Show("Game Over!", "Info"); } } }
/// <summary> /// 移动一次 /// </summary> /// <param name="dict"></param> private void OneMove(MoveDict dict) { SavePrevVaule(); switch (dict) { case MoveDict.Up: score += MoveLine(pictureBox13, pictureBox9, pictureBox5, pictureBox1) + MoveLine(pictureBox14, pictureBox10, pictureBox6, pictureBox2) + MoveLine(pictureBox15, pictureBox11, pictureBox7, pictureBox3) + MoveLine(pictureBox16, pictureBox12, pictureBox8, pictureBox4); break; case MoveDict.Down: score += MoveLine(pictureBox1, pictureBox5, pictureBox9, pictureBox13) + MoveLine(pictureBox2, pictureBox6, pictureBox10, pictureBox14) + MoveLine(pictureBox3, pictureBox7, pictureBox11, pictureBox15) + MoveLine(pictureBox4, pictureBox8, pictureBox12, pictureBox16); break; case MoveDict.Right: score += MoveLine(pictureBox1, pictureBox2, pictureBox3, pictureBox4) + MoveLine(pictureBox5, pictureBox6, pictureBox7, pictureBox8) + MoveLine(pictureBox9, pictureBox10, pictureBox11, pictureBox12) + MoveLine(pictureBox13, pictureBox14, pictureBox15, pictureBox16); break; case MoveDict.Left: score += MoveLine(pictureBox4, pictureBox3, pictureBox2, pictureBox1) + MoveLine(pictureBox8, pictureBox7, pictureBox6, pictureBox5) + MoveLine(pictureBox12, pictureBox11, pictureBox10, pictureBox9) + MoveLine(pictureBox16, pictureBox15, pictureBox14, pictureBox13); break; } lblScore.Text = score.ToString(); //显示总分 getNextCube(); //取下一个方块 }
/// <summary> /// 一次移动操作 /// </summary> /// <param name="dict">移动方向</param> private void OneMove(MoveDict dict) { SavePrevVaule(); bool needGetNext1 = false, needGetNext2 = false, needGetNext3 = false, needGetNext4 = false; switch (dict) { case MoveDict.Up: i_Score += MoveLine(b13, b9, b5, b1, out needGetNext1) + MoveLine(b14, b10, b6, b2, out needGetNext2) + MoveLine(b15, b11, b7, b3, out needGetNext3) + MoveLine(b16, b12, b8, b4, out needGetNext4); break; case MoveDict.Down: i_Score += MoveLine(b1, b5, b9, b13, out needGetNext1) + MoveLine(b2, b6, b10, b14, out needGetNext2) + MoveLine(b3, b7, b11, b15, out needGetNext3) + MoveLine(b4, b8, b12, b16, out needGetNext4); break; case MoveDict.Right: i_Score += MoveLine(b1, b2, b3, b4, out needGetNext1) + MoveLine(b5, b6, b7, b8, out needGetNext2) + MoveLine(b9, b10, b11, b12, out needGetNext3) + MoveLine(b13, b14, b15, b16, out needGetNext4); break; case MoveDict.Left: i_Score += MoveLine(b4, b3, b2, b1, out needGetNext1) + MoveLine(b8, b7, b6, b5, out needGetNext2) + MoveLine(b12, b11, b10, b9, out needGetNext3) + MoveLine(b16, b15, b14, b13, out needGetNext4); break; } t_Score.Text = i_Score.ToString(); //显示总分 int n = 0;//值不为0的方格个数 for (int i = 0; i < Blockes.Length; i++) if (Blockes[i].IValue != 0) n++; if (needGetNext1 || needGetNext2 || needGetNext3 || needGetNext4 || n < 5) { getNextCube();//取下一个方块 } else { if (!CanMove()) { MessageBox.Show("Game Over!", "Info"); } } }
private void oneMove(MoveDict dict) { savePrevValue(); //bool needGetNext1 = false; //bool needGetNext2 = false; //bool needGetNext3 = false; //bool needGetNext4 = false; switch (dict) { case MoveDict.Up: _score += moveLine(b12, b8, b4, b0) + moveLine(b13, b9, b5, b1) + moveLine(b14, b10, b6, b2) + moveLine(b15, b11, b7, b3); break; case MoveDict.Down: _score += moveLine(b0, b4, b8, b12) + moveLine(b1, b5, b9, b13) + moveLine(b2, b6, b10, b14) + moveLine(b3, b7, b11, b15); break; case MoveDict.Right: _score += moveLine(b0, b1, b2, b3) + moveLine(b4, b5, b6, b7) + moveLine(b8, b9, b10, b11) + moveLine(b12, b13, b14, b15); break; case MoveDict.Left: _score += moveLine(b3, b2, b1, b0) + moveLine(b7, b6, b5, b4) + moveLine(b11, b10, b9, b8) + moveLine(b15, b14, b13, b12); break; default: break; } tScore.Text = _score.ToString(); //int n = cubes.Count(isZero); int n = tiles.Count(cube => { return cube.Value == 0; });//计算为0的cube数 //if (needGetNext1 || needGetNext2 || needGetNext3 || needGetNext4 || n < 5) if (n > 0) { getNextCube(); } else { if (!canMove()) { setRecord(); MessageBox.Show("Game Over!", "Info"); } } }