Wordle类游戏开发问题:.includes()判断异常致提示错误
Wordle类游戏字母判断逻辑修复
你的问题出在checkLetter函数的第二个判断条件上,逻辑完全错误:
letterW是从目标词word里取的字符,所以word.includes(letterW)永远为trueletterG是从猜词guessed里取的字符,所以guessed.includes(letterG)也永远为true
这就导致不管猜的字母在不在目标词里,true == true的条件都会成立,错误输出Wrong Spot。
正确的逻辑应该是:当字母位置不匹配时,检查当前猜的字母是否存在于目标词中——存在就输出Wrong Spot,不存在才输出Wrong Letter。
修改后的checkLetter函数代码如下:
function checkLetter(letterPos) { if (word.charAt(letterPos) == guessed.charAt(letterPos)) { console.log("Same Letter! " + letterPos) } else { let letterG = guessed.charAt(letterPos) // 直接判断猜的字母是否在目标词里 if (word.includes(letterG)) { console.log("Wrong Spot " + letterPos) } else { console.log("Wrong Letter " + letterPos) } } }
另外补充两个实用优化点:
- 目标词
"Lucas"是大小写敏感的,建议统一转成小写(或大写)后再判断,避免因大小写输入导致误判:const word = "Lucas".toLowerCase(); let guessed = prompt("Please Guess The Word").toLowerCase(); checkLength函数里用户重新输入后未再次校验长度,会导致错误输入直接跳过校验,建议修改为:function checkLength() { if (word.length == guessed.length) { console.log("It Worked") // 用循环替代重复调用,更简洁 for(let i=0; i<word.length; i++){ checkLetter(i) } } else { console.log("It Failed") guessed = prompt("Please Use 5 Letters").toLowerCase(); checkLength(); // 重新校验新输入的长度 } }
内容的提问来源于stack exchange,提问作者Project LuLo
相关产品推荐
相关产品推荐

