我正在做一个编程C#的Web类。我想说蝙蝠的权利,我不希望你们为我做我的工作。现在到我的具体/通用的问题。我习惯于编写顺序代码。当我尝试将我的工作代码移到我深入了解的类/方法中时。如何将此代码移至类/方法?
下面的代码示例用于猜谜游戏1-100。我已经尝试了四个小时,直接破解代码到一个单独的类。我设法让用户输入或RND进入课堂。然后主要的逻辑崩溃了。如果RND模块是静态的,但用户输入不是Static等,我似乎得到了最好的结果。最后,我回到了从头开始学习Main的所有内容,并转向您寻求一般指导原则。
我需要在我的脑海中得到这个,所以我可以每次清理我的Main。从正在工作的班级程序忽略屏幕开始。
<--------Code Below
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Uppgift3GissaTalet
{
static class Screen
{
// Screen - Tools that I use every time ignore until end of screen======================================= >
// Methods for screen handling:
//
// Clear Screen ------------------------------------------
static public void cls()
{
Console.Clear();
}
// Set Curser Posittion ----------------------------------
static public void cup(int column, int rad)
{
Console.SetCursorPosition(column, rad);
}
// Key Input --------------------------------------------
static public ConsoleKeyInfo inKey()
{
ConsoleKeyInfo in_key; in_key = Console.ReadKey(); return in_key;
}
// String Input -----------------------------------------
static public string inStr()
{
string in_string; in_string = Console.ReadLine(); return in_string;
}
// Int Input -------------------------------------------
static public int inInt()
{
int int_in; try { int_in = Int32.Parse(Console.ReadLine()); }
catch (FormatException) { Console.WriteLine("Input Error \b"); int_in = 0; }
catch (OverflowException) { Console.WriteLine("Input Owerflow\b"); int_in = 0; }
return int_in;
}
// Float Input -------------------------------------------
static public float inFloat()
{
float float_in; try { float_in = Convert.ToSingle(Console.ReadLine()); }
catch (FormatException) { Console.WriteLine("Input Error \b"); float_in = 0; }
catch (OverflowException) { Console.WriteLine("Input Owerflow\b"); float_in = 0; }
return float_in;
}
// Meny ------------------------------------------------
static public int meny(string rubrik, string m_val1, string m_val2)
{ // Meny med 2 val ---------------------
int menSvar; menyRubrik(rubrik); menyRad(m_val1); menyRad(m_val2); menSvar = menyInm();
return menSvar;
}
static public int meny(string rubrik, string m_val1, string m_val2, string m_val3)
{ // Meny med 3 val ---------------------
int menSvar; menyRubrik(rubrik); menyRad(m_val1); menyRad(m_val2); menyRad(m_val3); menSvar = menyInm();
return menSvar;
}
static public int meny(string rubrik, string m_val1, string m_val2, string m_val3, string m_val4)
{ // Meny med 4 val ---------------------
int menSvar; menyRubrik(rubrik); menyRad(m_val1); menyRad(m_val2); menyRad(m_val3); menyRad(m_val4); menSvar = menyInm();
return menSvar;
}
static public int meny(string rubrik, string m_val1, string m_val2, string m_val3, string m_val4, string m_val5)
{ // Meny med 5 val ---------------------
int menSvar; menyRubrik(rubrik); menyRad(m_val1); menyRad(m_val2); menyRad(m_val3); menyRad(m_val4); menyRad(m_val5); menSvar = menyInm();
return menSvar;
}
static public int meny(string rubrik, string m_val1, string m_val2, string m_val3, string m_val4, string m_val5, string m_val6)
{ // Meny med 6 val ---------------------
int menSvar; menyRubrik(rubrik); menyRad(m_val1); menyRad(m_val2); menyRad(m_val3); menyRad(m_val4); menyRad(m_val5); ; menyRad(m_val6); menSvar = menyInm();
return menSvar;
}
static void menyRubrik(string rubrik)
{ // Meny rubrik --------
cls(); Console.WriteLine("\n\t {0}\n----------------------------------------------------\n", rubrik);
}
static void menyRad(string menyVal)
{ // Meny rad --------
Console.WriteLine("\t {0}", menyVal);
}
static int menyInm()
{ // Meny inmating ------
int mVal; Console.Write("\n\t Menyval : "); mVal = inInt(); return mVal;
}
// Screen - End <========================================
} // screen <----
class Program
{
static void Main(string[] args)
{//Foreign bla bla.
string rubrik = "\tGissa ett tal mellan 1 och 100: ";
Random rnd = new Random();
int slumpTal = rnd.Next(1, 101);
int svar;
int count = 0;
Screen.cls();
//Console.Write("\t\t" + slumpTal); //Used for fixing logic.
Console.WriteLine("\n\t {0}\n\t----------------------------------------------\n", rubrik);
Console.Write("\tSkriv ditt tal: ");
svar = Screen.inInt();
count++;
//Foreign yadda yadda.
do
{
if (svar < 1 || svar > 100) //Påminn användaren om att hålla sig inom ramarna.
{
System.Console.Write("\tTalet du söker är inom intervallet 1-100!", svar);
Console.Write("\n\tSkriv ditt tal: ");
svar = Screen.inInt();
}
else if (slumpTal > svar && (slumpTal - svar < 6)) //Getting hotter.
{
System.Console.Write("\tTalet du söker är större än {0} men du är nära nu!", svar);
Console.Write("\n\tSkriv ditt tal: ");
svar = Screen.inInt();
count++;
}
else if (slumpTal > svar) //Ge ledtråd om att användaren måste skriva ett större tal.
{
System.Console.Write("\tTalet du söker är större än {0}.", svar);
Console.Write("\n\tSkriv ditt tal: ");
svar = Screen.inInt();
count++;
}
else if (slumpTal < svar && (svar - slumpTal < 6)) //Getting hotter.
{
System.Console.Write("\tTalet du söker är mindre än {0} men du är nära nu!", svar);
Console.Write("\n\tSkriv ditt tal: ");
svar = Screen.inInt();
count++;
}
else if (slumpTal < svar) //Ge ledtråd om att användaren måste skriva ett lägre tal.
{
System.Console.Write("\tTalet du söker är mindre än {0}.", svar);
Console.Write("\n\tSkriv ditt tal: ");
svar = Screen.inInt();
count++;
}
} while (svar != slumpTal);
Screen.cls();
Console.ForegroundColor = ConsoleColor.Green; //Changing colour(sic!) at win.
Console.Write("\n\n\t\tBra jobbat, du löste problemet. Rätt svar är {0}!\n\t\tDu tog {1} försök på dig.", slumpTal, count);
Screen.inKey();
}//<------------Main
}//<===========Program
}
我真的不喜欢你格式化你的代码的方式。它如此团结起来使阅读变得更加困难。看看关于C#编码约定的文档https://msdn.microsoft.com/en-us/library/ff926074.aspx?f=255&MSPPError=-2147217396 –
我的第一篇文章,所以我犯规了。我会通读它并表现得更好。 Mea Culpa。 – Paladin
没关系,如果你不习惯OOP,那么你就不习惯构建布局的“更优选”方式。这只是为了让它可读。大多数分号后使用换行符; –