基于MVC的俄罗斯方块笔记

本文记录了基于MVC架构开发俄罗斯方块的过程,包括7:10的开发比例,模型-视图-控制器的独立交互,利用Horizontal Layout Group布局菜单,采用有限状态机控制游戏流程,以及方块移动、消除、统一管理、设置菜单和排行榜的实现细节。开发者通过实践加深了对MVC架构的理解,并提出后续改进计划。
摘要由CSDN通过智能技术生成

基于MVC的俄罗斯方块笔记

1、使用开发比例为7:10

  • 按照移动端的开发标准进行,素材的导入等

2、MVC的三层结构 model 跟view 不进行交互

  • Model 模型层 —— 数据存放层
  • View 视图层——视图控制
  • Ctrl 逻辑层——桥梁作用 链接Model和VIew
  • 通过标签来进行Ctrl对model和view的访问

3、菜单的设置,布局通过Horizontal Layout Group来进行平均分布

4、通过有限状态机来控制游戏

  • 菜单状态

  • 游戏状态

  • 暂停状态

  • 游戏结束状态

27、控制图形方块的左右移动

  • 暂停状态不能移动 如果左右有方块挡住也不能移动
  • 移动的时候通过判断左右按键的按下来控制,让其按每个格子来移动
  • 如果能移动则更新位置并播放音效,不能移动则返回原来的位置
    /// <summary>
    /// 控制左右移动
    /// </summary>
    private void InputControl()
    {
        float h = 0;
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            h = -1;
        }
        else if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            h = 1;
        }        
        if (h != 0)  //如果按下
        {
            Vector3 pos = transform.position;  //得到当前位置
            pos.x += h;
            transform.position = pos;//重新赋值
            //判断是否能移动
            if (ctrl.model.IsValidMapPosition(this.transform) == false)
            {
                pos.x -= h;    // 如果不能移动则返回刚才的位置
                transform.position = pos;return;  //设置回来之前的位置
            }
            ctrl.audioManager.PlayControl();   //可以移动的话就播放音效
        }
    }

28、控制方块的消除

  • 判断消除条件 每行满了之后消除 用消除方法来实现
  • 消除后需要所以的方块向下移动
/// <summary>
    /// 检测地图是否不要消除行
    /// </summary>
    private void CheckMap()
    {
        for (int i = 0; i < MAX_ROWS; i++)
        {
   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值