繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM