gwy2024 2024-10-02 12:11 采纳率: 50%
浏览 6
问题最晚将于10月10日00:00点结题

俄罗斯方块中无法同时消除多个满行

消除满行的逻辑是:通过函数getfullrow获取已满行的行索引并用临时变量保存到数组fullrowindex返回;消除满行函数removefullrow和消除后下移行列函数movetilesdown收到索引数组fullrowindex后执行相关逻辑。
程序运行后的表现为:同时存在多行可消除时,仅会消除某一行。

请问:该程序逻辑中是哪一个蓝图模块有问题,该如何解决?
蓝图运行报错:

img

模块逻辑见图:
1.消除逻辑

img


2.getfullrow模块运行逻辑:

img


3.removefullrow模块运行逻辑:

img


4.movetiledown模块逻辑:

img

  • 写回答

19条回答 默认 最新

  • 阿里嘎多学长 2024-10-02 12:14
    关注

    AIGC生成:


    俄罗斯方块中无法同时消除多个满行

    你遇到的问题是俄罗斯方块游戏中无法同时消除多个满行,这可能是由于你的消除满行逻辑中存在问题。

    根据你的描述,消除满行的逻辑是通过函数 getfullrow 获取已满行的行索引,并将其保存到数组 fullrowindex 中,然后调用 removefullrow 函数消除满行,并最后调用 movetilesdown 函数下移行列。

    可能的解决方案是:

    1. getfullrow 函数中,使用一个集合或数组来存储已满行的行索引,而不是单独的变量。这样可以确保可以同时获取多个满行的行索引。
    2. removefullrow 函数中,使用一个循环来消除所有满行,而不是单独消除一个满行。
    3. movetilesdown 函数中,使用一个循环来下移所有行列,而不是单独下移一个行列。

    以下是一个示例代码:

    void removefullrow(vector<vector<Tile>>& tiles) {
        vector<int> fullrowindex = getfullrow(tiles);
        for (int i : fullrowindex) {
            tiles.erase(tiles.begin() + i);
        }
        movetilesdown(tiles);
    }
    
    void movetilesdown(vector<vector<Tile>>& tiles) {
        for (int i = 0; i < tiles.size(); i++) {
            if (tiles[i].empty()) {
                tiles.erase(tiles.begin() + i);
                i--;
            }
        }
    }
    

    希望这个解决方案能够帮助你解决问题。


    评论

报告相同问题?

问题事件

  • 修改了问题 10月2日
  • 赞助了问题酬金15元 10月2日
  • 创建了问题 10月2日

悬赏问题

  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑