Skip to main content

ludo_engine 0.1.0 copy "ludo_engine: ^0.1.0" to clipboard
ludo_engine: ^0.1.0 copied to clipboard

Ludo rules and computer players in pure Dart: twelve house rules, AI personalities, deterministic turns and JSON for apps, servers and tests.

example/main.dart

// Four computer players, one seeded game, every event printed.
//
//   dart run example/main.dart [seed]
import 'package:ludo_engine/ludo_engine.dart';

void main(List<String> args) {
  final seed = args.isEmpty ? 7 : int.parse(args.first);
  final rng = SeededRng(seed);

  var state = Engine.newGame(
    rules: const RuleSet(safeSquares: true, extraTurnOnCapture: true),
    seats: [
      Seat.ai(id: 'ama', name: 'Ama', colour: 0, personality: Personality.vicious),
      Seat.ai(id: 'kofi', name: 'Kofi', colour: 1, personality: Personality.averageJoe),
      Seat.ai(id: 'esi', name: 'Esi', colour: 2, personality: Personality.pacifist),
      Seat.ai(id: 'teye', name: 'Teye', colour: 3, personality: Personality.averageJoe),
    ],
  );

  String name(int seat) => state.seats[seat].name;

  while (!state.isOver) {
    final action = AiPlayer.decide(state, rng);
    final result = Engine.apply(state, action, rng);
    for (final event in result.events) {
      final line = switch (event) {
        Rolled(:final seat, :final value) => '${name(seat)} rolls $value',
        Moved(:final seat, :final piece, :final from, :final to) =>
          '  ${name(seat)} moves piece $piece from ${from == Progress.base ? 'base' : from} to ${to == Progress.home ? 'home' : to}',
        Captured(:final by, :final victim) =>
          '  ${name(by)} sends ${name(victim.seat)}\'s piece home!',
        PlayerFinished(:final seat, :final place) => '${name(seat)} finishes, place $place',
        GameEnded(:final finishOrder) => 'Game over: ${finishOrder.map(name).join(', ')}',
        _ => null,
      };
      if (line != null) print(line);
    }
    state = result.state;
  }
}
0
likes
160
points
--
downloads

Documentation

API reference

Publisher

verified publisherwayyyoutgames.com

Ludo rules and computer players in pure Dart: twelve house rules, AI personalities, deterministic turns and JSON for apps, servers and tests.

Repository (GitHub)
View/report issues

Topics

#ludo #board-game #game #ai

License

MIT (license)

More

Packages that depend on ludo_engine