在C#

时间:2018-11-24 04:56:54

标签: c#

此处非常简单和基本的代码知识。我没有上学,正在做这件事很有趣。

我刚刚开始用C#制作一个简单的Text RPG,这是我第一次尝试使用可协同工作的类,而不是使用运行大量行的单个类。

我试图制作一个模板类,其中包含我的战斗系统读取进行计算的Int变量:

namespace NatesFirstTextGame
{
    class EnemyTemplate
    {
        string Name;
        int Str;


        public int GetEnmStr()
        {
            return Str;
        }
        public void SetEnmStr(int a)
        {
            Str = a;
        }
        public string GetEnmName()
        {
            return Name;
        }
        public void SetEnmName(string a)
        {
            Name = a;
        }
    }
}

我正在尝试创建单独的敌人类,将其信息发送到模板类,以供战斗系统读取:

namespace NatesFirstTextGame
{
    class Goose 
    {
        EnemyTemplate Enemy = new EnemyTemplate();

        public void GooseStats()
        {
            Enemy.SetEnmName("Goose");
            Enemy.SetEnmStr(1);

        }
    }
}

并试图像这样运行它:

namespace NatesFirstTextGame
{
    class GameDirectory
    {

        EnemyTemplate Enemy = new EnemyTemplate();
        Goose Goose = new Goose();
        Character Player = new Character();
        public void Game()
        {
            Goose.GooseStats();
            Console.WriteLine("Initiative check...");
            Console.WriteLine(Enemy.GetEnmDex() + " against " + 
            Player.GetDex());
            if(Player.GetDex() >= Enemy.GetEnmDex())
            {
                bool Initiative = true;
                Console.WriteLine("You have the first move.");

            }        
        }
    }

我尝试了几种发送变量的方法,但是我缺乏知识来弄清楚-当我运行Goose更新EnemyTemplate中的值然后打印这些值时,所有内容空白,好像什么都没有发生了我已经阅读了一些有关继承和其他方面的知识,但是在这个时间点上要掌握一点点知识,除非我适应并真正理解,否则我会很乐于在更基本的层次上前进现在,直到我决定迈出下一步。

总结一下:如何以一种使上述方法可行的方式在类之间发送/更新变量?

编辑:上面的两个代码在SEPARATE文件中。

1 个答案:

答案 0 :(得分:0)

您在Goose类中的EnemyTemplate属性“ Enemy”是私有的,因此您需要在Goose类中声明诸如GooseStats之类的公共方法,以调用Enemy的公共方法以返回其结果。例如,可以像这样修改您的Goose类。

namespace NatesFirstTextGame
{
    class Goose 
    {
        EnemyTemplate Enemy = new EnemyTemplate();

        public void GooseStats()
        {
            Enemy.SetEnmName("Goose");
            Enemy.SetEnmStr(1);
            Enemy.SetEnmDex(1);
            Enemy.SetEnmConHP(1);
        }

        public string GetEnemyEnmName(){
            return Enemy.GetEnmName();
        }

        public int GetEnemyEnmStr()
        {
            return Enemy.GetEnmStr();
        }
    }
}

然后像这样使用它。

namespace NatesFirstTextGame
{
    class Program
    {
        static void Main(string[] args)
        {
            Goose goose = new Goose();
            goose.GooseStats();
            goose.GetEnemyEnmName();
            Console.WriteLine(goose.GetEnemyEnmName());
            Console.WriteLine(goose.GetEnemyEnmStr());
        }
    }
}