Beispiel #1
0
        static void Main(string[] args)
        {
            #region Limitando Tamanho do console
            Console.Title        = "JOGO GOURMET MÁRIO";
            Console.WindowWidth  = 50;
            Console.WindowHeight = 15;
            DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_MINIMIZE, MF_BYCOMMAND);
            DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_MAXIMIZE, MF_BYCOMMAND);
            DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_SIZE, MF_BYCOMMAND);
            #endregion

            string nomePrato;
            string tipoPrato;
            Prato  PratoAux;

            #region INICIALIZANDO A LISTA DE PRATOS COM O PRIMEIRO PRATO E CARACTERISTICA

            List <Prato> crcstP = new List <Prato>();
            crcstP.Add(new Prato
            {
                tipo  = "MASSA",
                prato = "LASANHA"
            });
            crcstP.Add(new Prato
            {
                tipo  = "",
                prato = "BOLO DE CHOCOLATE"
            });

            #endregion

            while (true)
            {
                FuncoesAuxiliares.WriteReadConsole("Pense em um prato que gosta!!!", false, false);
                foreach (Prato item in crcstP)
                {
                    if (item.tipo.Trim().Equals(""))
                    {
                        if (item.percorrePratos(1))
                        {
                            break;
                        }
                        else
                        {
                            PratoAux       = new Prato();
                            PratoAux.tipo  = item.tipo;
                            PratoAux.prato = item.prato;

                            nomePrato = FuncoesAuxiliares.WriteReadConsole("Qual prato você pensou? ", true, false);
                            tipoPrato = FuncoesAuxiliares.WriteReadConsole(string.Format("Complete.... \n\n{0} é ____,\n mas {1} não. : ", nomePrato, item.prato.ToUpper().Trim()), true, false);

                            crcstP.RemoveAt(crcstP.Count - 1);
                            crcstP.Add(new Prato
                            {
                                prato = nomePrato,
                                tipo  = tipoPrato
                            });
                            crcstP.Add(new Prato
                            {
                                prato = PratoAux.prato,
                                tipo  = PratoAux.tipo
                            });
                            break;
                        }
                    }
                    else
                    {
                        if (item.percorrePratos(0))
                        {
                            break;
                        }
                    }
                }
            }
        }
Beispiel #2
0
        public bool percorrePratos(int pratoOuTipo)
        {
            #region Caso a primeira pergunta seja por Tipo de Prato
            if (pratoOuTipo == 0)
            {
                entrada = FuncoesAuxiliares.WriteReadConsole(string.Format("O prato que você pensou... \nÉ {0}? (S/N): ", tipo.ToUpper().Trim()), true, true);
                if (entrada.Trim().Equals("S"))
                {
                    //Verifica se o Prato atual tem Pratos em sua lista...
                    if (pratos != null && pratos.Count > 0)
                    {
                        foreach (Prato item in pratos)
                        {
                            entrada = FuncoesAuxiliares.WriteReadConsole(string.Format("O prato que você pensou... \nÉ {0}? (S/N): ", item.tipo.ToUpper().Trim()), true, true);
                            if (entrada.Trim().Equals("S"))
                            {
                                /*caso o a lista de pratos, contenha o tipo de prato que pensou ele percorre a lista interna executando a recursividade no objeto...
                                 * caso contrário, ele indagará se o prato imaginado é o corrente...
                                 */
                                if (item.pratos != null && item.pratos.Count > 0)
                                {
                                    if (item.percorrePratos(2))
                                    {
                                        return(true);
                                    }
                                }
                                else if (item.percorrePratos(1))
                                {
                                    return(true);
                                }
                                else
                                {
                                    nomePrato = FuncoesAuxiliares.WriteReadConsole("Qual prato você pensou? ", true, false);
                                    tipoPrato = FuncoesAuxiliares.WriteReadConsole(string.Format("Complete.... \n\n{0} é ____,\n mas {1} não. : ", nomePrato, item.prato.ToUpper().Trim()), true, false);

                                    if (item.pratos != null && item.pratos.Count > 0)
                                    {
                                        item.pratos.Add(new Prato
                                        {
                                            tipo  = tipoPrato,
                                            prato = nomePrato
                                        });
                                    }
                                    else
                                    {
                                        item.pratos = new List <Prato>();
                                        item.pratos.Add(new Prato
                                        {
                                            tipo  = tipoPrato,
                                            prato = nomePrato
                                        });
                                    }
                                    return(true);
                                }
                            }
                        }

                        entrada = FuncoesAuxiliares.WriteReadConsole(string.Format("O prato que você pensou... \nÉ {0}? (S/N): ", this.prato.ToUpper().Trim()), true, true);
                        if (entrada.Trim().Equals("S"))
                        {
                            FuncoesAuxiliares.WriteReadConsole("Acertei de novo!", false, false);
                        }
                        else
                        {
                            nomePrato = FuncoesAuxiliares.WriteReadConsole("Qual prato você pensou? ", true, false);
                            tipoPrato = FuncoesAuxiliares.WriteReadConsole(string.Format("Complete.... \n\n{0} é ____,\n mas {1} não. : ", nomePrato, this.prato.ToUpper().Trim()), true, false);

                            if (pratos != null && pratos.Count > 0)
                            {
                                pratos.Add(new Prato
                                {
                                    tipo  = tipoPrato,
                                    prato = nomePrato
                                });
                            }
                            else
                            {
                                pratos = new List <Prato>();
                                pratos.Add(new Prato
                                {
                                    tipo  = tipoPrato,
                                    prato = nomePrato
                                });
                            }
                        }
                        return(true);
                    }
                    //Senão, ele pergunta se o prato que você pensou é o corrente... caso não seja, ele solicitará novamente que indique o prato imaginado para a lista de pratos, do prato corrente...
                    else
                    {
                        entrada = FuncoesAuxiliares.WriteReadConsole(string.Format("O prato que você pensou... \nÉ {0}? (S/N): ", this.prato.ToUpper().Trim()), true, true);
                        if (entrada.Trim().Equals("S"))
                        {
                            FuncoesAuxiliares.WriteReadConsole("Acertei de novo!", false, false);
                        }
                        else
                        {
                            nomePrato = FuncoesAuxiliares.WriteReadConsole("Qual prato você pensou? ", true, false);
                            tipoPrato = FuncoesAuxiliares.WriteReadConsole(string.Format("Complete.... \n\n{0} é ____,\n mas {1} não. : ", nomePrato, this.prato.ToUpper().Trim()), true, false);

                            pratos = new List <Prato>();
                            pratos.Add(new Prato
                            {
                                tipo  = tipoPrato,
                                prato = nomePrato
                            });
                        }
                        return(true);
                    }
                }
            }
            #endregion
            #region Caso a primeira pergunta seja por Nome do Prato
            else if (pratoOuTipo == 1)
            {
                entrada = FuncoesAuxiliares.WriteReadConsole(string.Format("O prato que você pensou... \nÉ {0}? (S/N): ", this.prato.ToUpper().Trim()), true, true);
                if (entrada.Trim().Equals("S"))
                {
                    FuncoesAuxiliares.WriteReadConsole("Acertei de novo!", false, false);
                    return(true);
                }
                else
                {
                    if (pratos != null && pratos.Count > 0)
                    {
                        foreach (Prato item in pratos)
                        {
                            entrada = FuncoesAuxiliares.WriteReadConsole(string.Format("O prato que você pensou... \nÉ {0}? (S/N): ", item.tipo.ToUpper().Trim()), true, true);
                            if (entrada.Trim().Equals("S"))
                            {
                                if (item.percorrePratos(1))
                                {
                                    return(true);
                                }
                            }
                        }
                    }
                    return(false);
                }
            }
            #endregion
            #region Caso a primeira pergunta seja por Tipo de Prato e o prato em questão tenha SubPratos na sua lista
            else
            {
                foreach (Prato item in pratos)
                {
                    entrada = FuncoesAuxiliares.WriteReadConsole(string.Format("O prato que você pensou... \nÉ {0}? (S/N): ", item.tipo.ToUpper().Trim()), true, true);
                    if (entrada.Trim().Equals("S"))
                    {
                        if (item.pratos != null && item.pratos.Count > 0)
                        {
                            if (item.percorrePratos(2))
                            {
                                return(true);
                            }
                        }
                        else if (item.percorrePratos(1))
                        {
                            return(true);
                        }
                        else
                        {
                            nomePrato = FuncoesAuxiliares.WriteReadConsole("Qual prato você pensou? ", true, false);
                            tipoPrato = FuncoesAuxiliares.WriteReadConsole(string.Format("Complete.... \n\n{0} é ____,\n mas {1} não. : ", nomePrato, item.prato.ToUpper().Trim()), true, false);

                            if (item.pratos != null && item.pratos.Count > 0)
                            {
                                item.pratos.Add(new Prato
                                {
                                    tipo  = tipoPrato,
                                    prato = nomePrato
                                });
                            }
                            else
                            {
                                item.pratos = new List <Prato>();
                                item.pratos.Add(new Prato
                                {
                                    tipo  = tipoPrato,
                                    prato = nomePrato
                                });
                            }
                            return(true);
                        }
                    }
                }

                entrada = FuncoesAuxiliares.WriteReadConsole(string.Format("O prato que você pensou... \nÉ {0}? (S/N): ", this.prato.ToUpper().Trim()), true, true);
                if (entrada.Trim().Equals("S"))
                {
                    FuncoesAuxiliares.WriteReadConsole("Acertei de novo!", false, false);
                }
                else
                {
                    nomePrato = FuncoesAuxiliares.WriteReadConsole("Qual prato você pensou? ", true, false);
                    tipoPrato = FuncoesAuxiliares.WriteReadConsole(string.Format("Complete.... \n\n{0} é ____,\n mas {1} não. : ", nomePrato, this.prato.ToUpper().Trim()), true, false);

                    if (pratos != null && pratos.Count > 0)
                    {
                        pratos.Add(new Prato
                        {
                            tipo  = tipoPrato,
                            prato = nomePrato
                        });
                    }
                    else
                    {
                        pratos = new List <Prato>();
                        pratos.Add(new Prato
                        {
                            tipo  = tipoPrato,
                            prato = nomePrato
                        });
                    }
                }
                return(true);
            }
            #endregion
            return(false);
        }