繁体   English   中英

在 flutter 和 SQL 中创建商店/物品系统,如何正确构建游戏内/应用程序物品?

[英]Creating a shop/ item system in flutter with SQL, how to structure in-game/app items properly?

SQL 和数据库的新功能,创建一个包含不同项目的应用程序内商店。

  void _createTableItems(Batch batch) {
    batch.execute('DROP TABLE IF EXISTS Items');
    batch.execute('''CREATE TABLE boughtItems ( 
    id INTEGER PRIMARY KEY,
    price INTEGER
  )''');
  }

class Item {
  Item({required this.id, required this.price, required this.title});
  String title;
  int id;
  int price;
}


List<Item> availableProducts = [WeaponItem(id: 0, strength: 5), WeaponItem(id: 1, strength: 7), StableItem(id: 2, speed: 4), FoodItem(id: 3, rev: 7)]

我现在几乎拥有最基本的结构。 当我需要获取产品时,我所做的就是在数据库查询中搜索可用产品列表中的 ID。

  Future<List<Item>> getBought() async {
await database;

List products = await _database!.query("Items");

List<Item> result = [];

for (var element in products) {
  result.add(availableProducts.where((e) => e.id == element["id"]).first);
}

return result;

}

这是一种可以接受的方法吗?

我担心的是项目类型的混合。

我有点迷路,因为我可以做很多事情。 我应该创建一个不同的表来保存每个单独项目的所有属性吗? 我应该在表中添加一个类型字符串来区分不同的项目吗?

我会为示例产品创建一个表。 此表包含有关所有产品共有的产品的一般信息(id、名称、product_number、info)。 如果您想要每种产品类型的附加和不同信息,我会添加一个 fk_type,它引用存储不同产品类型的 product_type(id, name) 表。 然后我会为每种产品类型创建一个附加表。 例如:product_weapon(id, size, ammunition, reload_time ), product_chair(id, high, depth, weight)。 但您也可以只使用简单的产品表并添加可以存储 jsons、xmls、css 文件的一般描述字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM