我正在编写C#编程的Web课程。我想对蝙蝠说对,我不希望你们为我做我的工作。现在我的具体/一般问题。我习惯于编写顺序代码。当我尝试将我的工作代码移动到类/方法时,我会深入研究。
下面的代码示例是针对猜谜游戏1-100。我已经尝试了四个小时直接将代码分解为一个单独的类。我设法将用户输入或RND输入到类中。然后主要的逻辑崩溃了。如果RND块是静态但用户输入不是静态等等,似乎我得到了最好的结果。最后,我回过头来讨论Main中的所有内容,然后转向你寻找通用指南。
我需要知道这一点,所以我每次都可以清理我的主人。从正在运行的Class Program Ignore Screen开始。
<--------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
}
答案 0 :(得分:0)
我只是试图将其分解一下。在不使用英文命名的情况下解释您正在创建的内容更加困难,但原则是相同的。
在您已创建的课程的主要内容中创建对象。
class Program
{
static void Main(string[] args)
{
string rubrik;
string m_val1;
string m_val2;
Utilities utility = new Utilities();
string str = Console.ReadLine();
int myint = utility.inInt(str);
MyClass myclass = new MyClass();
// or
// getting these values before doing so
MyClass class = new MyClass(rubrik, m_val1, m_val2);
myclass.Method(myint); // etc
将传入的变量可用于类方法 或者可能成为该类实例化的初始化者。
public class MyClass
{
// class members
// eg ???
public string Rubrik {get; set;}
// constructors
public MyClass(){}
public MyClass(string rubrik, string m_val1, string m_val2)
{
Rubrik = rubrik;
// and so on.
}
// TODO .. add these menyRad(m_val1);
// menyRad(m_val2); menyRad(m_val3);
// menyRad(m_val4); menSvar = menyInm();
public int meny(string rubrik, string m_val1, string m_val2)
{
int menSvar;
// Use class members to do some calculation and return the value
return menSvar;
}
// etc
}
为任何管家保留方法创建单独的Utilities类。
public class Utilities
{
// Int Input -------------------------------------------
public int inInt(string input)
{
int int_in;
try
{
int_in = Int32.Parse(intput);
}
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 -------------------------------------------
public float inFloat(string input)
{
... etc
}
}