簡體   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