如何在C#中更改类外的变量?

时间:2016-04-25 22:39:00

标签: c#

我正在制作一个非常简单的多选控制台游戏。我已经使用枚举创建了一个有限状态机,并且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

2 个答案:

答案 0 :(得分:0)

您需要将游戏对象传递到关卡类或制作一些静态变量。

我会做第一个并且有一个由main创建的GameEngine类并保持游戏的整体状态。它可以有一个SetState方法(或State属性)。在创建GameEngine对象时将其传递到关卡中。

答案 1 :(得分:0)

我建议从编程教程的基础介绍开始。 C#one太糟糕了:https://msdn.microsoft.com/en-us/library/aa664628(v=vs.71).aspx

你错过了很多基本概念。通过完成一个完整的教程,而不是在这里提出个别问题,你可以更轻松地学习它们。