我正在制作一个非常简单的多选控制台游戏。我已经使用枚举创建了一个有限状态机,并且if else在while循环中表示所有状态(当game = true时)。
问题是,在类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/5bba21cb977a4b768029e765a0d74886
答案 0 :(得分:0)
您需要将游戏对象传递到关卡类或制作一些静态变量。
我会做第一个并且有一个由main创建的GameEngine类并保持游戏的整体状态。它可以有一个SetState方法(或State属性)。在创建GameEngine对象时将其传递到关卡中。
答案 1 :(得分:0)
我建议从编程教程的基础介绍开始。 C#one太糟糕了:https://msdn.microsoft.com/en-us/library/aa664628(v=vs.71).aspx
你错过了很多基本概念。通过完成一个完整的教程,而不是在这里提出个别问题,你可以更轻松地学习它们。