スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

【タイピングゲーム 第5回】"ん"に対応する

タイピングゲームを作っています。

yushi-dev.hatenablog.com

技術スタックは下記の通りです。

  • 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

まとめ

ゴリゴリとしたロジックが増えてきました。

引き続き頑張ります。