예제 #1
0
        static void Draw(bool first = false)
        {
            if (first)
            {
                drawBox();
                drawScoreboard(true);
                lasth = Console.WindowHeight; lastw = Console.WindowWidth;
                drawCharacter(_player_1);
                drawCharacter(_player_2);
                drawCharacter(_ball);
            }
            doMoves();
            if (lasth != Console.WindowHeight || lastw != Console.WindowWidth)
            {
                drawBox();
                drawScoreboard(true);

                scaleup(_ball);
                scaleup(_player_1);
                scaleup(_player_2);

                lasth = Console.WindowHeight; lastw = Console.WindowWidth;
                clearCharacter(_player_1_last);
                drawCharacter(_player_1);
                _player_1_last = _player_1.copy();
                clearCharacter(_player_2_last);
                drawCharacter(_player_2);
                _player_2_last = _player_2.copy();
                clearCharacter(_ball_last);
                drawCharacter(_ball);
                _ball_last = _ball.copy();
            }
            else
            {
                drawScoreboard();
                if (!_player_1.equals(_player_1_last))
                {
                    clearCharacter(_player_1_last);
                    drawCharacter(_player_1);
                    _player_1_last = _player_1.copy();
                }
                if (!_player_2.equals(_player_2_last))
                {
                    clearCharacter(_player_2_last);
                    drawCharacter(_player_2);
                    _player_2_last = _player_2.copy();
                }
                clearCharacter(_ball_last);
                drawCharacter(_ball);
                _ball_last = _ball.copy();
            }
            //drawCharacter(_player_1);
            //drawCharacter(_player_2);
            //drawCharacter(_ball);
            check();
        }
예제 #2
0
        static void assignCharacters()
        {
            int h = Console.WindowHeight, w = Console.WindowWidth;

            _ball          = new consoleCharacter(0, 0, ball_char);
            _player_1      = new consoleCharacter(1, 1, player_1_char);
            _player_2      = new consoleCharacter(2, w - 3, player_2_char);
            _ball_last     = new consoleCharacter(0, 0, "");
            _player_1_last = new consoleCharacter(0, 0, "");
            _player_2_last = new consoleCharacter(0, 0, "");
        }
예제 #3
0
        static void drawCharacter(consoleCharacter ch)
        {
            Console.SetCursorPosition(ch.Left, ch.Top);
            int i = 0;

            foreach (char x in ch.Character)
            {
                if (x == '\n')
                {
                    ++i;
                    Console.SetCursorPosition(ch.Left, ch.Top + i);
                }
                else
                {
                    Console.Write(x);
                }
            }
        }
예제 #4
0
        static void scaleup(consoleCharacter ch)
        {
            int h = Console.WindowHeight, w = Console.WindowWidth;

            if (ch.Character == ball_char)
            {
                ch.Top  = (int)((float)ch.Top / (float)lasth * (float)Console.WindowHeight);
                ch.Left = (int)((float)ch.Left / (float)lastw * (float)Console.WindowWidth);
                if (ch.Top < 1)
                {
                    ch.Top = 1;
                }
                else if (ch.Top > h - 3)
                {
                    ch.Top = 3;
                }
                if (ch.Left < 3)
                {
                    ch.Left = 3;
                }
                else if (ch.Left > w - 7)
                {
                    ch.Left = w - 7;
                }
            }
            else
            {
                if (ch.Left != 1)
                {
                    ch.Left = w - 3;
                }
                ch.Top = (int)((float)ch.Top / (float)lasth * (float)h);
                if (ch.Top < 1)
                {
                    ch.Top = 0;
                }
                else if (ch.Top > h - 3)
                {
                    ch.Top = h - 3;
                }
            }
        }
예제 #5
0
        static void clearCharacter(consoleCharacter ch)
        {
            if (ch.Left >= Console.WindowWidth || ch.Top >= Console.WindowHeight)
            {
                return;
            }
            Console.SetCursorPosition(ch.Left, ch.Top);
            int i = 0;

            foreach (char x in ch.Character)
            {
                if (x == '\n')
                {
                    ++i;
                    Console.SetCursorPosition(ch.Left, ch.Top + i);
                }
                else
                {
                    Console.Write(' ');
                }
            }
        }
예제 #6
0
 public bool equals(consoleCharacter v)
 {
     return(v.Top == Top && v.Left == Left && v.Character == Character);
 }