[英]How do I change a variable outside of a class in C#?
我正在制作一个非常简单的多项选择控制台游戏。 我使用枚举创建了一个有限状态机,如果 else 状态全部在 while 循环中(while game = true)。
问题是,在 class level.level1(包含级别信息)内部,它需要将 myState 更改为主程序中的新状态,但它不能影响它。 关于如何做到这一点的任何想法? 我难住了。
var game = true;
while (game = true)
{
State myState = State.intro;
//first level
if (myState == State.intro)
{
level.Intro();
}
else
{
if (myState == State.contact1)
{
Console.WriteLine("Wroked");
}
在级别类中:
Console.WriteLine(name + " What are you doing, I need your help!");
Thread.Sleep(1000);
Console.WriteLine("\nA. Who is this? \nB. How are you doing this?\nC. How do you know my name?");
var res = Console.ReadLine();
char response = res[0];
switch (response)
{
case 'a':
State myState = State.contact1;
break;
case 'b':
Console.WriteLine("\nright");
break;
case 'c':
Console.WriteLine("\nleft");
break;
}
显然有比这更多的代码,但这是重要的部分。 你可以在这里看到完整的代码: https : //gist.github.com/MajorMojo/700936c02f1430de44b4559f0579917d https://gist.github.com/MajorMojo/5bba21cb977a4b768029e768a60d748
您要么需要将游戏对象传递到关卡类中,要么创建一些静态变量。
我会做第一个并且有一个由 main 创建并维护游戏整体状态的 GameEngine 类。 它可以有一个 SetState 方法(或 State 属性)。 创建时将 GameEngine 对象传递到关卡中。
我建议从编程教程的基本介绍开始。 C# 还不错:https ://msdn.microsoft.com/en-us/library/aa664628(v=vs.71).aspx
你错过了很多基本概念。 通过完整的教程学习它们比在此处提出个别问题要容易得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.