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;
            }
        }
Ejemplo n.º 2
0
        /// <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");
                }
            }
        }
Ejemplo n.º 3
0
        /// <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();                    //取下一个方块
        }
Ejemplo n.º 4
0
 /// <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");
         }
     }
 }
Ejemplo n.º 5
0
        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");
                }
            }
        }