/// <summary> /// Détermine si le bloc peut bouger; si il y a un bloc qui limite son mouvement ou qu'il est à la limite du tableau de jeu /// </summary> /// <param name="sens">Sens du déplacement du joueur déterminé par la fonction SaisirDeplacementJoueur</param> /// <returns>Retourne un booléen (vrai si le joueur peut bouger)</returns> bool BlocPeutBouger(SensDeplacement sens) { bool blocPeutBouger = true; InitialiserTableau(); if (sens == SensDeplacement.Gauche) { for (int i = 0; i < blocActifX.Length; i++) { if (tableauDeType[blocActifY[i], blocActifX[i] + colonneCourante - 1] == TypeBloc.Gele || tableauDeType[blocActifY[i], blocActifX[i] + colonneCourante - 1] == 0) { blocPeutBouger = false; } } } else if (sens == SensDeplacement.Droite) { for (int i = 0; i < tableauDeType.Length; i++) { if ((tableauDeType[blocActifY[i], blocActifX[i] + colonneCourante + 1] + colonneCourante + 1 == TypeBloc.Gele) || (blocActifX[i] + colonneCourante + 1 == NB_COLONNE - 1)) { blocPeutBouger = false; } } } else if (sens == SensDeplacement.Bas) { for (int i = 0; i < tableauDeType.Length; i++) { if (tableauDeType[blocActifY[i] + ligneCourante + 1, blocActifX[i]] == TypeBloc.Gele || blocActifX[i] + ligneCourante + 1 == 0) { blocPeutBouger = false; } } } else if (sens == SensDeplacement.RotationAntihoraire) { for (int i = 0; i < tableauDeType.Length; i++) { if (tableauDeType[blocActifX[i], -blocActifY[i] + colonneCourante] == TypeBloc.Gele || -blocActifY[i] + colonneCourante <= 0) { blocPeutBouger = false; } } } else if (sens == SensDeplacement.RotationHoraire) { for (int i = 0; i < tableauDeType.Length; i++) { if (tableauDeType[-blocActifX[i], blocActifY[i] + colonneCourante] == TypeBloc.Gele || blocActifX[i] + colonneCourante + 1 == 0) { blocPeutBouger = false; } } } return(blocPeutBouger); }
/// <summary> /// Déplace le bloc dans le tableau dans la direction que le joueur veut /// </summary> /// <param name="sens">Sens du déplacement du joueur déterminé par la fonction SaisirDeplacementJoueur</param> void DeplacerBloc(SensDeplacement sens) { if (BlocPeutBouger(SaisirDeplacementJoueur())) { switch (sens) { case SensDeplacement.Gauche: colonneCourante -= 1; break; case SensDeplacement.Droite: colonneCourante += 1; break; case SensDeplacement.Bas: ligneCourante += 1; break; case SensDeplacement.RotationAntihoraire: for (int i = 0; i < blocActifY.Length; i++) { blocActifX[i] = blocActifY[i]; blocActifY[i] = -blocActifX[i]; } break; case SensDeplacement.RotationHoraire: for (int i = 0; i < blocActifY.Length; i++) { blocActifX[i] = -blocActifY[i]; blocActifY[i] = blocActifX[i]; } break; default: ligneCourante += 1; break; } } }