Beispiel #1
0
        void DesenharTela()
        {
            int x, y, a;
            int numLinha = 3; // espaçamento da HUD

            //Cria uma copia zerada do mapa
            Mapas temp        = new Mapas();
            Mapa  mapaDesenho = new Mapa(mapa.Grid);

            var originalColor = Console.ForegroundColor;

            Console.SetCursorPosition(0, 0);
            Console.WriteLine("PONTUAÇÃO: {0}    TEMPO: {1}:{2}", hud.pontos, hud.minutos, hud.segundos);
            Console.SetCursorPosition(0, 1);
            Console.Write(new string(' ', Console.WindowWidth));
            Console.SetCursorPosition(0, 1);
            Console.Write("CHAVES: ");

            for (a = 0; a < chaves.Count(); a++)
            {
                Console.ForegroundColor = chaves[a].Cor;
                Console.Write(chaves[a].caractere.ToString());
                Console.Write(" ");
            }
            Console.ForegroundColor = originalColor;
            for (x = 0; x < mapaDesenho.Grid.GetLength(0); x++)
            {
                Console.SetCursorPosition(0, numLinha);
                for (y = 0; y < mapaDesenho.Grid.GetLength(1); y++)
                {
                    if (y == personagem.x && x == personagem.y)
                    {
                        Console.ForegroundColor = personagem.posicao.Cor;
                        Console.Write(personagem.posicao.caractere.ToString());
                    }
                    else
                    {
                        Console.ForegroundColor = mapaDesenho.Grid[x, y].Cor;
                        Console.Write(mapaDesenho.Grid[x, y].GetChar().ToString());
                    }
                }
                numLinha++;
            }
            Console.CursorVisible   = false;
            Console.ForegroundColor = originalColor;
        }
Beispiel #2
0
        public void ProcessarMovimento(ConsoleKey botaoApertado)
        {
            int moveX = 0;
            int moveY = 0;

            switch (botaoApertado)
            {
            case ConsoleKey.LeftArrow:
                moveX         = -1;
                teveMovimento = true;
                break;

            case ConsoleKey.RightArrow:
                moveX         = 1;
                teveMovimento = true;
                break;

            case ConsoleKey.UpArrow:
                moveY         = -1;
                teveMovimento = true;
                break;

            case ConsoleKey.DownArrow:
                moveY         = 1;
                teveMovimento = true;
                break;

            case ConsoleKey.R:
                hud        = new Hud();
                mapa       = new Mapa();
                personagem = new Personagem();
                chaves     = new List <Posicao>();
                this.StartGame();
                break;

            default:
                teveMovimento = false;
                break;
            }
            if (teveMovimento)
            {
                int newX = personagem.x + moveX;
                int newY = personagem.y + moveY;
                switch (mapa.Grid[newY, newX].tipo)
                {
                case "caminho":
                    if (!personagem.rastro)
                    {
                        personagem.x = newX;
                        personagem.y = newY;
                    }
                    else
                    {
                        mapa.Grid[newY, newX] = pos.novo("rastro", personagem.posicao.Cor);
                        personagem.x          = newX;
                        personagem.y          = newY;
                    }
                    break;

                case "parede":
                    teveMovimento = false;
                    break;

                case "rastro":
                    personagem.x = newX;
                    personagem.y = newY;
                    break;

                case "chave":
                    if (personagem.posicao.Cor == mapa.Grid[newY, newX].Cor)
                    {
                        chaves.Add(mapa.Grid[newY, newX]);
                        mapa.Grid[newY, newX] = pos.novo("caminho");
                    }
                    personagem.x = newX;
                    personagem.y = newY;
                    break;

                case "porta":
                    if (AbrePorta(mapa.Grid[newY, newX]))
                    {
                        personagem.x = newX;
                        personagem.y = newY;
                    }
                    else
                    {
                        teveMovimento = false;
                    }
                    break;

                case "mudacor":
                    personagem.posicao.Cor = mapa.Grid[newY, newX].Cor;
                    personagem.x           = newX;
                    personagem.y           = newY;
                    break;

                case "passagem":
                    if (!personagem.rastro)
                    {
                        if (personagem.posicao.Cor == mapa.Grid[newY, newX].Cor)
                        {
                            //mapa.Grid[newY, newX] = pos.novo("caminho");
                            personagem.x = newX;
                            personagem.y = newY;
                        }
                        else
                        {
                            teveMovimento = false;
                        }
                    }
                    else
                    {
                        if (personagem.posicao.Cor == mapa.Grid[newY, newX].Cor)
                        {
                            mapa.Grid[newY, newX] = pos.novo("rastro", personagem.posicao.Cor);
                            personagem.x          = newX;
                            personagem.y          = newY;
                        }
                        else
                        {
                            teveMovimento = false;
                        }
                    }
                    break;

                case "coleta":
                    if (personagem.posicao.Cor == mapa.Grid[newY, newX].Cor)
                    {
                        personagem.rastro     = true;
                        mapa.Grid[newY, newX] = pos.novo("rastro", personagem.posicao.Cor);
                        personagem.x          = newX;
                        personagem.y          = newY;
                    }
                    else
                    {
                        personagem.x = newX;
                        personagem.y = newY;
                    }
                    break;

                case "entrega":
                    if (personagem.posicao.Cor == mapa.Grid[newY, newX].Cor && personagem.rastro)
                    {
                        chaves.Clear();
                        mapa.Grid[newY, newX] = pos.novo("rastro", personagem.posicao.Cor);
                        personagem.rastro     = false;
                        if (mapa.Grid[newY, newX].Cor == mapa.Grid[11, 13].Cor)
                        {
                            mapa.Grid[11, 13] = pos.novo("caminho");
                        }
                        if (mapa.Grid[newY, newX].Cor == mapa.Grid[11, 27].Cor)
                        {
                            mapa.Grid[11, 27] = pos.novo("caminho");
                        }
                        if (mapa.Grid[newY, newX].Cor == mapa.Grid[11, 41].Cor)
                        {
                            mapa.Grid[11, 41] = pos.novo("caminho");
                        }
                        if (mapa.Grid[newY, newX].Cor == mapa.Grid[12, 55].Cor)
                        {
                            mapa.Grid[12, 55] = pos.novo("caminho");
                        }
                        personagem.x = newX;
                        personagem.y = newY;
                    }
                    else
                    {
                        teveMovimento = false;
                    }
                    break;

                case "portãofase":
                    teveMovimento = false;
                    break;

                case "bônus":
                    hud.pontos            = +500;
                    mapa.Grid[newY, newX] = pos.novo("caminho");
                    personagem.x          = newX;
                    personagem.y          = newY;
                    break;

                case "endgame":
                    mapa.Grid[newY, newX] = pos.novo("caminho");
                    personagem.x          = newX;
                    personagem.y          = newY;
                    Console.Clear();
                    Console.SetCursorPosition(0, 0);
                    Console.WriteLine("PARABÉNS!!! Você concluiu o Lamparina");
                    Console.WriteLine("sua pontuação foi de {0}. Com um tempo de sobra de {1}{2}", hud.pontos, hud.minutos, hud.segundos);
                    Console.WriteLine("Aperte esc para sair !", hud.pontos, hud.minutos, hud.segundos);
                    Console.ReadKey();
                    break;

                default:
                    break;
                }
            }
        }