Exemplo n.º 1
0
        /**
         * Figur kann nicht weiter fallen,
         * entweder wird neue Figur erzeugt oder man ist Gameover
         */
        private void FigureIsFallen(Point[] previousPoints)
        {
            ghostPoints = null;
            board.writeCell(points, color);
            bool gameOver = false;

            /*Pruefen ob GameOver*/
            for (int i = 0; i < points.Length; i++)
            {
                if (points[i].Y < 0)
                {
                    gameOver = true;
                    App.getInstance().gameOver();
                }
            }
            if (!gameOver)
            {
                App.getInstance().NotifyFigureFallen(previousPoints, points, color);

                List <int> linesToRemove = getLinesToRemove();
                /*Hier werden die zu loeschenden Zeilen geloescht*/
                board.collapse(linesToRemove);

                /*Setzt Vorschaufigur als aktuelle Figur und generiert neue Vorschau*/
                board.setCurrentFigure(board.getPreviewFigure());
                board.setPreviewFigure(board.generateRandomFigure());
                board.getCurrentFigure().newOnBoard();
            }
        }
Exemplo n.º 2
0
        /**
         * KeyboardListener fuer das Druecken einer Taste
         */
        void Page_KeyDown(object sender, KeyEventArgs e)
        {
            if (!gameOver)
            {
                if (e.Key == Key.P)
                {
                    if (!pause)
                    {
                        showHint("Pause", 40);
                    }
                    else
                    {
                        GameResume();
                    }
                }
                else if (e.Key == Key.S && mod == 2)
                {
                    handleSpecialMode();
                }
                else
                {
                    if (e.Key == Key.Escape)
                    {
                        if (pause)
                        {
                            GameResume();
                        }
                    }
                    else
                    {
                        if (!pause)
                        {
                            switch (e.Key)
                            {
                            case Key.Up: boardModel.getCurrentFigure().rotate(); break;

                            case Key.Space: boardModel.getCurrentFigure().fallCompletely(); break;

                            default:
                                /* Dieser Timer ist fuer das fluessige links rechts und nach unten Bewegen */
                                if (timer == null)
                                {
                                    lastKey = e.Key;
                                    timer   = new Timer(MoveFigure, null, 0, 80);
                                }
                                break;
                            }
                        }
                    }
                }
            }
        }