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