您可以使用布尔变量来向循环发出游戏结束的信号。该命令必须在循环内查询,并且由于循环开始时不知道该命令,所以我会将循环条件放在循环的末尾。
bool doExit = false;
do {
string command = Console.ReadLine().ToLower();
switch (command) {
case "exit":
case "quit":
doExit = true;
break;
case "otherCommand":
HandleOtherCommand();
break;
case "?":
case "h":
case "help":
PrintHelp();
break;
default:
Console.WriteLine("Invalid command!");
PrintHelp();
break;
}
} while (!doExit);
使用布尔变量的优点是,当满足其他条件时,您可以轻松终止游戏。例如,当玩家赢得或输掉游戏时。
现在来说说方法。您可以将方法放在同一源代码 (Program.cs) 中或创建新类。在 Program.cs 你会写类似
private static void PrintHelp()
{
Console.WriteLine("Valid commands:");
Console.WriteLine("help, h, ?: Print this help.");
Console.WriteLine("exit, quit: End this game.");
Console.WriteLine("...");
}
请注意,由于该Main
方法是静态的,因此同一类中的其他方法也必须是静态的。如果您正在为命令创建其他类,您可以选择是否要创建静态类。静态类只是放置方法的地方。
static class GameCommands
{
// The `public` modifier makes it visible to other classes.
public static void PrintHelp()
{
...
}
public static void SomeOtherCommand()
{
...
}
}
className.MethodName()
您可以使用语法调用此类方法。
GameCommands.PrintHelp();
如果您必须存储不同的状态(例如分数)。创建非静态类是合适的。您可以创建此类称为类实例或对象的类的副本。这实际上只复制了类的状态,而不是方法代码。非静态方法可以作用于这种状态(字段、属性)。
class Player
{
// Constructor. Initializes an instance of the class (an object).
public Player (string name)
{
Name = name;
}
// Property
public int Score { get; private set; }
// Property
public string Name { get; private set; }
// Instance method (non-static method) having a parameter.
public void IncreaseScoreBy(int points)
{
Score += points;
}
public void PrintWinner()
{
Console.WriteLine("The winner is {0} with a score of {2} points." Name, Score);
}
}
你可以使用这样的类
Player player1 = new Player("John"); // Pass an argument to the constructor.
Player player2 = new Player("Sue");
player1.IncreaseScoreBy(5);
player2.IncreaseScoreBy(100);
if (player1.Score > player2.Score) {
player1.PrintWinner();
} else if (player2.Score > player1.Score)
player2.PrintWinner();
} else {
Console.WriteLine("The score is even!");
}
到目前为止,我们使用没有返回值的方法。这由替换返回类型的 void 关键字表示。
void MethodWithNoReturnValue() { ... }
如果你有一个返回值(即你的方法是一个函数),你必须指定返回类型。该return
语句终止函数并指定返回值。
double Reciprocal(double x)
{
return 1.0 / x;
}
你会在同一个班级里这样称呼它
double y = Reciprocal(x);
或者如果它是静态的,则在它前面加上对象名称或类名称。