コード例 #1
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public NextBlockControl()
        {
            InitializeComponent();

            _lastPieceParameter = MainModel.NextPieceParameter;
            SetEvent();
        }
コード例 #2
0
 /// <summary>
 /// モデル層からのデータ更新通知
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void MainModel_Updated(object sender, EventArgs e)
 {
     // 次のピースが新しくなった場合
     if (_lastPieceParameter != MainModel.NextPieceParameter)
     {
         _lastPieceParameter = MainModel.NextPieceParameter;
         Invalidate();
     }
 }
コード例 #3
0
        /// <summary>
        /// ピースを新しく更新する
        /// </summary>
        /// <returns></returns>
        public static PieceParameter CreatePieceParameter()
        {
            // ランダム関数でパラメータを決定
            Random random = new Random();
            int pieceLength = Enum.GetValues(typeof(PieceType)).Length;
            int pieceIndex = random.Next(pieceLength - 1);
            int angleLength = Enum.GetValues(typeof(AngleType)).Length;
            int angleIndex = random.Next(angleLength);

            PieceParameter pieceParameter = new PieceParameter();
            // 更新
            switch (pieceIndex)
            {
                case 0:
                    pieceParameter.Piece = new PieceI(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex);
                    pieceParameter.PieceType = PieceType.I;
                    break;
                case 1:
                    pieceParameter.Piece = new PieceO(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex);
                    pieceParameter.PieceType = PieceType.O;
                    break;
                case 2:
                    pieceParameter.Piece = new PieceS(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex);
                    pieceParameter.PieceType = PieceType.S;
                    break;
                case 3:
                    pieceParameter.Piece = new PieceZ(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex);
                    pieceParameter.PieceType = PieceType.Z;
                    break;
                case 4:
                    pieceParameter.Piece = new PieceJ(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex);
                    pieceParameter.PieceType = PieceType.J;
                    break;
                case 5:
                    pieceParameter.Piece = new PieceL(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex);
                    pieceParameter.PieceType = PieceType.L;
                    break;
                case 6:
                    pieceParameter.Piece = new PieceT(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex);
                    pieceParameter.PieceType = PieceType.T;
                    break;
                default:
                    System.Diagnostics.Debug.Assert(false);
                    pieceParameter.Piece = new PieceI(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex);
                    pieceParameter.PieceType = PieceType.I;
                    break;
            }
            return pieceParameter;
        }