首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查看精灵宝可梦是否可以进化

查看精灵宝可梦是否可以进化
EN

Stack Overflow用户
提问于 2021-05-24 21:52:21
回答 1查看 129关注 0票数 0

我这里有Pokemon.cs:

代码语言:javascript
复制
using System;
using System.Collections.Generic;

namespace PokemonPocket{
    public class PokemonMaster{
        public string Name {get;set;}
        public int NoToEvolve {get; set;}
        public  string EvolveTo {get; set;}

        public PokemonMaster(string name, int noToEvolve, string evolveTo){
            this.Name = name;
            this.NoToEvolve = noToEvolve;
            this.EvolveTo = evolveTo;
        }
    }  

这是我一直在编写的代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;

namespace PokemonPocket
{
    class Program
    {
        static void Main(string[] args)
        {
            //PokemonMaster list for checking pokemon evolution availability.    
            List<PokemonMaster> pokemonMasters = new List<PokemonMaster>(){
            new PokemonMaster("Pikachu", 2, "Raichu"),
            new PokemonMaster("Eevee", 3, "Flareon"),
            new PokemonMaster("Charmander", 1, "Charmeleon")
            };
            // Use "Environment.Exit(0);" if you want to implement an exit of the console program
            PokemonMenu();
        }
        static void PokemonMenu() {
    // From now on myDictionary is available for any menu option 
    var myDictionary = new Dictionary<string, string>();
      
    while (true) { // <- loop until exit option (key 'Q') is pressed
    Console.WriteLine("Welcome to Pokemon Pocket App!");
    Console.WriteLine("(1). Add Pokemon to my pocket");
    Console.WriteLine("(2). List Pokemon(s) in my pocket");
    Console.WriteLine("(3). Check if I can evolve Pokemon");
    Console.WriteLine("(4). Evolve Pokemon\n");
    Console.Write("Please only enter [1,2,3,4] or Q to exit:");

    char menu = Convert.ToChar(Console.ReadLine());

    if (menu == '1') { //Part 1
      Console.Write("Enter Pokemon Name :");
      string name = Console.ReadLine();
      Console.Write("Enter Pokemon HP : ");
      int hp = Convert.ToInt32(Console.ReadLine());

      Console.Write("Enter Pokemon EXP : ");
      int exp = Convert.ToInt32(Console.ReadLine());
      if (myDictionary.Count <= 0) { 
        myDictionary.Add("Pokemon's Name", name);
        myDictionary.Add("Pokemon's HP", hp.ToString());
        myDictionary.Add("Pokemon's EXP", exp.ToString());
        Console.WriteLine("Pokemon has been added!");

      }
    }
    else if (menu == '2') { //Part 2
      foreach (var v in myDictionary)
        Console.WriteLine(string.Format("{1}: {0}", v.Value, v.Key));
    }

    else if(menu == '3') { //Part  3

    }
    else if (menu == 'Q') {
      Console.WriteLine("App exited!");
      Environment.Exit(0);
        }
      }
     }
    }
}

在我输入名称hp和exp之后,例如name = "Charmander","80“和"50”,它将被保存到字典中。当我在菜单阶段输入3时,我想让代码检查Pokemon是否可以进化,并编写以下代码:

代码语言:javascript
复制
Charmander --> Charmeleon

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-24 22:45:58

这应该是可行的:

代码语言:javascript
复制
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace PokemonPocket
    {
        class Program
        {
            static void Main(string[] args)
            {
                //PokemonMaster list for checking pokemon evolution availability.    
                List<PokemonMaster> pokemonMasters = new List<PokemonMaster>(){
                new PokemonMaster("Pikachu", 2, "Raichu"),
                new PokemonMaster("Eevee", 3, "Flareon"),
                new PokemonMaster("Charmander", 1, "Charmeleon")
                };
                // Use "Environment.Exit(0);" if you want to implement an exit of the console program
                PokemonMenu(pokemonMasters);
            }
            static void PokemonMenu(List<PokemonMaster> pokemans)
            {
                // From now on myDictionary is available for any menu option 
                var myDictionary = new Dictionary<string, string>();
    
                while (true)
                { // <- loop until exit option (key 'Q') is pressed
                    Console.WriteLine("Welcome to Pokemon Pocket App!");
                    Console.WriteLine("(1). Add Pokemon to my pocket");
                    Console.WriteLine("(2). List Pokemon(s) in my pocket");
                    Console.WriteLine("(3). Check if I can evolve Pokemon");
                    Console.WriteLine("(4). Evolve Pokemon\n");
                    Console.Write("Please only enter [1,2,3,4] or Q to exit:");
    
                    char menu = Convert.ToChar(Console.ReadLine());
    
                    if (menu == '1')
                    { //Part 1
                        Console.Write("Enter Pokemon Name :");
                        string name = Console.ReadLine();
                        Console.Write("Enter Pokemon HP : ");
                        int hp = Convert.ToInt32(Console.ReadLine());
    
                        Console.Write("Enter Pokemon EXP : ");
                        int exp = Convert.ToInt32(Console.ReadLine());
                        if (myDictionary.Count <= 0)
                        {
                            myDictionary.Add("Pokemon's Name", name);
                            myDictionary.Add("Pokemon's HP", hp.ToString());
                            myDictionary.Add("Pokemon's EXP", exp.ToString());
                            Console.WriteLine("Pokemon has been added!");
    
                        }
                    }
                    else if (menu == '2')
                    { //Part 2
                        foreach (var v in myDictionary)
                            Console.WriteLine(string.Format("{1}: {0}", v.Value, v.Key));
                    }
    
                    else if (menu == '3') //Part  3 // HERE IT IS!
                    {
                        if (!myDictionary.TryGetValue("Pokemon's Name", out var myPokemon))
                        {
                            // No pokemon in pocket so just exit
    
                            Console.WriteLine("You have no pokemon!");
                            continue;
                        }
    
                        var matchedPokemon = pokemans.Find(p => p.Name == myPokemon);
    
                        if (matchedPokemon != default)
                        {
                            Console.WriteLine("Can evolve a pokeman!");
                            Console.WriteLine($"{matchedPokemon.Name} --> {matchedPokemon.EvolveTo}");
                        }
                    }
                    else if (menu == 'Q')
                    {
                        Console.WriteLine("App exited!");
                        Environment.Exit(0);
                    }
                }
            }
        }
    }

我将pokemonMasters变量传递给了PokemonMenu,这样菜单就可以看到可用的演变

然后在第三部分的菜单中,我可以尝试从你的字典中获取精灵的名字,如果有的话,我可以尝试在我传入的pokemans列表中找到相同的名字。如果我在那里也找到了匹配,我就可以写出进化。

它不是很漂亮,但它是有效的。如果你想拥有一个以上的字典,那么你用字典来表示你的pokemans的方法是行不通的。您可能应该改用对象列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67673259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档