我正在开发一个游戏,该游戏有不同的模式。简单,正常和困难。
因此,我正在考虑如何存储游戏模式。我的第一个想法是用数字表示难度。


容易= 0正常= 1困难= 2


因此,我的代码将具有以下内容:

switch(gameMode){

case 0:
//easy
break;

case 1:
//normal
break;

case 3:
//difficult
break;

}


但是我认为它存在一些问题,如果我添加一个新模式,例如“ Extreme”,则需要添加案例4……似乎不是gd设计。

因此,我正在考虑制作一个gameMode对象,并且不同的gameMode是超类gameMode的子类。
gameMode对象是这样的:

    class GameMode{
    int maxEnemyNumber;
    int maxWeaponNumber;
      public static GameMode init(){
         GameMode gm = GameMode();
         gm.maxEnemyNumber = 0;
         gm.maxWeaponNumber = 0;
         return gm;
      }

    }

class EasyMode extends GameMode{

      public static GameMode init(){
         GameMode gm = super.init();
         gm.maxEnemyNumber = 10;
         gm.maxWeaponNumber = 100;
         return gm;
      }
}


class NormalMode extends GameMode{

      public static GameMode init(){
         GameMode gm = super.init();
         gm.maxEnemyNumber = 20;
         gm.maxWeaponNumber = 80;
         return gm;
      }
}


但是我认为创建一个对象来存储gameMode似乎太“笨拙”,我的“ gameMode”只为游戏设置存储不同的变量....这是仅存储数据而不是创建对象的任何简单方法吗?你

最佳答案

我认为您正在尝试表示一个配置数据表。如果您使用支持该功能的语言,则将其放在配置文件中,或者在代码中使用文字数据。

例如,您可以使用C编写此代码:

typedef enum difficulties {
  DIFFICULTY_EASY,
  DIFFICULTY_MEDIUM,
  DIFFICULTY_HARD
} difficulties;

struct {
  int max_enemies;
  int max_weapons;
} difficulty_settings[] = {
  {10, 4},
  {20, 5},
  {30, 6}
};


而当您想读取特定设置时,例如用于简单级别的max_enemies,则可以编写difficulty_settings[DIFFICULTY_EASY].max_enemies

通过扩展表格,可以轻松添加更多配置(更多参数或更高难度级别)。

08-06 07:35