diff --git a/ui-src/src/components/interactions/DragPlace.vue b/ui-src/src/components/interactions/DragPlace.vue
new file mode 100644
index 0000000..c959a05
--- /dev/null
+++ b/ui-src/src/components/interactions/DragPlace.vue
@@ -0,0 +1,96 @@
+
+
+
+ {{ over ? '放这里!' : '把道具拖到这里' }}
+
+
+
+ {{ propVisual(it.name).emoji }}
+ {{ it.name }}
+
+
+
+
+
+
+
+
diff --git a/ui-src/src/components/interactions/FindSpot.vue b/ui-src/src/components/interactions/FindSpot.vue
new file mode 100644
index 0000000..9598d8c
--- /dev/null
+++ b/ui-src/src/components/interactions/FindSpot.vue
@@ -0,0 +1,77 @@
+
+
+
+
+ {{ propVisual(it.name).emoji }}
+
+ {{ scene.emoji }}
+
+ 场景里藏着线索,点一点找到它!
+
+
+
+
+
+
diff --git a/ui-src/src/components/interactions/LinkMatch.vue b/ui-src/src/components/interactions/LinkMatch.vue
new file mode 100644
index 0000000..9294ed0
--- /dev/null
+++ b/ui-src/src/components/interactions/LinkMatch.vue
@@ -0,0 +1,124 @@
+
+
+ 先点一个人物,再点它用的道具
+
+
+
+ {{ (p.name || '?').slice(0, 1) }}
+ {{ p.name }}
+
+
+
+
+
+
+
+ {{ propVisual(it.name).emoji }}
+ {{ it.name }}
+
+
+
+
+
+
+
+
+
diff --git a/ui-src/src/components/interactions/PropPick.vue b/ui-src/src/components/interactions/PropPick.vue
new file mode 100644
index 0000000..5e39de1
--- /dev/null
+++ b/ui-src/src/components/interactions/PropPick.vue
@@ -0,0 +1,74 @@
+
+
+ 点一点,选一个道具
+
+
+ {{ visual.emoji }}
+ {{ it.name }}
+
+
+ 再想想,看看情境里发生了什么~
+
+
+
+
+
+
diff --git a/ui-src/src/components/interactions/StepSort.vue b/ui-src/src/components/interactions/StepSort.vue
new file mode 100644
index 0000000..eeb93cb
--- /dev/null
+++ b/ui-src/src/components/interactions/StepSort.vue
@@ -0,0 +1,107 @@
+
+
+ 按住道具拖一拖,按顺序排好
+
+ {{ i + 1 }}
+ {{ propVisual(it.name).emoji }}
+ {{ it.name }}
+
+ 顺序不对哦,再试试~
+
+
+
+
+
+