• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

cav

c# jogo mastermind

11 mensagens neste tópico

Boas...foi me pedida na escola para realizar o jogo do mastermind...Se me poderem dar algumas dicas agradecia.....Obrigado!!! :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Que tipo de ajuda necessitas?

É que assim a atirar ao ar podes levar repostas do tipo: o tabuleiro pode ser representado por um array...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

deve ser mais do tipo, em modo consola com numeros de 1 a 4 envez de cores... :)

se poderem dar umas dicas, tipo eu ja fiz um random para gerar os números automaticamente, depois so há um problema, nao sei como estruturar o programa, tipo i que fazer primeiro para rodar perfeitamente....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de parar, pensar e desenhar o programa antes de escreveres código.

Pensa como o jogo deve funcionar, tipo, o jogo arrancar e... ?

Escreve um caso de uso de um jogo, onde descreves como o utilizador interage e como o programa deve responder.

Depois divide isso em pequenos módulos e implementa um de cada vez.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é uma aplicação em C# e é um jogo simples, podes definir uma classe q representa o teu jogo.

Esta classe deve ter:

- Variaveis que guardam os valores (isto pode ser feito com campos ou propriedades, lê o q significam estas 2 coisas.)

- Acções do jogo. (Isto vão ser os métodos q a interface (gráfica ou consola, seja o q for) vai chamar, devem fazer toda a lógica necessária ao jogo de modo a q a apresentação apenas se limite a mostrar dados). Estes métodos devem ser testados um a um assim q são feitos, para evitar complicações mais tarde.

- Construtor q inicia as variaveis do jogo, por exemplo: as cores em q se deve acertar.

Antes de fazeres esta classe não faças nd q tenha a ver com a apresentação, isso é o passo seguinte.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas....  ja consegui mais ou menos, mas tem um pequeno problema....


private static bool Verificar(int num, int numA)

        {

            if (num == numA)

            {

                return true;

            }

            else

            {

                return false;

            }

        }

        static void Main(string[] args)

        {

            //Variaveis

            int[] numAle = new int[4];

            char[] numUtilizador = new char[4];

            int contL = 0, num = 0, numA = 0, ContPos = 0;

            bool VerificaFim = true;

            // declarar os numeros random

            Random rnd = new Random();

            for (int i = 0; i < 4; i++)

            {

                numAle = rnd.Next(1, 5);

            }

            //Intru..

            Console.Write("\n▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒");

            Console.SetCursorPosition(28, 10);

            Console.Write("\t..Master Mind..");

            Console.SetCursorPosition(10, 11);

            Console.Write("Neste Jogo Voce tera de acertar nos 4 numeros aleatorios\n\t\t  e suas posições escolhidos pelo programa\n \t\t\ttera 10 tentativas para  Vencer!! \n \t\t\t\tBom Jogo!!");

            Console.SetCursorPosition(10, 14);

            Console.Write("\t_______________________________________________");

            Console.SetCursorPosition(10, 15);

            Console.Write("\t  Pressione ALGUMA TECLA! para Começar a jogar");

            Console.SetCursorPosition(10, 16);

            Console.Write("\t_______________________________________________");

            Console.Write("\n\n\n\n\n▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒");

            Console.ReadKey();

            Console.Clear();

            //fim Intru

            //2ºparte

            for (int i = 10; i > 0; i--)

            {

                int cont = 0;

                Console.Write("\n▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒");

                Console.SetCursorPosition(15, 4);

                Console.Write("_______________________________________________");

                Console.SetCursorPosition(28, 5);

                Console.Write("Tem {0} tentativas", i);// Ira mudar conforme vao pondo as tentativas

                Console.SetCursorPosition(15, 6);

                Console.Write("_______________________________________________");

                Console.SetCursorPosition(15, 7);

                Console.Write("\t\t????\t -> Os numeros são somente de 1 a 4");

                //melhorar

                for (int J = 0; J < 4; J++)

                {

                    //escreve os numeros digitalizados, e muda de linha de 4 em 4 digitos

                    Console.SetCursorPosition(15 + cont, 8 + contL);

                    numUtilizador[J] = char.Parse(Console.ReadLine());

                    cont++;

                }

                ContPos = 0;

                for (int J = 0; J < 4; J++)

                {

                    num = numAle[J];

                    numA = numUtilizador[J];

                    if (Verificar(num, numA))

                    {

                        ContPos++;

                    }

                }

                // escrever as possiões correctas

                if (ContPos == 4)

                {

                    Console.Clear();

                    Console.SetCursorPosition(15, 15);

                    Console.Write("VENCESTE");

                    Console.SetCursorPosition(15, 16);

                    Console.Write("PARABENS!! preciona ALGUMA TECLA para sair!");

                    i = 0;

                    VerificaFim = false;

                }

                else

                {

                    Console.SetCursorPosition(50, 22);

                    Console.Write("Posiçoes correctas:|||| {0} |||", ContPos);

                    contL++;

                }

            }

            if (VerificaFim)

            {

                Console.Clear();

                Console.SetCursorPosition(15, 15);

                Console.Write("PERDESTE!!!");

                Console.SetCursorPosition(15, 16);

                Console.Write("Talvez para a proxima!! preciona ALGUMA TECLA para sair!");

            }

            Console.ReadKey();

o programa roda, so que enves de poder-mos introduzir os quatro numeros seguidos e carregar enter depois para confirmar, temos que introduzir um numero de cada ves e enter em cada um....

será que me podem dizer u que esta mal, ou que parte do codigo tenho que alterar???

:biggrin:

esta feito em modo consola

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao está a rodar correctamente, serve mais para o jogo ficar melhorado, se alguem souber onde esta o erro digam sff. tou farto de ver em varios foruns e nada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao está a rodar correctamente, serve mais para o jogo ficar melhorado, se alguem souber onde esta o erro digam sff. tou farto de ver em varios foruns e nada.

Em vez de pedires para ler 4 números, faz a leitura de uma linha inteira, e depois fazes o parse dos 4 números tu própria, usando Regex (Regular Expressions), ou os métodos Int.TryParse e string.Substring.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em vez de leres um número, lês uma string, ou seja, se o utilizador inserir 1 2 3 4, recebes algo como "1 2 3 4" no programa. Depois o método Substring vai devolver-te "1", "2", "3", e "4". Usas o Int.TryParse em cada um desses ("1", "2", "3", e "4") e ele vai devolver-te os números 1, 2, 3, 4.

Tens é de ter cuidado quando o utilizador introduz coisas inválidas, como "a b c d". Ou só insere 1, 2, ou 3 números.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora