diff --git a/package.json b/package.json index 452a1be..31c4598 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@icon-park/vue-next": "^1.4.2", "@microsoft/signalr": "^8.0.0", "axios": "1.6.0", + "marked": "^13.0.0", "pinia": "^2.0.36", "vue": "^3.3.2", "vue-router": "^4.2.0" diff --git a/public/rules/CypherChallenge-image-1.png b/public/rules/CypherChallenge-image-1.png new file mode 100644 index 0000000..fe25b26 Binary files /dev/null and b/public/rules/CypherChallenge-image-1.png differ diff --git a/public/rules/CypherChallenge-image-2.png b/public/rules/CypherChallenge-image-2.png new file mode 100644 index 0000000..f212c85 Binary files /dev/null and b/public/rules/CypherChallenge-image-2.png differ diff --git a/public/rules/CypherChallenge-image.png b/public/rules/CypherChallenge-image.png new file mode 100644 index 0000000..9bf26b7 Binary files /dev/null and b/public/rules/CypherChallenge-image.png differ diff --git a/public/rules/CypherChallenge.md b/public/rules/CypherChallenge.md new file mode 100644 index 0000000..b387bbb --- /dev/null +++ b/public/rules/CypherChallenge.md @@ -0,0 +1,47 @@ +# 大帝的挑战 + +游玩一个根据线索猜测这是哪位干员的游戏。 + +## 如何游玩 + +整局游戏由10道题目组成,玩家们将会依次猜测这十位干员是谁。 + +游戏主面板中,由两部分组成,线索总览和表格面板。 + +移动版页面如下: +![alt text](/rules/CypherChallenge-image.png) +桌面版页面如下: +![alt text](/rules/CypherChallenge-image-1.png) + +所有玩家可以随意打字说出某个方舟中干员的代号。 + +一开始没有任何线索,玩家可以任意发言,比如某位玩家此时发送**阿米娅** + +![alt text](/rules/CypherChallenge-image-2.png) + +游戏面板中会立刻将列出阿米娅的名字,并且在后面跟随一系列大拇指图标。这些图标可能是红色或者绿色。 + +绿色表示**该干员**,本例中是**阿米娅**和**题目的谜底**在这个词条上相同。 +比如图中**性别**和**职业**两个词条下是绿色大拇指,就表示这一题的谜底干员,他的性别和阿米娅一样,都是女性干员。而他的职业和阿米娅一样,都是术师。 + +红色表示该干员在这个词条和谜底不一致。 + +游戏中的每一题,都会在**势力**, **职业**, **子职业**, **稀有度**, **性别**, **队伍**, **阵营**, **画师**中抽取6个词条(取决于游戏房间设置)。所有词条初始均显示为???。直到某位玩家发送的干员和谜底在该词条上一致,此时会解锁该词条并标记一个绿色大拇指。 + +每一题有10次回答干员名称的机会,若全部耗尽还未猜出谜底,会公布答案并进入下一题。 + +上一题的答案,会作为下一题的第一条线索。因此从第二题开始,玩家们只有9次机会猜测。 + +## 计分规则 + +每答出一个干员 +200分 + +每首次解锁一个线索 +50分 + +不设扣分项 + +## 生涯统计 + +一局游戏只有至少两人参与游戏并都有得分,才会计入玩家生涯统计数据。 + +只有当你发送的内容确实是一个干员代号时,才会参与计算正确率,你回答的干员是正确谜底,或者首次解锁了一个线索时,记为正确答案,否则记为错误。 diff --git a/public/rules/SchulteGrid-image-1.png b/public/rules/SchulteGrid-image-1.png new file mode 100644 index 0000000..2386e0d Binary files /dev/null and b/public/rules/SchulteGrid-image-1.png differ diff --git a/public/rules/SchulteGrid-image-2.png b/public/rules/SchulteGrid-image-2.png new file mode 100644 index 0000000..8dbc5db Binary files /dev/null and b/public/rules/SchulteGrid-image-2.png differ diff --git a/public/rules/SchulteGrid.md b/public/rules/SchulteGrid.md new file mode 100644 index 0000000..3969f54 --- /dev/null +++ b/public/rules/SchulteGrid.md @@ -0,0 +1,40 @@ +# 技能方格 + +游玩一个在方格里找干员技能名字的游戏。 + +## 如何游玩 + +游戏主面板中,你将看到一个有100个字组成的10x10的方格。 +方格中其实包含了多位干员的多个技能,如下图所示: + +![技能方格总图](/rules/SchulteGrid-image-1.png) + +你的任务,就是抢在其他玩家之前,找到某个技能,并回答**拥有该技能的干员的干员代号。** + +比如你发现了**假日风暴**,并记起来他是**假日威龙陈**的技能。 + +![alt text](/rules/SchulteGrid-image-2.png) + +你就可以在聊天框中打出**假日威龙陈**并发送,这样你就得到了200分。 + +一个技能的每个字都是按顺序连在一起的。 + +游戏将会一直进行到房主关闭游戏房间,或所有干员全部回答出来。 +游戏房间关闭时,如果还有未答出的干员,兔兔会公布答案。 + +## 备注 + +1. 谜题的生成经过算法的控制,答案是确保唯一的。 +2. 一个干员可能有不止一个技能在方格中,回答该干员可以多倍得分。 + +## 计分规则 + +每答出一个干员 +200分 + +不设扣分项 + +## 生涯统计 + +一局游戏只有至少两人参与游戏并都有得分,才会计入玩家生涯统计数据。 + +只有当你发送的内容确实是一个干员代号时,才会参与计算正确率,该干员在本题则记为正确答案,否则记为错误答案。 diff --git a/src/mobile/views/game/CypherChallenge.vue b/src/mobile/views/game/CypherChallenge.vue index 640cfb7..d14b0a4 100644 --- a/src/mobile/views/game/CypherChallenge.vue +++ b/src/mobile/views/game/CypherChallenge.vue @@ -27,10 +27,11 @@ - +
游戏已结束
+ 关闭
@@ -83,7 +84,7 @@ import type { CSSProperties } from 'vue' import { computed, onUnmounted, ref } from 'vue' import { useRoute } from 'vue-router' -import { Check, SendOne } from '@icon-park/vue-next' +import { Check, SendOne, Close } from '@icon-park/vue-next' import { useGameHubStore } from '@/stores/gamehub' import { listToDict } from '@/utils' import type { SignalrResponse } from '@/api/signalr' @@ -268,6 +269,10 @@ function getRallyPointData() { return "PrepareNextQuestion:" + currentQuestionIndex.value; } +function closeResultPopup(){ + nextQuestionShown.value = false +} + function prepareNextQuestion() { if(countDownActive.value==true){ return diff --git a/src/mobile/views/room/WaitingRoom.vue b/src/mobile/views/room/WaitingRoom.vue index e416b76..8d5cbd9 100644 --- a/src/mobile/views/room/WaitingRoom.vue +++ b/src/mobile/views/room/WaitingRoom.vue @@ -1,196 +1,65 @@ diff --git a/yarn.lock b/yarn.lock index 6d83806..8442969 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1792,6 +1792,11 @@ magic-string@^0.30.1, magic-string@^0.30.10, magic-string@^0.30.5: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +marked@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-13.0.0.tgz#c18cda8a1fd0055859060c971e30f57beb79fd46" + integrity sha512-VTeDCd9txf4KLLljUZ0nljE/Incb9SrWuueE44QVuU0pkOdh4sfCeW1Z6lPcxyDRSVY6rm8db/0OPaN75RNUmw== + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"