【问题标题】:I have some difficulties with my Levels class. What is wrong?我的 Levels 课有一些困难。怎么了?
【发布时间】:2012-10-22 05:30:25
【问题描述】:

我编写了 Levels 类来存储每个级别的敌人数量。 Levels 类在开始一个新的关卡之前被调用一次。 例如,如果玩家在游戏菜单中选择 1 级,则应绘制 5 个僵尸、3 个蜘蛛和 1 个狼人(在另一个类中)。 但目前,我总是收到此错误消息:方法必须有返回类型。
怎么了?

public class Levels
{
    int currentLevel, Zombies, Spiders, Werewolfs;

    public Levels(int Level)
    {
        this.currentLevel = Level;
    }

     public Level1()
    {
        Zombies = 5;
        Spiders = 3;
        Werewolfs = 1;
    }

     public Level2()
    {
        Zombies = 8;
        Spiders = 4;
        Werewolfs = 2;
    }

     public Level3()
    {
        Zombies = 12;
        Spiders = 4;
        Werewolfs = 3;
    }

    public void Load(ContentManager content)
    {
     if (currentLevel == 1)
       Level1();

     if (currentLevel == 2)
       Level2();

     if (currentLevel == 3)
       Level3();   
    }
}

【问题讨论】:

  • 您是否尝试在您的 Level1、Level2、Level3 方法之前放置 void?
  • 您不能拥有名称不同的构造函数,IDE 需要方法。如果你想这样使用它,只需在方法名前面加上 void 即可。例如:public void Level1() ...
  • 您可以阅读方法并正确声明它们at this page
  • 这没有直接关系,但您可能需要为变量考虑一个更具描述性的名称。 Zombies 听起来像是对象的集合。 ZombieCount 可以更好地理解变量所代表的含义。随着代码大小的增加,这些小细节对于可维护性变得更加重要。 makinggoodsoftware.com/2009/05/04/71-tips-for-naming-variables

标签: c# xna


【解决方案1】:

您的 Level1()、Level2() 等必须有返回类型,如 void。它们是方法而不是构造函数。

【讨论】:

    【解决方案2】:

    你没有从你的函数中返回任何东西。注意您的Load() 函数,它被声明为public void,这意味着该函数没有返回任何内容或“void”。如果您不打算从这些函数返回任何内容,请在其声明中包含 void。如果是,请执行以下操作:

    public int Level1()
    {
        int Zombies = 5;
        return Zombies;
    }
    

    注意:函数只能返回一个对象。

    我不知道正确的 c# 语法,所以这可能是错误的,但概念是一样的。

    如果您不想从这些函数中返回某些内容,请将它们声明为void,为您的“敌人”设置全局变量,然后使用方法(函数)来更改全局变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 2020-06-18
      相关资源
      最近更新 更多