MVC模型——游戏编程lab-3

实验主题

学习MVC架构下的游戏编程

课堂案例分析

  1. Model(模型):在这个游戏 demo 中,chessBoard 数组代表了游戏的状态,它记录了每个格子上的棋子情况。currentPlayer 追踪当前玩家,count 追踪已下棋子的数量,winner 表示获胜的玩家。这些变量共同组成了游戏的模型数据,用于表示游戏状态和进行游戏逻辑。

  2. View(视图):在游戏界面的绘制中,OnGUI 方法通过调用 GUI 类的方法来创建界面元素(按钮和文本框),并根据模型数据 chessBoard 的状态来决定界面元素的显示和交互逻辑。这里的界面元素即为视图,它们根据模型的变化进行更新并与用户进行交互。

  3. Controller(控制器):在这个游戏 demo 中,控制器的职责主要由 OnGUI 方法承担。它监听用户的输入(通过按钮点击)并根据用户的操作调用相应的方法,如 PutChess 方法来处理用户下棋的逻辑。Init 方法用于初始化游戏,相当于控制器的启动和重置操作。

由此,初步理解MVC代码组织形式:

Model(模型)

  • 包含应用程序的业务逻辑和数据。
  • 独立于视图和控制器,不直接与它们进行交互。
  • 提供方法和属性来操作和获取数据。

public class GameModel {
    private int[,] chessBoard;
    private int currentPlayer;
    private int count;
    private int winner;

    public GameModel() {
        // 模型的初始化
    }

    public void Init() {
        // 模型的初始化逻辑
    }

    public void PutChess(int i, int j) {
        // 下棋逻辑
    }

    public bool GameOver() {
        // 判断游戏结束的逻辑
    }

    // 其他与数据操作相关的方法和属性
}

View(视图)

  • 负责用户界面的展示和交互,显示模型中的数据。
  • 监听用户输入,并将输入传递给控制器进行处理。
  • 不包含业务逻辑,只关注界面的呈现。

public class GameView : MonoBehaviour {
    // 视图的渲染和用户交互逻辑

    public void UpdateGameBoard(int[,] chessBoard) {
        // 更新游戏棋盘的显示
    }

    // 其他与界面渲染和用户交互相关的方法
}

Controller(控制器)

  • 接收用户输入并将其转发给模型进行处理。
  • 根据模型的状态更新视图的展示。
  • 不直接操作视图,而是通过模型来更新数据和状态。

public class GameController : MonoBehaviour {
    private GameModel model;
    private GameView view;

    void Start() {
        model = new GameModel();
        view = GetComponent<GameView>();
        model.Init();
        view.UpdateGameBoard(model.GetChessBoard());
    }

    public void HandlePlayerInput(int i, int j) {
        model.PutChess(i, j);
        if (model.GameOver()) {
            // 处理游戏结束逻辑
        }
        view.UpdateGameBoard(model.GetChessBoard());
    }

    // 其他与控制器逻辑相关的方法
}

使用这种模式可以快速实现简单游戏,但是视图需要及时更新以反映模型的变化,可能导致频繁的视图更新操作,增加性能开销。

以下是一个简单的五子棋小尝试:

MVC - Sample_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值