用 vscode 中的 TRAE 插件给蜘蛛纸牌增加回撤功能,写了一个任务计划,然后交给插件生成代码,模型用的默认DouBao-Seed-1.6,粗看了一下生成的代码,感觉不错,至少大体上该增加代码的地方,都写了,但具体能不能运行,不知道。我并不期望能直接运行,它能写个框架也很好,到时候再改改就行。

下边是任务计划的具体内容:


我想给蜘蛛纸牌做回撤功能,以下是任务计划:

两种情况:
第一,单牌的回撤。
第二,整叠的回撤
两个主要功能:
第一,需要记录动作
第二,需要执行动作
记录格式:
每叠的序列:0,1,2,3,4,5,6,7,8,9
记录指令格式:
'move', 3, 4, [4,5,6], type
'call', [4, 8, 9, 8 ...], type
'gather', 3,5,[1,2,3,4,5,6],[7,8,9,10,11,12,13], type.
move为移动,第一个数字3,为移动的起始堆叠序列,4为放下堆叠序列,[4, 5, 6]是移动的具体牌,type是纸牌的类型。
call为发牌,数组内为具体的序列,type为纸牌类型
gather为完成收牌,数组内为具体序列,3,5表示从3移动到5,也就代表序列[1,2,3,4,5,6]堆叠到[7,8,9,10,11,12,13]刚好完成清理收集。
在移动纸牌时,程序记录指令,具体实现为:创建一个数组保存指令,然后将每一步的指令push进去,而当回撤时,则从数组的尾部pop出指令,然后执行,实现回撤功能。
单牌回撤,原本3移动到4,回撤时,就是反过来,4移动到3,然后顺带检查移动的牌和指令中的牌是否完全一致,作为验证。
call指令回撤(call为发牌,也就是一次发10张牌),也就是将每一叠最后的牌回撤,放到last(last对象主要管剩下的牌)对象里。
gather指令回撤,也就是完成一叠1~13,回撤时取出done对象内的纸牌,不能直接取出1~13张牌,因为当牌恢复以后,又会触发收牌功能。所以应该分两步,第一步将1~13全部放在堆叠序列5上面,然后再把[1,2,3,4,5,6]放到3上面,也就是分两步执行。
注意,撤销中所有的纸牌移动都要有动画,通过jquery.animate实现,在html页面的功能按钮中增加一个回撤按键,点击按键执行回撤功能。