You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Kotlin 4x3老虎机获胜图案识别问题求助

老虎机获胜图案匹配逻辑修正方案

常见错误定位

  1. 图案状态读取时机错误:若在旋转动画未完全结束时就调用判断函数,会读取到转轮的中间状态而非最终停止的图案。
  2. 遍历逻辑方向错误:4x3布局(4个转轮列,每个转轮显示3行图案)的获胜判断,需针对指定获胜线的对应行匹配,而非遍历转轮的所有行。
  3. 匹配条件不严谨:原代码可能仅判断单一行列,未覆盖多获胜线场景,或存在字符串大小写/拼写不一致导致的匹配失败。

修正后代码示例

假设你的转轮类有displayedPatterns属性,存储当前显示的3个图案(索引0=顶行,1=中间行,2=底行):

// 核心获胜判断函数
fun checkWinningCombinations(): Boolean {
    // 定义4x3布局支持的所有获胜线(每个元素对应转轮的行索引)
    val winningLines = listOf(
        listOf(1, 1, 1, 1), // 横向中间线(最常见获胜线)
        listOf(0, 0, 0, 0), // 横向顶线
        listOf(2, 2, 2, 2), // 横向底线
        listOf(0, 1, 2, 1), // 左上-右下斜线
        listOf(2, 1, 0, 1)  // 右上-左下斜线
    )

    // 按布局顺序获取4个转轮实例
    val reels = listOf(reel1, reel2, reel3, reel4)
    // 提取每个转轮当前显示的3个图案
    val reelCurrentPatterns = reels.map { it.displayedPatterns }

    // 遍历每条获胜线,逐一匹配
    for (line in winningLines) {
        val currentLinePatterns = mutableListOf<String>()
        // 取出当前获胜线对应的所有转轮图案
        for ((reelIndex, rowIndex) in line.withIndex()) {
            currentLinePatterns.add(reelCurrentPatterns[reelIndex][rowIndex])
        }
        // 判断当前线所有图案是否一致(可根据需求修改为特定组合,比如3个相同+1个特殊符号)
        if (currentLinePatterns.distinct().size == 1) {
            triggerWin(currentLinePatterns[0])
            return true
        }
    }
    return false
}

// 获胜触发逻辑(示例)
private fun triggerWin(pattern: String) {
    // 播放获胜音效、高亮对应线条、弹出奖励提示等
}

额外注意事项

  • 确保在动画结束后执行判断:在旋转动画的onAnimationEnd回调中调用checkWinningCombinations,避免读取到未稳定的图案状态。
  • 统一图案标识:所有图案的字符串标识需完全一致(比如避免"cherry"和"Cherry"混用)。
  • 对齐布局与代码顺序:XML布局中转轮的排列顺序,需与代码中reels列表的顺序完全对应,防止匹配错位。

内容的提问来源于stack exchange,提问作者Sheila Ullom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:57:01