📜  Flutter – 构建井字游戏(1)

📅  最后修改于: 2023-12-03 15:00:48.588000             🧑  作者: Mango

Flutter – 构建井字游戏

Flutter是Google推出的一种全新的开源移动应用开发框架。它基于Dart语言,可以用来构建高性能、高保真的iOS和Android应用。本文将介绍如何使用Flutter框架构建一个简单的井字游戏。

准备工作

在开始构建井字游戏之前,需要先安装Flutter。请根据官方文档安装Flutter,并设置好开发环境。

创建项目

打开终端,进入要创建项目的目录,执行以下命令:

flutter create tictactoe

该命令会创建一个名为tictactoe的Flutter项目。

编写代码
UI界面

在lib/main.dart文件中,我们首先要编写UI界面。我们可以使用Flutter的Material Design风格来创建一个简单的游戏板和一些按钮。

import 'package:flutter/material.dart';

void main() => runApp(TicTacToe());

class TicTacToe extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Tic Tac Toe',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Tic Tac Toe'),
        ),
        body: Container(
          child: GridView(
            gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                crossAxisCount: 3),
            children: List.generate(9, (index) {
              return Center(
                child: TextButton(
                  onPressed: () {},
                  child: Text(''),
                ),
              );
            }),
          ),
        ),
      ),
    );
  }
}

该代码会创建一个包含3 x 3个文本按钮(TextButton)的游戏板。我们将在按钮中显示X或O。

游戏逻辑

接下来,我们将编写程序来管理游戏逻辑。

我们可以创建一个名为Game的类来管理游戏状态。该类包含一个名为_board的长度为9的List,表示游戏板上的每个位置(0~8)。我们还需要一个表示当前玩家的变量_xTurn。

class Game {
  List<int> _board = List.generate(9, (index) => null);
  bool _xTurn = true;
}

我们需要在每个按钮按下后更新_game对象,并在按下前检查按钮是否可用。在Game类中添加一个名为tap的方法,该方法接受按钮位置并更新游戏数据。

void tap(int index) {
  if (_board[index] != null) {
    return;
  }
  _board[index] = _xTurn ? 0 : 1;
  _xTurn = !_xTurn;
}

最后,我们需要在按钮的onPressed回调中调用Game.tap方法,并更新按钮的文本。

class TicTacToe extends StatefulWidget {
  @override
  _TicTacToeState createState() => _TicTacToeState();
}

class _TicTacToeState extends State<TicTacToe> {
  Game _game = Game();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Tic Tac Toe',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Tic Tac Toe'),
        ),
        body: Container(
          child: GridView(
            gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
              crossAxisCount: 3,
              childAspectRatio: 1.0,
              crossAxisSpacing: 1.0,
              mainAxisSpacing: 1.0,
            ),
            children: List.generate(9, (index) {
              return Center(
                child: TextButton(
                  onPressed: () {
                    setState(() {
                      _game.tap(index);
                    });
                  },
                  child: Text(_game.text(index)),
                ),
              );
            }),
          ),
        ),
      ),
    );
  }
}

在_game对象中添加一个名为text的方法,该方法接受位置并返回对应的文本(X、O或'')。

String text(int index) {
  if (_board[index] == null) {
    return '';
  } else if (_board[index] == 0) {
    return 'X';
  } else {
    return 'O';
  }
}

现在,我们已经构建了一个简单的井字游戏应用程序。

总结

本文介绍了如何使用Flutter构建一个简单的井字游戏应用程序。通过学习本文,您可以了解Flutter框架的基本知识,并获得构建应用程序的经验。感谢您的阅读!