タイピングゲームを作っています。
技術スタックは下記の通りです。
- Vue.js3
- Vite
今回は、"ん"に対応します。
"ん"への対応
"ん"が特殊な動きをするのは、例えば"あんこ"と入力するときに、"annko"という入力の他、"anko"という入力もできることです。
つまり、"n"を1回の入力で済ませられるケースがあります。
これに対応する実装が、下記の通りです。
switch (textArray.value[inputIndex.value]) { case 'ん': if ( inputCurrentLetter.value === 'n' && key !== 'n' && textAlphabetArray.value.length >= inputIndex.value + 1 && !['a', 'i', 'u', 'e', 'o', 'n'] .includes(textAlphabetArray.value[inputIndex.value + 1] .map((item: string) => item[0]) ) && textAlphabetArray.value[inputIndex.value + 1] .map((item: string) => item[0]) .includes(key) ) { inputTextArray.value.push(inputCurrentLetter.value) inputCurrentLetter.value = key return true } }
つまり、
現在の入力ひらがなが"ん"で、
nを一回入力済みで、
今回の入力値がnではなくて、
次の入力ひらがなが存在し、
そのアルファベットの最初の文字が母音や"n"ではなく、
そのアルファベットの最初の文字が入力された場合に、
1つのnのみで"ん"を入力できます。
Pull Request
https://github.com/nek0meshi/typing/pull/5
まとめ
ゴリゴリとしたロジックが増えてきました。
引き続き頑張ります。