//Nous avons besoin : lignes, colonnes , score, lignes remplies et quelques effets public Plateau(Grid TetrisGrid) { //État actuel des valeurs , les lignes et les colonnes sont à compter, //elles ont déjà été déclarés dans le fichier XAML. Lignes = TetrisGrid.RowDefinitions.Count; Colonnes = TetrisGrid.ColumnDefinitions.Count; Score = 0; LignesRemplies = 0; BlockControls = new Label[Colonnes, Lignes]; for (int i = 0; i < Colonnes; i++) { for (int j = 0; j < Lignes; j++) { BlockControls[i, j] = new Label(); BlockControls[i, j].Background = Nocolor; BlockControls[i, j].BorderBrush = BlackColor; BlockControls[i, j].BorderThickness = new Thickness(0.3, 0.3, 0.3, 0.3); Grid.SetRow(BlockControls[i, j], j); Grid.SetColumn(BlockControls[i, j], i); TetrisGrid.Children.Add(BlockControls[i, j]); } } Piece = new Piece(); pieceDessin(); }
//Méthode pour vérifier si le mouvement vers le bas est possible public void PieceMovDown() { Point Position = Piece.getPosition(); Point[] Forme = Piece.getForme(); bool move = true; currJeuSuppr(); foreach (Point S in Forme) { //La pièce est en bas du plateau if (((int)(S.Y + Position.Y) + 2 + 1) >= Lignes) { move = false; } //Si pièce en dessous else if (BlockControls[((int)(S.X + Position.X) + ((Colonnes / 2) - 1)), (int)(S.Y + Position.Y) + 2 + 1].Background != Nocolor) { move = false; //Si la pièce touche une autre au niveau de la première ligne if (S.X + Position.X == 0 && S.Y + Position.Y == -1) { partiePerdue(); } } } if (move) { Piece.movDown(); pieceDessin(); } else { pieceDessin(); CheckLignes(); Piece = new Piece(); } }