コード例 #1
0
ファイル: BarreLongue.cs プロジェクト: NathanGrimaud/Tetris
        public override void Tourner(ref Barre barre, ref Table grille)
        {
            // Sauvegarde des précédents emplacements
            List<int> emplacements = new List<int>();
            Barre b = new BarreL();
            int precposition = position;

            foreach (var emp in barre.emplacement)
            {
                emplacements.Add(emp);
            }
            b.emplacement = emplacements;

            if (position == 0)
            {
                if (this.emplacement[0] - 9 > 0)
                {
                    this.emplacement[0] -= 9;
                    this.emplacement[2] += 9;
                    this.emplacement[3] += 18;
                    position++;
                }
            }
            else
            {
                if (this.emplacement[2] - 9 > 0 && this.emplacement[3] - 18 > 0)
                {
                    this.emplacement[0] += 9;
                    this.emplacement[2] -= 9;
                    this.emplacement[3] -= 18;
                    position = 0;
                }
            }
            // Vérification que le déménagement est correct
            if (grille.EmplacementDispo(this))
            {
                grille.write(ref b.emplacement, this);

            }
            else
            {
                this.emplacement = b.emplacement;
                this.position = precposition;
            }
        }
コード例 #2
0
ファイル: Table.cs プロジェクト: NathanGrimaud/Tetris
        public bool DepacementLargeur(Barre atest, List<int> precemplacement)
        {
            for (int i = 0; i < atest.emplacement.Count; i++)
            {
                // Je vérifie que les déplacement en largeur reste bien sur la même ligne
                if (atest.emplacement[i] / 10 != precemplacement[i] / 10)
                    return false;
            }

            return true;
        }
コード例 #3
0
ファイル: Barre.cs プロジェクト: NathanGrimaud/Tetris
 public abstract void Tourner(ref Barre barre, ref Table grille);
コード例 #4
0
ファイル: Table.cs プロジェクト: NathanGrimaud/Tetris
        public bool EmplacementDispo(Barre test)
        {
            // Je tourne chaque emplacement de la barre a check
            List<int> precemplacement = new List<int>();

            foreach (int emplacement in test.emplacement)
            {
                // Si l'emplacement est en dehors des limites du tableau, je return false

                if (emplacement >= 180)
                    return false;
                if (emplacement < 0)
                    return false;

                // Sinon si l'emplacement du tableau est vide ou corresponds déja a la même barre, alors je continue le foreach
                else if (this.tableau[emplacement] == null || this.tableau[emplacement] == test)
                {
                    precemplacement.Add(emplacement);
                }

                // Sinon, je retourne faux
                else
                    return false;
            }

            precemplacement = precemplacement.OrderByDescending(k => k).ToList();

            foreach (int emplacement in test.emplacement)
            {
                if (precemplacement.Contains(emplacement + 1))
                {
                    if ((emplacement + 1) / 10 != emplacement / 10)
                        return false;
                }
            }
            return true;
        }
コード例 #5
0
ファイル: Table.cs プロジェクト: NathanGrimaud/Tetris
        public void write(ref List<int> precbarre, Barre barre)
        {
            foreach (int emplacement in precbarre)
            {
                this.tableau[emplacement] = null;
            }

            foreach (int emplacement in barre.emplacement)
            {
                this.tableau[emplacement] = barre;
            }
        }
コード例 #6
0
ファイル: Table.cs プロジェクト: NathanGrimaud/Tetris
 // Cette fonction me permet de descendre emplacement par emplacement une barre. Necessaire lorsque une barre est désagrégé.
 public int descendreCut(Barre desc, int emp)
 {
     while ((emp + 10) < 180 && (this.tableau[emp + 10] == null))
     {
         emp = emp + 10;
     }
     return emp;
 }
コード例 #7
0
ファイル: Partie.cs プロジェクト: NathanGrimaud/Tetris
        public Partie(MainWindow main, Level level)
        {
            ScoresPartie = new Score();
            ScoresPartie.Read(level.numero);
            this.enregistré = false;
            this.main = main;
            this.level = level;

            main.tetris.Visibility = Visibility.Collapsed;
            Barre.Couleurs = level.Couleurs;
            main.fenetre.Background = new SolidColorBrush(level.backgroundcolor);

            if (level.backgroundcolor == Colors.Black)
            {
                main.Termine.Foreground = new SolidColorBrush(Colors.White);
                main.ScoreNiveau.Foreground = new SolidColorBrush(Colors.White);
                main.ScoreNom.Foreground = new SolidColorBrush(Colors.White);
                main.ScoreScore.Foreground = new SolidColorBrush(Colors.White);
                main.labelScore.Foreground = new SolidColorBrush(Colors.White);
                main.labelScoreLevel.Foreground = new SolidColorBrush(Colors.White);
                main.labelScoreNom.Foreground = new SolidColorBrush(Colors.White);
                main.ScoreActuel.Foreground = new SolidColorBrush(Colors.White);
                main.score.Foreground = new SolidColorBrush(Colors.White);
            }
            else
            {
                main.Termine.Foreground = new SolidColorBrush(Colors.Black);
                main.ScoreNiveau.Foreground = new SolidColorBrush(Colors.Black);
                main.ScoreNom.Foreground = new SolidColorBrush(Colors.Black);
                main.ScoreScore.Foreground = new SolidColorBrush(Colors.Black);
                main.labelScore.Foreground = new SolidColorBrush(Colors.Black);
                main.labelScoreLevel.Foreground = new SolidColorBrush(Colors.Black);
                main.labelScoreNom.Foreground = new SolidColorBrush(Colors.Black);
                main.ScoreActuel.Foreground = new SolidColorBrush(Colors.Black);
                main.score.Foreground = new SolidColorBrush(Colors.Black);
            }

            if (level.numero == 4) {
                main.nyan.Visibility = System.Windows.Visibility.Visible;
                main.image.Visibility = System.Windows.Visibility.Visible;
            }

            test = Barre.Create(); // Test est la barre qui sera en cours de placement
            tabRect = new List<Rectangle>(180);
            main.banniere.Content = "GooOOoooo";
            this.grille = new Table(main, tabRect, level);
            messageTimer = new DispatcherTimer();
            messageTimer.Tick += new EventHandler(messageTimer_Tick);
            messageTimer.Interval = new TimeSpan(0, 0, 0, 0, level.timer);
            messageTimer.Start();

            Thread myThread = new Thread(() => playSong());
            MainWindow.AllThreads.Add(myThread);
            myThread.Start();
            partie = this;

            if(level.numero == 3)
            {
                da= new DoubleAnimation();
                da.From = 0;
                da.To = 360;
                da.Duration = new Duration(TimeSpan.FromSeconds(3));
                da.RepeatBehavior = RepeatBehavior.Forever;
                rt = new RotateTransform(360, main.gameGrid.Width / 2, main.gameGrid.Height / 2);
                main.gameGrid.RenderTransform = rt;
                rt.BeginAnimation(RotateTransform.AngleProperty, da);

            }
            if(level.numero == 5)
            {
                main.gameGrid.RenderTransform = new RotateTransform(180,main.gameGrid.Width /2, main.gameGrid.Height / 2);

                for (int i = 0; i < tabRect.Count; i++)
                {
                        tabRect[i].Fill = new SolidColorBrush(Colors.Black);
                }
            }
        }
コード例 #8
0
ファイル: Partie.cs プロジェクト: NathanGrimaud/Tetris
        private void messageTimer_Tick(object sender, EventArgs e)
        {
            if (level.numero == 4)
                grille.vibrate();
            main.banniere.Content = "";
            test.Descendre(grille);
            main.Timer.Content = DateTime.Now.Second;

            if (test.bloquer)
            {
                // Si test est bloqué, car il a touché un autre objet, alors on recréer une barre
                test = Barre.Create();
            }

            grille.fillGrid(tabRect);
        }
コード例 #9
0
ファイル: Partie.cs プロジェクト: NathanGrimaud/Tetris
        public void destroy()
        {
            messageTimer.Stop();

            if (level.numero == 5)
                main.gameGrid.RenderTransform = new RotateTransform(360, main.gameGrid.Width / 2, main.gameGrid.Height / 2);

            da = new DoubleAnimation();
            da.From = 0;
            da.To = 0;
            da.Duration = new Duration(TimeSpan.FromSeconds(1));
            da.RepeatBehavior = RepeatBehavior.Forever;
            rt = new RotateTransform();
            main.gameGrid.RenderTransform = rt;
            rt.BeginAnimation(RotateTransform.AngleProperty, da);

            this.read = false;
            this.grille = null;
            this.main = null;
            this.tabRect = null;
            this.test = null;
            Score.listeScore = new List<Score>();
        }
コード例 #10
0
ファイル: BarreCarre.cs プロジェクト: NathanGrimaud/Tetris
 public override void Tourner(ref Barre barre, ref Table grille)
 {
 }