Flutter随机数生成插件randpg的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter随机数生成插件randpg的使用

介绍

randpg 是一个用于生成各种随机实体的Flutter插件,特别适用于角色扮演游戏(RPG)和幻想游戏。它可以生成从名字、NPC、同伴到整个世界的各种内容。许多功能可以扩展,例如添加其他种族或类型的定居点,以补充现有的类型。

注意: 该插件仍在开发中,某些版本可能在1.0.0之前不向后兼容。

安装

要安装 randpg 插件,请按照以下步骤操作:

  1. 打开 pubspec.yaml 文件。
  2. dependencies 部分添加 randpg
    dependencies:
      randpg: ^最新版本号
    
  3. 保存文件并运行 flutter pub get 以获取依赖项。

功能

randpg 提供了以下功能:

  • 为不同种族生成名字
  • 生成NPC
  • 生成同伴
  • 生成定居点内的地点和建筑物
  • 生成定居点
  • 生成景观
  • 生成神祇
  • 生成公会
  • 生成王国
  • 生成节日
  • 生成徽章(SVG格式)
  • 生成完整的世界
  • 生成世界地图

使用示例

1. 生成名字
import 'package:randpg/randpg.dart';

void main() {
  final Gender gender = Gender.male;
  final Race race = Halfling();
  final nameGenerator = race.getNameGenerator(gender);

  // 如果你想设置生成器的种子:
  nameGenerator.seed(1234);

  print(nameGenerator.generate()); // 预期输出: "Cormin Copperbrook"
}
2. 生成NPC
import 'package:randpg/randpg.dart';

void main() {
  final Race race = Elf();
  final npcGenerator = NpcGenerator(race);

  print(npcGenerator.generate());
}
3. 生成地点/建筑物
import 'package:randpg/randpg.dart';

void main() {
  final LocationType locationType = Tavern();
  final Race ownerRace = Dwarf();

  final locationGenerator = LocationGenerator(locationType, ownerRace);
  print(locationGenerator.generate());
}
4. 生成定居点
import 'package:randpg/randpg.dart';

void main() {
  final SettlementType settlementType = Town();
  final Race dominantRace = Orc();

  final settlementGenerator = SettlementGenerator(settlementType, dominantRace);
  print(settlementGenerator.generate());
}
5. 生成景观
import 'package:randpg/randpg.dart';

void main() {
  final LandscapeType landscapeType = Swamp();

  final landscapeGenerator = LandscapeGenerator(landscapeType);
  print(landscapeGenerator.generate());
}
6. 生成神祇
import 'package:randpg/randpg.dart';

void main() {
  final Alignment alignment = Alignment(
    ethical: EthicalAlignment.lawful,
    moral: MoralAlignment.good,
  );
  final DeityType deityType = God();

  final deityGenerator = DeityGenerator(deityType, alignment);
  print(deityGenerator.generate());
}
7. 生成公会
import 'package:randpg/randpg.dart';

void main() {
  final GuildType guildType = ThievesGuild();
  final guildGenerator = GuildGenerator(guildType);

  final Guild guild = guildGenerator.generate();
  print(guild);
}
8. 生成王国
import 'package:randpg/randpg.dart';

void main() {
  final GovernmentType governmentType = Republic();
  final Race race = Dwarf();
  final KingdomType kingdomType = DefaultKingdomType();

  final Kingdom kingdom = KingdomGenerator(kingdomType, race, governmentType).generate();
  print(kingdom);
}
9. 生成徽章
import 'package:randpg/randpg.dart';

void main() {
  final EmblemType type = DefaultEmblemType();
  final emblemGenerator = EmblemGenerator(type);

  emblemGenerator.seed(3979);

  final Emblem emblem = emblemGenerator.generate();
  print(emblem.buildSvg());
}

预期输出

10. 生成世界
import 'package:randpg/randpg.dart';

void main() {
  final WorldSettings settings = DefaultWorldSettings();
  final worldGenerator = WorldGenerator(settings);

  final World world = worldGenerator.generate();
  print(world);
}
11. 生成同伴
import 'package:randpg/randpg.dart';

void main() {
  final CompanionType companionType = Dog();
  final Gender gender = Gender.female;
  final companionGenerator = CompanionGenerator(companionType, gender);

  print(companionGenerator.generate());
}
12. 生成节日
import 'package:randpg/randpg.dart';

void main() {
  final HolidayType holidayType = Celebration();
  final holidayGenerator = HolidayGenerator(holidayType);

  print(holidayGenerator.generate());
}
13. 生成世界地图
import 'package:randpg/randpg.dart';

void main() {
  final WorldMapSettings worldMapSettings = IslandsWorldMapSettings();
  final worldMapGenerator = WorldMapGenerator(worldMapSettings, 100, 100);
  worldMapGenerator.seed(1664);

  final worldMap = worldMapGenerator.generate();
  print(worldMap.toMap()["image"]); // 打印图像的base64编码
}

预期输出

14. 生成带瓦片的世界地图(实验性)
import 'package:randpg/randpg.dart';

void main() {
  final WorldMapSettings worldMapSettings = IslandsWorldMapSettings();
  final worldMapGenerator = WorldMapGenerator.withTiles(worldMapSettings, 16 * 100, 16 * 100); // 16是瓦片大小
  worldMapGenerator.seed(1664);

  final worldMap = worldMapGenerator.generate(); // 注意:此方法目前是实验性的,可能会抛出`UnimplementedError`
  print(worldMap.toMap()["image"]); // 打印图像的base64编码
}

更多关于Flutter随机数生成插件randpg的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter随机数生成插件randpg的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用randpg插件来生成随机数的示例代码。首先,你需要确保你的Flutter项目已经创建,并且已经添加了randpg插件。

1. 添加依赖

pubspec.yaml文件中添加randpg依赖:

dependencies:
  flutter:
    sdk: flutter
  randpg: ^最新版本号  # 请检查pub.dev上的最新版本号

然后运行flutter pub get来安装依赖。

2. 导入插件

在你的Dart文件中(例如main.dart),导入randpg插件:

import 'package:randpg/randpg.dart';

3. 使用插件生成随机数

以下是一个简单的示例,展示了如何使用randpg插件生成一个随机整数和一个随机浮点数:

import 'package:flutter/material.dart';
import 'package:randpg/randpg.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Randpg 插件示例'),
        ),
        body: Center(
          child: RandomNumberGenerator(),
        ),
      ),
    );
  }
}

class RandomNumberGenerator extends StatefulWidget {
  @override
  _RandomNumberGeneratorState createState() => _RandomNumberGeneratorState();
}

class _RandomNumberGeneratorState extends State<RandomNumberGenerator> {
  String randomInt = '';
  String randomDouble = '';

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text(
          '随机整数 (0 到 100): $randomInt',
          style: TextStyle(fontSize: 20),
        ),
        SizedBox(height: 20),
        Text(
          '随机浮点数 (0.0 到 1.0): $randomDouble',
          style: TextStyle(fontSize: 20),
        ),
        SizedBox(height: 20),
        ElevatedButton(
          onPressed: () {
            setState(() {
              // 生成随机整数
              randomInt = Randpg.randomInt(0, 100).toString();
              
              // 生成随机浮点数
              randomDouble = Randpg.randomDouble(0.0, 1.0).toString();
            });
          },
          child: Text('生成随机数'),
        ),
      ],
    );
  }
}

注意事项

  1. Randpg.randomInt(min, max):生成一个范围在min(包含)到max(包含)之间的随机整数。
  2. Randpg.randomDouble(min, max):生成一个范围在min(包含)到max(包含)之间的随机浮点数。

运行项目

确保所有代码已经正确添加,然后在终端中运行flutter run来启动你的Flutter应用。你应该会看到一个界面,点击按钮后会生成并显示随机整数和随机浮点数。

以上代码示例展示了如何在Flutter项目中使用randpg插件生成随机数。如果你需要更多功能或配置,请参考randpg插件的官方文档。

回到顶部