Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重构C#代码以转换为WPF应用程序(Visual Studio)_C#_Visual Studio_Refactoring - Fatal编程技术网

重构C#代码以转换为WPF应用程序(Visual Studio)

重构C#代码以转换为WPF应用程序(Visual Studio),c#,visual-studio,refactoring,C#,Visual Studio,Refactoring,对于这个猜谜游戏,我想重构这个玻璃炮代码,以便转换为WPF应用程序。我可以用任何方法来缩短这个/成功转换和VS上的提示,一般来说,将不胜感激 我正在使用WPF应用程序(core)作为此程序的模板。以及使用Microsoft教程来构建它。这个项目的UI已经基本完成,只需要导入这个代码 请注意,我在上高中,所以我的知识面并没有那么大 编辑:好的 首先,我想用这段代码切断不必要的“IF”和“console.write”语句,以获得一个干净的解决方案 其次,我将解决方案分为两个文件,一个App.xaml

对于这个猜谜游戏,我想重构这个玻璃炮代码,以便转换为WPF应用程序。我可以用任何方法来缩短这个/成功转换和VS上的提示,一般来说,将不胜感激

我正在使用WPF应用程序(core)作为此程序的模板。以及使用Microsoft教程来构建它。这个项目的UI已经基本完成,只需要导入这个代码

请注意,我在上高中,所以我的知识面并没有那么大

编辑:好的

  • 首先,我想用这段代码切断不必要的“IF”和“console.write”语句,以获得一个干净的解决方案
  • 其次,我将解决方案分为两个文件,一个App.xaml.cs文件和一个MainWindow.xaml.cs文件。在App.xaml文件中,我放置了我所有的公共类(例如:guess、rnd等)。而MainWindow.Xaml文件是我放置“游戏逻辑”的地方
  • 到目前为止,我所做的是;对于MainWindow.xaml,有两种方法。初始化rnd计算的公共方法。还有一个“按钮点击”的私有方法,一旦用户提交了他们的猜测,“游戏”就会看到它是否匹配,并显示他们是对还是错,包括他们正确猜测所花的时间

        class MainClass 
        {
         public static void Main (string[] args) 
        {
        Random rnd = new Random();
        int ans = rnd.Next(1,10);
        Console.WriteLine("Pick an integer between 1 and 10");
        
        var num1 = Console.ReadLine();
        int v1 = Convert.ToInt32(num1);
         
        if(v1 == ans)
        {
          int count = 1;
          Console.WriteLine($"{v1} is correct. You Win!");
          Console.WriteLine($"It took you to {count} gues find the number {ans}." );
        }
        else
        {
          if(v1<ans){
            Console.WriteLine("To high");
          }
          else
          Console.WriteLine("To low");
          
          Console.WriteLine("Pick an interger between 1 and 10");
          Console.WriteLine($"{v1} isn't correct. Try again!");
          var num2 = Console.ReadLine();
          int v2 = Convert.ToInt32(num2);
            if(v2 == ans)
            {
              int count = 2;
              Console.WriteLine($"{v2} is correct. You Win!");
              Console.WriteLine($"It took you {count} gueses to find the number {ans}" );
            }
            else
            {
              if(v1<ans){
              Console.WriteLine("To high");
              }
              else
              Console.WriteLine("To low");
              
              Console.WriteLine("Pick an interger between 1 and 10");
              Console.WriteLine($"{v2} isn't correct. Try again!");
              var num3 = Console.ReadLine();
              int v3 = Convert.ToInt32(num3);
                if(v3 == ans)
                {
                  int count = 3;
                  Console.WriteLine($"{v3} is correct. You Win!");
                  Console.WriteLine($"It took you {count} gueses to find the number {ans}" );
                }
                else
                {
                  if(v1<ans){
                  Console.WriteLine("To high");
                  }
                  else
                  Console.WriteLine("To low");
                  
                  Console.WriteLine("Pick an interger between 1 and 10");
                  Console.WriteLine($"{v3} isn't correct");
                }
                Console.WriteLine($"You Lose! The correct number is {ans}. ");
            }
          }  
        }
      }
    
    class类main类
    {
    公共静态void Main(字符串[]args)
    {
    随机rnd=新随机();
    int ans=rnd.Next(1,10);
    WriteLine(“选择1到10之间的整数”);
    var num1=Console.ReadLine();
    int v1=转换为32(num1);
    如果(v1==ans)
    {
    整数计数=1;
    WriteLine($“{v1}正确,您赢了!”);
    WriteLine($“您花了{count}gues找到了{ans}号。”);
    }
    其他的
    {
    
    如果(v1这里发生了这么多事情,我们需要很多时间来解释

    让我试着了解一下基本情况。C#中的类是状态和行为的蓝图

    在这个术语中,您可以将代码建模为
    GameRound

    public class GameRound {
        private int noOfTries;
        private int maxNoOfTries;
        private int correctNumber;
        private bool success;
    
        public bool HasRoundEnded { get {
            return maxNoOfTries == noOfTries;
          }
        }
    
        public bool Success { get {
            return success;
          }
        }
    
        public GameRound() {
            Random rnd = new Random();
            int ans = rnd.Next(1,10);
            correctNumber = ans;
        }
    
        public bool GuessSolution(int guess) {
            if (guess == correctNumber) {
                this.success = true;
            } else {
                this.success = false;
                maxNoOfTries++;
            }
            return this.success;
        }
    
    您可以看到,您的大部分逻辑都包含在一个类中。我将把它留给您去弄清楚如何使用它

    您会注意到,对Console.Write或read没有依赖关系。您可以在Console应用程序、UI甚至网站中使用这些代码。之所以会出现这种情况,是因为我们将类的关注点分离出来,只对游戏轮进行建模


    另一条建议是,在提供的类中使用
    while
    循环,以解决控制台应用程序中的问题。这样,您将了解如何使用类的重复结构和对象。

    嗨,TheNijuu,欢迎使用SO!请求开放式建议和重构通常不会得到太多响应。我想建议做几件事:1)指出你认为特别脆弱或难看的部分代码,2)描述你认为转换所需的内容,3)最重要的是:向我们展示你已经尝试过的内容。祝你好运!