如何在flutter中创建可重用的类以进行游戏设计

问题描述 投票:0回答:1

我正在尝试创建“可重用类”(如果这是此处使用的正确术语)。

假设我正在网格视图中使用图块制作一个小游戏。我有这样的东西:

enum gridTileClass { goblin, elf, dragon, dungeonFloor1 }

class gridTileData {
  final gridTileClass type;
  late final String tileImage;
  int currentHealth;

  gridTileData({
    required this.type,
    required this.tileImage,
    required this.currentHealth,
  });
}

但是当我设置面板时,我必须手动输入网格上每个空间的数据,如下所示:

List<List<gridTileData?>> initializeBoard(int currentLevel) {
  newBoard[0][0] = gridTileData(
    type: gridTileClass.dungeonFloor1,
    tileImage: './lib/images/dungeon_tile_1.png',
    currentHealth: 0,
  );
  newBoard[0][1] = gridTileData(
    type: gridTileClass.dungeonFloor1,
    tileImage: './lib/images/dungeon_tile_1.png',
    currentHealth: 0,
  );
  newBoard[0][2] = gridTileData(
    type: gridTileClass.goblin,
    tileImage: './lib/images/goblin1.png',
    currentHealth: 0,
  );
  newBoard[0][3] = gridTileData(
    type: gridTileClass.goblin,
    tileImage: './lib/images/goblin1.png',
    currentHealth: 0,
  );
}

现在这是一个简化的示例,实际上它要乏味得多,因为我的一个类不是 3 个属性,而是 20 个或更多。

我希望能够做类似的事情:

newBoard[0][1] = goblin;

不知何故,因为我之前已经在某个地方告诉过它妖精是什么。

flutter class
1个回答
0
投票

我建议您使用Builder设计模式

你将能够做这样的事情:

newBoard[0][1] = GoblinBuilder.build();

Builder 和 GoblinBuilder 的代码为:

abstract class Builder{
    gridTileData builder();
}

class GoblinBuilder extends Builder{
    @override    
    gridTileData builder(){
       return gridTileData(
          type: gridTileClass.goblin,
          tileImage: './lib/images/goblin1.png',
          currentHealth: 0,
       );
    }
}

您可以对其他角色或更多角色执行相同的操作。

有关构建器设计模式的更多信息:

© www.soinside.com 2019 - 2024. All rights reserved.