2401_85351520 2024-05-28 18:49 采纳率: 0%
浏览 6

JAVA语言 类似消消乐

首先我是一个7行7列的矩阵 图一是我的List列表 里面存了很多条连线的位置
图二是检测上下左右的素材 规则就是相邻的有大于等于五个就算是一条连线中奖 一个矩阵可能有很多条中奖 然后每条都存进了图一 我现在遇见的问题是我这个原本的代码是没有万能素材在矩阵里面 现在的规则是矩阵里面有万能素材的时候是可以代替矩阵里面的任意素材 只要是相邻的,有五个就可以。万能素材id是1 不知道怎么解决 能理解我意思吗

img

img

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-28 18:49
    关注

    引自免费微信小程序:皆我百晓生

    根据您的描述,您想要修改现有的代码来处理包含万能素材(id为1)的情况。为了实现这个功能,我们需要对getAdjacentMaterialList方法进行一些调整,并确保在checkAdjacentMaterial方法中正确处理万能素材。

    首先,让我们从getAdjacentMaterialList方法开始,添加一个条件来处理万能素材:

    public List<SlotGameLineData> getAdjacentMaterialList(int[][] matrix) {
        List<SlotGameLineData> list = new ArrayList<>();
        int row = matrix.length;
        int col = matrix[0].length;
        int [][] arrCheck = new int[row][col];
    
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                if (matrix[i][j] == 1 || // 新增判断是否为万能素材
                    (roomID == GameConstant.GAME_PLAY_TYPE_SUGAR ||
                     roomID == GameConstant.GAME_PLAY_TYPE_SUGAR500)) {
                    if (arrCheck[i][j] != 1) {
                        SlotGameLineData data = new SlotGameLineData();
                        checkAdjacentMaterial(matrix, arrCheck, i, j, data);
                        if (data.getColNum() >= 5) {
                            data.setMaterial(matrix[i][j]);
                            list.add(data);
                        }
                    }
                }
            }
        }
    
        return list;
    }
    

    接下来,我们修改checkAdjacentMaterial方法,使其可以处理万能素材。我们将检查万能素材并将其视为任何其他素材。同时,我们需要在比较时考虑万能素材:

    public void checkAdjacentMaterial(int[][] arr, int[][] arrCheck, int i, int j, SlotGameLineData data) {
        arrCheck[i][j] = 1;
    
        if (arr[i][j] == 0) {
            return;
        }
    
        data.setColNum(data.getColNum() + 1);
        data.setMaterialPos(data.getMaterialPos() + i + "" + j + ",");
    
        if (i > 0 && (arr[i][j] == arr[i - 1][j] || arr[i][j] == 1) && arrCheck[i - 1][j] != 1) { // 修改了这里,增加了对万能素材的检查
            checkAdjacentMaterial(arr, arrCheck, i - 1, j, data);
        }
        if (j < col - 1 && (arr[i][j] == arr[i][j + 1] || arr[i][j] == 1) && arrCheck[i][j + 1] != 1) { // 修改了这里,增加了对万能素材的检查
            checkAdjacentMaterial(arr, arrCheck, i, j + 1, data);
        }
        if (i < row - 1 && (arr[i][j] == arr[i + 1][j] || arr[i][j] == 1) && arrCheck[i + 1][j] != 1) { // 修改了这里,增加了对万能素材的检查
            checkAdjacentMaterial(arr, arrCheck, i + 1, j, data);
        }
        if (j > 0 && (arr[i][j] == arr[i][j - 1] || arr[i][j] == 1) && arrCheck[i][j - 1] != 1) { // 修改了这里,增加了对万能素材的检查
            checkAdjacentMaterial(arr, arrCheck, i, j - 1, data);
        }
    }
    

    这两个修改应该能让您的代码适应新的规则,即万能素材可以替代矩阵中的任意素材,只要相邻且数量达到五个或更多。现在,当您调用getAdjacentMaterialList方法时,它会正确地检测到包含万能素材的连击线。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月28日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?