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

如何让Google Sheets记住数值?蛇梯棋游戏逻辑实现求助

解决Google Sheets蛇梯棋位置记忆问题

核心问题是你当前的计算逻辑基于所有掷骰数的总和,而非经过蛇梯修正后的「最终位置」。要解决这个问题,需要专门追踪每一步的实际位置,让后续掷骰基于上一次的最终位置计算。

以下是具体实现步骤:

1. 规划单元格布局

  • A列:存放每次掷出的骰子点数(从A2开始,A2对应第一次掷骰,A3对应第二次,以此类推)
  • B列:存放每次掷骰后经过蛇梯修正的最终位置(B2对应第一次位置,B3对应第二次位置,以此类推)

2. 第一次掷骰的位置计算

在B2中输入公式,先计算初始掷骰位置,再处理蛇梯:

=LET(
  initial_pos, A2,
  final_pos, SWITCH(
    initial_pos,
    2, 21,   // 梯子:2→21
    8, 30,   // 可继续添加所有梯子/蛇的对应关系
    10, 4,   // 蛇:10→4
    19, 8,   // 可继续添加所有蛇的对应关系
    initial_pos  // 默认:无蛇梯时的位置
  ),
  final_pos
)

注:把你游戏里所有蛇梯的位置对都补充到SWITCH函数中,格式为触发位置, 目标位置,最后一个initial_pos是默认值。

3. 后续掷骰的位置计算

从B3开始,每一行都基于上一次的最终位置(B列上一行)加上当前掷骰数,再处理蛇梯,同时判断是否超过100(蛇梯棋规则:超过终点不移动):

=LET(
  new_initial, B2+A3,
  final_pos, SWITCH(
    new_initial,
    2, 21,
    8, 30,
    10, 4,
    19, 8,
    new_initial
  ),
  IF(final_pos>100, B2, final_pos)  // 超过100则停留在原位置
)

把B3的公式向下拖动,后续行自动套用逻辑。

4. 固定掷骰结果(可选)

如果用=RANDBETWEEN(1,6)生成骰子数,每次刷新表格都会重新随机,导致位置混乱。可以用Google Apps Script实现点击按钮生成固定掷骰数:

  1. 打开「扩展程序」→「Apps脚本」
  2. 粘贴以下代码:
function rollDice() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow();
  // 找到A列最后一个非空行的下一行,写入1-6的随机数
  sheet.getRange(lastRow + 1, 1).setValue(Math.floor(Math.random() * 6) + 1);
}
  1. 保存脚本,回到表格,添加一个按钮(插入→绘图),绑定rollDice函数,点击按钮即可在A列新增一次掷骰结果。

5. 规则补充

  • 如果玩家刚好到达100,游戏结束,后续掷骰不再移动位置,可以在公式中添加判断:IF(final_pos=100, 100, IF(final_pos>100, B2, final_pos))
  • 蛇梯的触发逻辑是:只要落在触发位置(不管是掷骰直接到还是移动到),就立刻跳到目标位置,公式中已经覆盖了这个逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:10:22