上海长宁区中山西路1055号1510A座 13580503316 zhuce@j909.vip

游戏动态

游戏规则观察课:按键重映射的占用换位规则——六动作重映射的十三次换位(练习12)

2026-10-28

把一个动作改绑到已经占用的按键时,系统可能拒绝、清空原绑定或交换两个动作。明确使用换位规则后,就能解释为什么另一个动作也发生了变化。

下面使用独立的一组输入,逐步记录规则如何产生结果。建议先自行推演,再寻找与记录第一次不同的位置;检查时间单位、端点归属和处理顺序。所有约定均限定在本例中,其他作品采用不同实现并不自动意味着出错。

本例约定与输入

六个动作与六个按键初始一一对应。请求将某动作绑定到目标键时,若目标已属于另一动作,就交换这两个动作的按键;目标原本就是该动作的键则不变。没有未绑定状态。

动作顺序['移动', '跳跃', '交互', '地图', '背包', '暂停'] 初始按键['K5', 'K3', 'K2', 'K4', 'K1', 'K6'] 请求[动作编号,目标键编号]:[[5, 1], [0, 2], [4, 3], [2, 3], [2, 5], [5, 5], [3, 3], [5, 0], [4, 2], [3, 2], [3, 1], [4, 0], [5, 0]]

过程与结果

请求1将“暂停”绑定K2,该键原属“交互”;与其交换旧键K6。结果按动作顺序为['K5', 'K3', 'K6', 'K4', 'K1', 'K2']。

请求2将“移动”绑定K3,该键原属“跳跃”;与其交换旧键K5。结果按动作顺序为['K3', 'K5', 'K6', 'K4', 'K1', 'K2']。

请求3将“背包”绑定K4,该键原属“地图”;与其交换旧键K1。结果按动作顺序为['K3', 'K5', 'K6', 'K1', 'K4', 'K2']。

请求4将“交互”绑定K4,该键原属“背包”;与其交换旧键K6。结果按动作顺序为['K3', 'K5', 'K4', 'K1', 'K6', 'K2']。

请求5将“交互”绑定K6,该键原属“背包”;与其交换旧键K4。结果按动作顺序为['K3', 'K5', 'K6', 'K1', 'K4', 'K2']。

请求6将“暂停”绑定K6,该键原属“交互”;与其交换旧键K2。结果按动作顺序为['K3', 'K5', 'K2', 'K1', 'K4', 'K6']。

请求7将“地图”绑定K4,该键原属“背包”;与其交换旧键K1。结果按动作顺序为['K3', 'K5', 'K2', 'K4', 'K1', 'K6']。

请求8将“暂停”绑定K1,该键原属“背包”;与其交换旧键K6。结果按动作顺序为['K3', 'K5', 'K2', 'K4', 'K6', 'K1']。

请求9将“背包”绑定K3,该键原属“移动”;与其交换旧键K6。结果按动作顺序为['K6', 'K5', 'K2', 'K4', 'K3', 'K1']。

请求10将“地图”绑定K3,该键原属“背包”;与其交换旧键K4。结果按动作顺序为['K6', 'K5', 'K2', 'K3', 'K4', 'K1']。

请求11将“地图”绑定K2,该键原属“交互”;与其交换旧键K3。结果按动作顺序为['K6', 'K5', 'K3', 'K2', 'K4', 'K1']。

请求12将“背包”绑定K1,该键原属“暂停”;与其交换旧键K4。结果按动作顺序为['K6', 'K5', 'K3', 'K2', 'K1', 'K4']。

请求13将“暂停”绑定K1,该键原属“背包”;与其交换旧键K4。结果按动作顺序为['K6', 'K5', 'K3', 'K2', 'K4', 'K1']。

最后映射['K6', 'K5', 'K3', 'K2', 'K4', 'K1'],六个键仍然各使用一次。

如何独立复核

同时维护动作到按键和按键到动作两张表,每次交换后两表都应互为逆映射。全部按键仍只出现一次,不能让两个动作意外同时占用同一键。

键名只是练习标签,不代表特定设备的真实按键。实际界面若还支持组合键、上下文动作或保留键,应明确那些额外限制;本例的一一换位不自动覆盖这些情况。

测试时保留原始数据与中间状态,再只改变一个条件作比较。先检查空状态、相等边界、重复输入和最后一步,再比较整体结果;不要为了让最后的数字相同而跳过前面已经出现的差异。明确规则后,复核才有可以重复的依据。