Flutter逃脱游戏开发插件escape_game_kit的使用

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

Flutter逃脱游戏开发插件escape_game_kit的使用

EscapeGameKit 是一个完全使用 Flutter 构建的包,用于创建逃脱游戏。

它更适合于 Web 和桌面平台(Windows、Linux、macOS),但也可以在移动平台上使用!

示例

你可以在 example 目录下找到一个示例。这是一个名为 ERROR 1980 的小逃脱游戏,我为我的学生创建的。我已经将其翻译成英文,你可以在此处试玩:

示例截图1 示例截图2 示例截图5

更多截图:

更多截图 ![示例截图3](https://github.com/Skyost/EscapeGameKit/raw/master/example/screenshots/screenshot-3.png) ![示例截图4](https://github.com/Skyost/EscapeGameKit/raw/master/example/screenshots/screenshot-4.png) ![示例截图6](https://github.com/Skyost/EscapeGameKit/raw/master/example/screenshots/screenshot-6.png) ![示例截图7](https://github.com/Skyost/EscapeGameKit/raw/master/example/screenshots/screenshot-7.png)

使用此插件,我还创建了以下逃脱游戏:

请注意,这些逃脱游戏是用法语编写的。

入门指南

要开始使用此库,所有必要的信息都可以在 wiki 中找到。

注意事项

该插件目前处于测试阶段。以下是我们在发布前需要处理的一些问题:

  • 更好的热重载支持。当前,逃脱游戏不支持热重载。
  • 更好的 Android 和 iOS 平台支持。虽然该插件尚未在这些平台上进行测试,但它应该可以完美运行。我们可能遇到的唯一问题是工具提示。

贡献

你可以通过多种方式为这个项目做出贡献!你可以:

如果你使用此库创建了任何东西,请随时 告诉我!如果这个库最终变得流行,我可能会创建一个展示来展示所有的创作。


示例代码

下面是示例代码,位于 example/lib/main.dart 文件中:

import 'package:escape_game_kit/escape_game_kit.dart';
import 'package:escape_game_kit_example/game/game.dart';
import 'package:escape_game_kit_example/game/padlocks/bruteforce_padlock.dart';
import 'package:escape_game_kit_example/game/padlocks/caesar_padlock.dart';
import 'package:escape_game_kit_example/game/padlocks/computer_padlock.dart';
import 'package:escape_game_kit_example/game/padlocks/qr_padlock.dart';
import 'package:escape_game_kit_example/widgets/main_widget.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:window_manager/window_manager.dart';

/// Hello world !
void main() {
  WidgetsFlutterBinding.ensureInitialized();
  if (!kIsWeb && (defaultTargetPlatform == TargetPlatform.windows || defaultTargetPlatform == TargetPlatform.linux || defaultTargetPlatform == TargetPlatform.macOS)) {
    adjustWindowSize();
  }
  registerPadlocks();
  Error1980EscapeGame escapeGame = Error1980EscapeGame();
  runApp(MainWidget(escapeGame: escapeGame));
}

/// Adjusts the window size.
Future<void> adjustWindowSize() async {
  await windowManager.ensureInitialized();

  windowManager.waitUntilReadyToShow().then((_) async {
    Size size = const Size(990, 430);
    await windowManager.setSize(size);
    await windowManager.setMinimumSize(size);
    // await windowManager.setMaximumSize(size);
    // await windowManager.setResizable(false);
    await windowManager.center();
    await windowManager.show();
  });
}

/// Registers padlock dialogs.
void registerPadlocks() {
  PadlockDialogs.registerBuilderFor(BruteforcePadlock, BruteforcePadlockDialog.builder);
  PadlockDialogs.registerBuilderFor(CaesarPadlock, CaesarPadlockDialog.builder);
  PadlockDialogs.registerBuilderFor(ComputerPadlock, ComputerPadlockDialog.builder);
  PadlockDialogs.registerBuilderFor(QrPadlock, QrPadlockDialog.builder);
}

更多关于Flutter逃脱游戏开发插件escape_game_kit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter逃脱游戏开发插件escape_game_kit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter逃脱游戏开发中使用escape_game_kit插件的示例代码。请注意,由于escape_game_kit并非一个真实存在的广泛认可的Flutter插件(在我最后的知识更新时),我将模拟一个类似的插件使用方式,展示如何在一个Flutter项目中组织代码以实现逃脱游戏的核心功能。

假设我们有一个名为escape_game_kit的假想插件,它提供了游戏状态管理、谜题逻辑和UI组件等功能。以下是如何在Flutter项目中集成和使用它的一个示例:

1. 添加依赖

首先,在pubspec.yaml中添加对escape_game_kit的依赖(注意:这里的escape_game_kit是假设的,实际使用时请替换为真实插件):

dependencies:
  flutter:
    sdk: flutter
  escape_game_kit: ^1.0.0  # 假设版本号

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

2. 初始化游戏状态

在主文件中(例如main.dart),初始化游戏状态并设置UI:

import 'package:flutter/material.dart';
import 'package:escape_game_kit/escape_game_kit.dart'; // 假设的导入路径

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Escape Game',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: GameScreen(),
    );
  }
}

class GameScreen extends StatefulWidget {
  @override
  _GameScreenState createState() => _GameScreenState();
}

class _GameScreenState extends State<GameScreen> {
  late GameController _gameController;

  @override
  void initState() {
    super.initState();
    _gameController = GameController();
    _gameController.initializeGame();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Escape Game'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 显示谜题或游戏状态
            Text(_gameController.currentPuzzleDescription),
            SizedBox(height: 20),
            // 示例谜题按钮
            ElevatedButton(
              onPressed: () {
                _solvePuzzle();
              },
              child: Text('Solve Puzzle'),
            ),
          ],
        ),
      ),
    );
  }

  void _solvePuzzle() {
    bool isSolved = _gameController.solveCurrentPuzzle();
    if (isSolved) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Puzzle Solved!')),
      );
      // 可以添加更多逻辑,比如进入下一关
    } else {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Try Again!')),
      );
    }
  }
}

3. 模拟GameController类

由于escape_game_kit是假设的,我们需要模拟一个GameController类来管理游戏逻辑。在实际使用中,这些功能将由插件提供。

// game_controller.dart
class GameController {
  String _currentPuzzleDescription = "Find the hidden key!";
  bool _puzzleSolved = false;

  void initializeGame() {
    // 初始化游戏状态,加载谜题等
    print("Game initialized");
  }

  String get currentPuzzleDescription => _currentPuzzleDescription;

  bool solveCurrentPuzzle() {
    // 假设这里有一个简单的谜题解决逻辑
    // 在真实游戏中,这里会调用插件提供的API
    _puzzleSolved = true; // 假设玩家解决了谜题
    return _puzzleSolved;
  }
}

总结

以上代码示例展示了如何在Flutter项目中模拟使用escape_game_kit插件来开发一个简单的逃脱游戏。在实际项目中,你将根据真实插件的API文档来调整代码,以实现更复杂的功能,如加载谜题资源、管理游戏进度、处理用户输入等。

请注意,由于escape_game_kit是一个假设的插件,实际使用时请查找并参考真实插件的文档和示例代码。

回到顶部