m0_65749592 2024-05-31 18:39 采纳率: 35.5%
浏览 3

连线消消还会下落JAVA 代码上下左右相邻的可以消除 还有万能素材,我这个万能素材有时候页面生效了

JAVA 代码 上下左右相邻的可以消除 还有万能素材,我这个万能素材有时候页面生效了,有时候没有 不知道为什么,还是我代码有问题,帮我看看 ,我游戏图那个粉色圆糖是万能素材,按道理那四个紫色腰糖在一起,加上那个圆糖万能就有5个了 就可以产生连线了,但是我这万能有时候生效有时候没有不知道为什么 ,下面是我一步一步调用的代码,如果有问题,可以在我原先基础上代码改吗

img

img


img

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-31 18:39
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    从您提供的两张代码截图中,我注意到了一些可能的问题点,这些可能会导致万能素材有时生效有时不生效的问题。以下是我的分析和建议:

    代码分析

    1. 万能素材逻辑:

      • checkAdjacentMaterial方法中,您检查了当前元素与上下左右元素是否相同或者是否为万能素材(arr[i][j]==arr[i-1][j] || arr[i-1][j]==131等),如果相同则递归调用checkAdjacentMaterial方法。
      • 但是,代码中存在一些语法错误,例如if语句后缺少{,以及一些逻辑判断的符号错误,如|应该是||
    2. 递归调用:

      • 递归调用checkAdjacentMaterial时,需要确保递归的终止条件正确设置,否则可能会导致无限递归。
    3. 万能素材的标记:

      • arrCheck数组中标记了万能素材的位置,但是需要确保在递归调用过程中,这些标记被正确地传递和更新。
    4. 数组越界问题:

      • checkAdjacentMaterial方法中,当ij为0或最大值时,需要检查是否越界。

    代码建议

    以下是对您代码的一些建议,以解决可能的问题:

    1. 修复语法错误:

      • 修复if语句后的{缺失问题。
      • |替换为||以修复逻辑判断错误。
    2. 检查递归终止条件:

      • 确保递归调用时,当元素不是万能素材且与相邻元素不同时,递归能够正确终止。
    3. 更新arrCheck数组:

      • 在递归调用checkAdjacentMaterial时,确保arrCheck数组的状态被正确更新。
    4. 防止数组越界:

      • 在访问数组元素前,添加检查以确保ij的值在数组的范围内。

    示例代码修正

    以下是对您提供的代码片段的一些修正示例:

    public void checkAdjacentMaterial(int[][] arr, int[][] arrCheck, int i, int j, SlotGameLineData data, List<String> wildLists) {
        if (arrCheck[i][j] == 1 || arr[i][j] == 0) {
            return;
        }
        if (i < 0 || i >= 7 || j < 0 || j >= 7 || arrCheck[i][j] == 1 || arr[i][j] == 0) {
            return;
        }
        arrCheck[i][j] = 1;
        data.setColNum(data.getColNum() + 1);
        data.setMaterialPos(data.getMaterialPos() + i + "_" + j + ",");
    
        // 检查上
        if (i > 0 && (arr[i][j] == arr[i-1][j] || arr[i-1][j] == 131) && arrCheck[i-1][j] != 1) {
            checkAdjacentMaterial(arr, arrCheck, i-1, j, data, wildLists);
        }
        // 检查下
        if (i < 6 && (arr[i][j] == arr[i+1][j] || arr[i+1][j] == 131) && arrCheck[i+1][j] != 1) {
            checkAdjacentMaterial(arr, arrCheck, i+1, j, data, wildLists);
        }
        // 检查左
        if (j > 0 && (arr[i][j] == arr[i][j-1] || arr[i][j-1] == 131) && arrCheck[i][j-1] != 1) {
            checkAdjacentMaterial(arr, arrCheck, i, j-1, data, wildLists);
        }
        // 检查右
        if (j < 6 && (arr[i][j] == arr[i][j+1] || arr[i][j+1] == 131) && arrCheck[i][j+1] != 1) {
            checkAdjacentMaterial(arr, arrCheck, i, j+1, data, wildLists);
        }
    }
    

    请注意,以上代码仅为示例,您需要根据实际情况进行调整。

    参考资料

    希望这些建议能帮助您解决问题。如果您需要进一步的帮助,请提供更多的代码上下文或详细描述问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月31日
  • 创建了问题 5月31日

悬赏问题

  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错