Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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;
                }
            }
        }