示例#1
0
        /// <summary>
        /// NouvellePiece
        /// </summary>
        /// <param name="version"></param>
        public void NouvellePiece()
        {
            Y = -3;
            X = 6;

            SetPoche();

            if (Nexts == null)
            {
                Pieces = new TetrisPieceList(TetrisPieceList.GetPiece(GetNext()));
            }
            else
            {
                Pieces = new TetrisPieceList(TetrisPieceList.GetPiece(Nexts.PieceID));
            }

            Nexts = new TetrisPieceList(TetrisPieceList.GetPiece(GetNext()));

            TetrisHorizontalList tetrisHorizontals = new TetrisHorizontalList();

            for (int rotation = 0; rotation < 4; rotation++)
            {
                for (int x = 2; x < 12; x++)
                {
                    if (RotateX(rotation, x) is TetrisPieceList tmpPiece)
                    {
                        double score = PieceTombes.GetAiScore(tmpPiece);
                        tetrisHorizontals.Add(new TetrisHorizontal(rotation, x, score));
                    }
                }
            }

            XOptimal        = tetrisHorizontals.ScoreX;
            RotationOptimal = tetrisHorizontals.ScoreRotation;
        }
示例#2
0
        /// <summary>
        /// RotateX
        /// </summary>
        /// <param name="rotation"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        private TetrisPieceList RotateX(int rotation, int x)
        {
            if (new TetrisPieceList(TetrisPieceList.GetPiece(Pieces.PieceID, rotation), x) is TetrisPieceList tetrisPieces)
            {
                if (tetrisPieces.Largeur < 12)
                {
                    return(tetrisPieces);
                }
            }

            return(null);
        }
示例#3
0
 /// <summary>
 /// Rotate
 /// </summary>
 private TetrisPieceList Rotate(int rotation)
 {
     return(new TetrisPieceList(TetrisPieceList.GetPiece(Pieces.PieceID, rotation)));
 }