From 94c7cab5531cce859083a5266a9888711a611eee Mon Sep 17 00:00:00 2001 From: DROUP123 <10160685062@qq.com> Date: Thu, 8 Jan 2026 19:36:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B8=B8=E6=88=8F=E9=80=BB=E8=BE=91):=20?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E6=B5=B7=E9=BE=9F=E6=B1=A4=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E5=92=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加回车键监听事件方便用户输入 扩展谜题库并改进答案判断逻辑 修改输入框提示信息以指导用户 特别处理与死亡相关的问题判断 --- .env_example copy | 1 - requirements.txt | 2 - turtle_soup_html.html | 103 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 95 insertions(+), 11 deletions(-) delete mode 100644 .env_example copy delete mode 100644 requirements.txt diff --git a/.env_example copy b/.env_example copy deleted file mode 100644 index 44683e9..0000000 --- a/.env_example copy +++ /dev/null @@ -1 +0,0 @@ -DEEPSEEK_API_KEY=***** \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index f42172a..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -openai>=2.14.0 -python-dotenv>=1.2.1 \ No newline at end of file diff --git a/turtle_soup_html.html b/turtle_soup_html.html index c2c7a4a..e022bf3 100644 --- a/turtle_soup_html.html +++ b/turtle_soup_html.html @@ -344,7 +344,7 @@
- +
@@ -398,6 +398,61 @@ story: "一个人在雨中行走,没有带任何雨具,头发却一点也没湿。", solution: "这个人是光头,没有头发,所以即使在雨中行走,头发也不会湿。", keywords: ["光头", "没有头发"] + }, + { + story: "一个女人打开冰箱,看到里面有一瓶牛奶,她喝了一口,然后马上把牛奶扔掉了。", + solution: "这瓶牛奶已经过期了,女人喝了一口发现味道不对,所以马上把它扔掉了。", + keywords: ["牛奶", "过期", "味道不对"] + }, + { + story: "一个人走进电梯,按下了10楼的按钮。当电梯到达5楼时,他开始疯狂地按10楼的按钮,但电梯还是继续上升。", + solution: "这个人在电梯里遭遇了火灾,他想尽快到达10楼逃生,但电梯已经被火灾影响,开始自动向顶层运行。", + keywords: ["电梯", "火灾", "逃生", "顶层"] + }, + { + story: "一个人在沙漠中行走,他看到远处有一个瓶子,他跑过去捡起瓶子,打开瓶盖后,里面没有水,他却很高兴。", + solution: "这个瓶子里有一张藏宝图,所以即使没有水,他也很高兴。", + keywords: ["沙漠", "瓶子", "藏宝图"] + }, + { + story: "一个人在房间里看书,突然灯灭了,他放下书,走到窗前,看到窗外有人在跳舞。", + solution: "房间里的灯灭了是因为停电了,而窗外有人在跳舞是因为他们在庆祝某个节日,使用了篝火照明。", + keywords: ["停电", "窗外", "跳舞", "篝火"] + }, + { + story: "一个人走进一家商店,买了一包口香糖,付了钱后,他没有打开口香糖,而是直接离开了商店。", + solution: "这个人是为了找零才买的口香糖,他需要一些零钱来乘坐公共汽车。", + keywords: ["口香糖", "找零", "公共汽车"] + }, + { + story: "一个女人在午夜接到一个电话,电话那头没有人说话,只有沉重的呼吸声。她挂断电话后,听到门外有脚步声,于是她拨打了报警电话。警察到达后,却发现门外什么人都没有。", + solution: "打电话的人是这个女人的邻居,他在监视她。当女人挂断电话后,邻居正准备敲门,但听到她拨打报警电话,就迅速离开了。警察到达时,邻居已经跑远了。", + keywords: ["午夜电话", "脚步声", "邻居", "监视", "报警"] + }, + { + story: "一个男人在森林里迷路了,他找到了一个小屋,里面有一张桌子和一把椅子,桌子上放着一个手电筒和一张纸条,纸条上写着'不要打开手电筒'。男人打开了手电筒,然后他就死了。", + solution: "这个小屋是一个猎人的陷阱,手电筒是触发陷阱的开关。当男人打开手电筒时,触发了机关,导致小屋倒塌,男人被压死了。", + keywords: ["森林迷路", "小屋", "手电筒", "陷阱", "机关"] + }, + { + story: "一个女人在浴缸里洗澡,突然她听到门外有钥匙转动的声音。她从浴缸里出来,走到门口,透过猫眼看到一个陌生男人正在开门。她吓得赶紧跑回卧室,锁上门。过了一会儿,她听到客厅里有脚步声,然后脚步声消失了。她打开卧室门,发现客厅里没有人,但她的钱包不见了。", + solution: "这个陌生男人是一个小偷,他用万能钥匙打开了门。当他听到女人的声音时,他躲在了客厅的窗帘后面。女人跑回卧室后,他趁机偷走了钱包,然后从窗户逃跑了。", + keywords: ["浴缸洗澡", "陌生男人", "万能钥匙", "窗帘", "窗户逃跑"] + }, + { + story: "一个人在电影院看电影,当电影放到一半时,他突然站起来,走出电影院,然后自杀了。", + solution: "这个人是一个凶手,他杀了人后,将尸体藏在了电影院的座椅下面。当电影放到一半时,他看到银幕上显示的是他杀人的场景,他以为自己的罪行被发现了,所以选择了自杀。", + keywords: ["电影院", "尸体", "座椅", "杀人场景", "罪行暴露"] + }, + { + story: "一个女人在晚上开车回家,她看到路边有一个穿着白色衣服的女人在挥手。她停下来,让那个女人上车。那个女人坐在后座上,一句话也不说。当女人开到家门口时,她回头一看,发现后座上没有人,只有一件白色的衣服。", + solution: "那个挥手的女人是一个幽灵,她在车祸中丧生,一直徘徊在事故地点。当女人让她上车时,她的灵魂上了车,但当车开到安全的地方时,她的灵魂就消失了。", + keywords: ["晚上开车", "白色衣服", "幽灵", "车祸", "灵魂"] + }, + { + story: "一个男人在酒店房间里睡觉,突然他被一声巨响惊醒。他打开灯,发现房间里什么都没有。他走到窗前,看到楼下有一个人躺在地上,已经死了。第二天早上,警察来到酒店,询问他昨晚是否听到了什么声音。他告诉警察他听到了一声巨响,然后看到楼下有人死了。警察听完后,立即逮捕了他。", + solution: "这个男人是一个杀手,他用狙击枪杀死了楼下的人。当他开枪时,房间的窗户被枪声震得发出巨响。他走到窗前查看是否命中目标,却被对面建筑的监控摄像头拍了下来。警察通过监控录像找到了他。", + keywords: ["酒店房间", "巨响", "狙击枪", "监控摄像头", "杀手"] } ]; @@ -406,6 +461,14 @@ loadGameStats(); updateStats(); addMessage("系统", "欢迎来到海龟汤游戏!请选择游戏模式开始游戏。"); + + // 添加回车键监听事件 + const inputElement = document.getElementById('question-input'); + inputElement.addEventListener('keypress', function(e) { + if (e.key === 'Enter') { + sendMessage(); + } + }); } // 选择游戏模式 @@ -557,14 +620,38 @@ // 简单的回答逻辑 let answer = "无关"; + const lowerQuestion = question.toLowerCase(); + const lowerSolution = gameState.solution.toLowerCase(); - // 如果问题包含汤底中的关键词,回答"是"或"否" - // 这里使用简单的规则,实际应用中可以更复杂 - if (gameState.solution.toLowerCase().includes(question.toLowerCase())) { - answer = "是"; - } else if (gameState.solution.toLowerCase().includes(question.toLowerCase().replace("不", "")) || - gameState.solution.toLowerCase().includes(question.toLowerCase().replace("不是", "是"))) { - answer = "否"; + // 专门处理与死亡相关的问题 + const deathKeywords = ["死", "死亡", "遇难", "杀", "自杀", "丧生", "去世", "毙命", "丧命", "暴毙"]; + const isDeathQuestion = deathKeywords.some(keyword => lowerQuestion.includes(keyword)); + const hasDeathInSolution = deathKeywords.some(keyword => lowerSolution.includes(keyword)); + + if (isDeathQuestion) { + if (hasDeathInSolution) { + // 检查问题是否包含否定词 + if (lowerQuestion.includes("不") || lowerQuestion.includes("没") || lowerQuestion.includes("无")) { + answer = "否"; + } else { + answer = "是"; + } + } else { + // 检查问题是否包含否定词 + if (lowerQuestion.includes("不") || lowerQuestion.includes("没") || lowerQuestion.includes("无")) { + answer = "是"; + } else { + answer = "否"; + } + } + } else { + // 原有逻辑,处理其他问题 + if (lowerSolution.includes(lowerQuestion)) { + answer = "是"; + } else if (lowerSolution.includes(lowerQuestion.replace("不", "")) || + lowerSolution.includes(lowerQuestion.replace("不是", "是"))) { + answer = "否"; + } } // 记录回答