/// <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; }
/// <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); }
/// <summary> /// Rotate /// </summary> private TetrisPieceList Rotate(int rotation) { return(new TetrisPieceList(TetrisPieceList.GetPiece(Pieces.PieceID, rotation))); }