我正在开发一个游戏,该游戏有不同的模式。简单,正常和困难。
因此,我正在考虑如何存储游戏模式。我的第一个想法是用数字表示难度。
容易= 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
通过扩展表格,可以轻松添加更多配置(更多参数或更高难度级别)。