Skip to content

Commit

Permalink
feat: select kana by row
Browse files Browse the repository at this point in the history
  • Loading branch information
jerrylususu committed Dec 20, 2023
1 parent d978058 commit 43cdb1e
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 79 deletions.
33 changes: 27 additions & 6 deletions src/components/GojuonQuiz.vue
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@
{{ t('settings.test_on')}}:
{{ t('hiragana')}} <input type="checkbox" v-model="hiragana_enabled">
{{ t('katakana')}} <input type="checkbox" v-model="katakana_enabled">
<br />
{{ t('settings.enabled_rows')}}
<div>
<label v-for="(row, index) in all_supported_rows" :key="index">
<input type="checkbox" v-model="settings.enabled_rows" @change="initGame" :value="row">
{{ row }}
</label>
</div>
<p v-if="!hiragana_enabled && !katakana_enabled" style="color: red">{{ t('settings.nothing_can_be_shown')}}</p>
</details>

Expand Down Expand Up @@ -124,7 +132,8 @@ export default {
initial_input: true,
settings: {
correct_wait_ms: 1000,
font_css_str: 'serif, sans-serif'
font_css_str: 'serif, sans-serif',
enabled_rows: ["a", "ka", "sa", "ta", "na", "ha", "ma", "ya", "ra", "wa", "(...)"]
},
current: {
hiragana: "",
Expand All @@ -146,6 +155,7 @@ export default {
langs: ['zh', 'en'],
hiragana_enabled: true,
katakana_enabled: true,
all_supported_rows: ["a", "ka", "sa", "ta", "na", "ha", "ma", "ya", "ra", "wa", "(...)"]
}
},
computed: {
Expand Down Expand Up @@ -285,7 +295,7 @@ export default {
next_item = this.pool[random_index]
this.pool.splice(random_index, 1)
} else {
next_item = gujuon_data[Math.floor(Math.random() * gujuon_data.length)];
next_item = this.randomInRange();
}
this.current.sound = next_item.sound;
Expand Down Expand Up @@ -389,13 +399,24 @@ export default {
}
},
fillPool() {
this.pool = [...gujuon_data];
this.pool = [...gujuon_data].filter(x =>
this.settings.enabled_rows.includes(x.row)
|| (this.settings.enabled_rows.includes("(...)") && !this.all_supported_rows.includes(x.row)));
},
randomInRange() {
const selected = [...gujuon_data].filter(x =>
this.settings.enabled_rows.includes(x.row)
|| (this.settings.enabled_rows.includes("(...)") && !this.all_supported_rows.includes(x.row)));
return selected[Math.floor(Math.random() * selected.length)];
},
initGame() {
this.fillPool();
this.next();
this.buildHistoryMatrix();
}
},
mounted() {
this.fillPool()
this.next()
this.buildHistoryMatrix()
this.initGame();
},
setup() {
const { t } = useI18n({
Expand Down
142 changes: 71 additions & 71 deletions src/gojuon.js
Original file line number Diff line number Diff line change
@@ -1,75 +1,75 @@
const gujuon_data = [
{"hiragana": "あ", "katakana": "ア", "sound": "a", "type": "清", "skip_count": ""},
{"hiragana": "い", "katakana": "イ", "sound": "i", "type": "清", "skip_count": ""},
{"hiragana": "う", "katakana": "ウ", "sound": "u", "type": "清", "skip_count": ""},
{"hiragana": "え", "katakana": "エ", "sound": "e", "type": "清", "skip_count": ""},
{"hiragana": "お", "katakana": "オ", "sound": "o", "type": "清", "skip_count": ""},
{"hiragana": "か", "katakana": "カ", "sound": "ka", "type": "清", "skip_count": ""},
{"hiragana": "き", "katakana": "キ", "sound": "ki", "type": "清", "skip_count": ""},
{"hiragana": "く", "katakana": "ク", "sound": "ku", "type": "清", "skip_count": ""},
{"hiragana": "け", "katakana": "ケ", "sound": "ke", "type": "清", "skip_count": ""},
{"hiragana": "こ", "katakana": "コ", "sound": "ko", "type": "清", "skip_count": ""},
{"hiragana": "さ", "katakana": "サ", "sound": "sa", "type": "清", "skip_count": ""},
{"hiragana": "し", "katakana": "シ", "sound": "shi", "type": "清", "skip_count": ""},
{"hiragana": "す", "katakana": "ス", "sound": "su", "type": "清", "skip_count": ""},
{"hiragana": "せ", "katakana": "セ", "sound": "se", "type": "清", "skip_count": ""},
{"hiragana": "そ", "katakana": "ソ", "sound": "so", "type": "清", "skip_count": ""},
{"hiragana": "た", "katakana": "タ", "sound": "ta", "type": "清", "skip_count": ""},
{"hiragana": "ち", "katakana": "チ", "sound": "chi", "type": "清", "skip_count": ""},
{"hiragana": "つ", "katakana": "ツ", "sound": "tsu,tu", "type": "清", "skip_count": ""},
{"hiragana": "て", "katakana": "テ", "sound": "te", "type": "清", "skip_count": ""},
{"hiragana": "と", "katakana": "ト", "sound": "to", "type": "清", "skip_count": ""},
{"hiragana": "な", "katakana": "ナ", "sound": "na", "type": "清", "skip_count": ""},
{"hiragana": "に", "katakana": "ニ", "sound": "ni", "type": "清", "skip_count": ""},
{"hiragana": "ぬ", "katakana": "ヌ", "sound": "nu", "type": "清", "skip_count": ""},
{"hiragana": "ね", "katakana": "ネ", "sound": "ne", "type": "清", "skip_count": ""},
{"hiragana": "の", "katakana": "ノ", "sound": "no", "type": "清", "skip_count": ""},
{"hiragana": "は", "katakana": "ハ", "sound": "ha", "type": "清", "skip_count": ""},
{"hiragana": "ひ", "katakana": "ヒ", "sound": "hi", "type": "清", "skip_count": ""},
{"hiragana": "ふ", "katakana": "フ", "sound": "fu", "type": "清", "skip_count": ""},
{"hiragana": "へ", "katakana": "ヘ", "sound": "he", "type": "清", "skip_count": ""},
{"hiragana": "ほ", "katakana": "ホ", "sound": "ho", "type": "清", "skip_count": ""},
{"hiragana": "ま", "katakana": "マ", "sound": "ma", "type": "清", "skip_count": ""},
{"hiragana": "み", "katakana": "ミ", "sound": "mi", "type": "清", "skip_count": ""},
{"hiragana": "む", "katakana": "ム", "sound": "mu", "type": "清", "skip_count": ""},
{"hiragana": "め", "katakana": "メ", "sound": "me", "type": "清", "skip_count": ""},
{"hiragana": "も", "katakana": "モ", "sound": "mo", "type": "清", "skip_count": ""},
{"hiragana": "や", "katakana": "ヤ", "sound": "ya", "type": "清", "skip_count": "1"},
{"hiragana": "ゆ", "katakana": "ユ", "sound": "yu", "type": "清", "skip_count": "1"},
{"hiragana": "よ", "katakana": "ヨ", "sound": "yo", "type": "清", "skip_count": ""},
{"hiragana": "ら", "katakana": "ラ", "sound": "ra", "type": "清", "skip_count": ""},
{"hiragana": "り", "katakana": "リ", "sound": "ri", "type": "清", "skip_count": ""},
{"hiragana": "る", "katakana": "ル", "sound": "ru", "type": "清", "skip_count": ""},
{"hiragana": "れ", "katakana": "レ", "sound": "re", "type": "清", "skip_count": ""},
{"hiragana": "ろ", "katakana": "ロ", "sound": "ro", "type": "清", "skip_count": ""},
{"hiragana": "わ", "katakana": "ワ", "sound": "wa", "type": "清", "skip_count": "3"},
{"hiragana": "を", "katakana": "ヲ", "sound": "wo,o", "type": "清", "skip_count": ""},
{"hiragana": "ん", "katakana": "ン", "sound": "n,nn", "type": "清", "skip_count": "4"},
{"hiragana": "が", "katakana": "ガ", "sound": "ga", "type": "浊", "skip_count": ""},
{"hiragana": "ぎ", "katakana": "ギ", "sound": "gi", "type": "浊", "skip_count": ""},
{"hiragana": "ぐ", "katakana": "グ", "sound": "gu", "type": "浊", "skip_count": ""},
{"hiragana": "げ", "katakana": "ゲ", "sound": "ge", "type": "浊", "skip_count": ""},
{"hiragana": "ご", "katakana": "ゴ", "sound": "go", "type": "浊", "skip_count": ""},
{"hiragana": "ざ", "katakana": "ザ", "sound": "za", "type": "浊", "skip_count": ""},
{"hiragana": "じ", "katakana": "ジ", "sound": "ji", "type": "浊", "skip_count": ""},
{"hiragana": "ず", "katakana": "ズ", "sound": "zu", "type": "浊", "skip_count": ""},
{"hiragana": "ぜ", "katakana": "ゼ", "sound": "ze", "type": "浊", "skip_count": ""},
{"hiragana": "ぞ", "katakana": "ゾ", "sound": "zo", "type": "浊", "skip_count": ""},
{"hiragana": "だ", "katakana": "ダ", "sound": "da", "type": "浊", "skip_count": ""},
{"hiragana": "ぢ", "katakana": "ヂ", "sound": "ji,di", "type": "浊", "skip_count": ""},
{"hiragana": "づ", "katakana": "ヅ", "sound": "du", "type": "浊", "skip_count": ""},
{"hiragana": "で", "katakana": "デ", "sound": "de", "type": "浊", "skip_count": ""},
{"hiragana": "ど", "katakana": "ド", "sound": "do", "type": "浊", "skip_count": ""},
{"hiragana": "ば", "katakana": "バ", "sound": "ba", "type": "浊", "skip_count": ""},
{"hiragana": "び", "katakana": "ビ", "sound": "bi", "type": "浊", "skip_count": ""},
{"hiragana": "ぶ", "katakana": "ブ", "sound": "bu", "type": "浊", "skip_count": ""},
{"hiragana": "べ", "katakana": "ベ", "sound": "be", "type": "浊", "skip_count": ""},
{"hiragana": "ぼ", "katakana": "ボ", "sound": "bo", "type": "浊", "skip_count": ""},
{"hiragana": "ぱ", "katakana": "パ", "sound": "pa", "type": "半浊", "skip_count": ""},
{"hiragana": "ぴ", "katakana": "ピ", "sound": "pi", "type": "半浊", "skip_count": ""},
{"hiragana": "ぷ", "katakana": "プ", "sound": "pu", "type": "半浊", "skip_count": ""},
{"hiragana": "ぺ", "katakana": "ペ", "sound": "pe", "type": "半浊", "skip_count": ""},
{"hiragana": "ぽ", "katakana": "ポ", "sound": "po", "type": "半浊", "skip_count": ""}
{"hiragana": "あ", "katakana": "ア", "sound": "a", "type": "清", "skip_count": "", "row": "a"},
{"hiragana": "い", "katakana": "イ", "sound": "i", "type": "清", "skip_count": "", "row": "a"},
{"hiragana": "う", "katakana": "ウ", "sound": "u", "type": "清", "skip_count": "", "row": "a"},
{"hiragana": "え", "katakana": "エ", "sound": "e", "type": "清", "skip_count": "", "row": "a"},
{"hiragana": "お", "katakana": "オ", "sound": "o", "type": "清", "skip_count": "", "row": "a"},
{"hiragana": "か", "katakana": "カ", "sound": "ka", "type": "清", "skip_count": "", "row": "ka"},
{"hiragana": "き", "katakana": "キ", "sound": "ki", "type": "清", "skip_count": "", "row": "ka"},
{"hiragana": "く", "katakana": "ク", "sound": "ku", "type": "清", "skip_count": "", "row": "ka"},
{"hiragana": "け", "katakana": "ケ", "sound": "ke", "type": "清", "skip_count": "", "row": "ka"},
{"hiragana": "こ", "katakana": "コ", "sound": "ko", "type": "清", "skip_count": "", "row": "ka"},
{"hiragana": "さ", "katakana": "サ", "sound": "sa", "type": "清", "skip_count": "", "row": "sa"},
{"hiragana": "し", "katakana": "シ", "sound": "shi", "type": "清", "skip_count": "", "row": "sa"},
{"hiragana": "す", "katakana": "ス", "sound": "su", "type": "清", "skip_count": "", "row": "sa"},
{"hiragana": "せ", "katakana": "セ", "sound": "se", "type": "清", "skip_count": "", "row": "sa"},
{"hiragana": "そ", "katakana": "ソ", "sound": "so", "type": "清", "skip_count": "", "row": "sa"},
{"hiragana": "た", "katakana": "タ", "sound": "ta", "type": "清", "skip_count": "", "row": "ta"},
{"hiragana": "ち", "katakana": "チ", "sound": "chi", "type": "清", "skip_count": "", "row": "ta"},
{"hiragana": "つ", "katakana": "ツ", "sound": "tsu,tu", "type": "清", "skip_count": "", "row": "ta"},
{"hiragana": "て", "katakana": "テ", "sound": "te", "type": "清", "skip_count": "", "row": "ta"},
{"hiragana": "と", "katakana": "ト", "sound": "to", "type": "清", "skip_count": "", "row": "ta"},
{"hiragana": "な", "katakana": "ナ", "sound": "na", "type": "清", "skip_count": "", "row": "na"},
{"hiragana": "に", "katakana": "ニ", "sound": "ni", "type": "清", "skip_count": "", "row": "na"},
{"hiragana": "ぬ", "katakana": "ヌ", "sound": "nu", "type": "清", "skip_count": "", "row": "na"},
{"hiragana": "ね", "katakana": "ネ", "sound": "ne", "type": "清", "skip_count": "", "row": "na"},
{"hiragana": "の", "katakana": "ノ", "sound": "no", "type": "清", "skip_count": "", "row": "na"},
{"hiragana": "は", "katakana": "ハ", "sound": "ha", "type": "清", "skip_count": "", "row": "ha"},
{"hiragana": "ひ", "katakana": "ヒ", "sound": "hi", "type": "清", "skip_count": "", "row": "ha"},
{"hiragana": "ふ", "katakana": "フ", "sound": "fu", "type": "清", "skip_count": "", "row": "ha"},
{"hiragana": "へ", "katakana": "ヘ", "sound": "he", "type": "清", "skip_count": "", "row": "ha"},
{"hiragana": "ほ", "katakana": "ホ", "sound": "ho", "type": "清", "skip_count": "", "row": "ha"},
{"hiragana": "ま", "katakana": "マ", "sound": "ma", "type": "清", "skip_count": "", "row": "ma"},
{"hiragana": "み", "katakana": "ミ", "sound": "mi", "type": "清", "skip_count": "", "row": "ma"},
{"hiragana": "む", "katakana": "ム", "sound": "mu", "type": "清", "skip_count": "", "row": "ma"},
{"hiragana": "め", "katakana": "メ", "sound": "me", "type": "清", "skip_count": "", "row": "ma"},
{"hiragana": "も", "katakana": "モ", "sound": "mo", "type": "清", "skip_count": "", "row": "ma"},
{"hiragana": "や", "katakana": "ヤ", "sound": "ya", "type": "清", "skip_count": "1", "row": "ya"},
{"hiragana": "ゆ", "katakana": "ユ", "sound": "yu", "type": "清", "skip_count": "1", "row": "ya"},
{"hiragana": "よ", "katakana": "ヨ", "sound": "yo", "type": "清", "skip_count": "", "row": "ya"},
{"hiragana": "ら", "katakana": "ラ", "sound": "ra", "type": "清", "skip_count": "", "row": "ra"},
{"hiragana": "り", "katakana": "リ", "sound": "ri", "type": "清", "skip_count": "", "row": "ra"},
{"hiragana": "る", "katakana": "ル", "sound": "ru", "type": "清", "skip_count": "", "row": "ra"},
{"hiragana": "れ", "katakana": "レ", "sound": "re", "type": "清", "skip_count": "", "row": "ra"},
{"hiragana": "ろ", "katakana": "ロ", "sound": "ro", "type": "清", "skip_count": "", "row": "ra"},
{"hiragana": "わ", "katakana": "ワ", "sound": "wa", "type": "清", "skip_count": "3", "row": "wa"},
{"hiragana": "を", "katakana": "ヲ", "sound": "wo,o", "type": "清", "skip_count": "", "row": "wa"},
{"hiragana": "ん", "katakana": "ン", "sound": "n,nn", "type": "清", "skip_count": "4", "row": "n"},
{"hiragana": "が", "katakana": "ガ", "sound": "ga", "type": "浊", "skip_count": "", "row": "ga"},
{"hiragana": "ぎ", "katakana": "ギ", "sound": "gi", "type": "浊", "skip_count": "", "row": "ga"},
{"hiragana": "ぐ", "katakana": "グ", "sound": "gu", "type": "浊", "skip_count": "", "row": "ga"},
{"hiragana": "げ", "katakana": "ゲ", "sound": "ge", "type": "浊", "skip_count": "", "row": "ga"},
{"hiragana": "ご", "katakana": "ゴ", "sound": "go", "type": "浊", "skip_count": "", "row": "ga"},
{"hiragana": "ざ", "katakana": "ザ", "sound": "za", "type": "浊", "skip_count": "", "row": "za"},
{"hiragana": "じ", "katakana": "ジ", "sound": "ji", "type": "浊", "skip_count": "", "row": "za"},
{"hiragana": "ず", "katakana": "ズ", "sound": "zu", "type": "浊", "skip_count": "", "row": "za"},
{"hiragana": "ぜ", "katakana": "ゼ", "sound": "ze", "type": "浊", "skip_count": "", "row": "za"},
{"hiragana": "ぞ", "katakana": "ゾ", "sound": "zo", "type": "浊", "skip_count": "", "row": "za"},
{"hiragana": "だ", "katakana": "ダ", "sound": "da", "type": "浊", "skip_count": "", "row": "da"},
{"hiragana": "ぢ", "katakana": "ヂ", "sound": "ji,di", "type": "浊", "skip_count": "", "row": "da"},
{"hiragana": "づ", "katakana": "ヅ", "sound": "du", "type": "浊", "skip_count": "", "row": "da"},
{"hiragana": "で", "katakana": "デ", "sound": "de", "type": "浊", "skip_count": "", "row": "da"},
{"hiragana": "ど", "katakana": "ド", "sound": "do", "type": "浊", "skip_count": "", "row": "da"},
{"hiragana": "ば", "katakana": "バ", "sound": "ba", "type": "浊", "skip_count": "", "row": "ba"},
{"hiragana": "び", "katakana": "ビ", "sound": "bi", "type": "浊", "skip_count": "", "row": "ba"},
{"hiragana": "ぶ", "katakana": "ブ", "sound": "bu", "type": "浊", "skip_count": "", "row": "ba"},
{"hiragana": "べ", "katakana": "ベ", "sound": "be", "type": "浊", "skip_count": "", "row": "ba"},
{"hiragana": "ぼ", "katakana": "ボ", "sound": "bo", "type": "浊", "skip_count": "", "row": "ba"},
{"hiragana": "ぱ", "katakana": "パ", "sound": "pa", "type": "半浊", "skip_count": "", "row": "pa"},
{"hiragana": "ぴ", "katakana": "ピ", "sound": "pi", "type": "半浊", "skip_count": "", "row": "pa"},
{"hiragana": "ぷ", "katakana": "プ", "sound": "pu", "type": "半浊", "skip_count": "", "row": "pa"},
{"hiragana": "ぺ", "katakana": "ペ", "sound": "pe", "type": "半浊", "skip_count": "", "row": "pa"},
{"hiragana": "ぽ", "katakana": "ポ", "sound": "po", "type": "半浊", "skip_count": "", "row": "pa"}
]

export {gujuon_data};
3 changes: 2 additions & 1 deletion src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"input_wait": "Wait time after correct input",
"font": "Font setting",
"test_on": "Test on",
"nothing_can_be_shown": "Nothing can be shown"
"nothing_can_be_shown": "Nothing can be shown",
"enabled_rows": "Enabled rows of kana"
},
"history_title": "Stats",
"history": {
Expand Down
3 changes: 2 additions & 1 deletion src/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"input_wait": "输入正确后等待时间",
"font": "假名字体",
"test_on": "题目包括",
"nothing_can_be_shown": "没有可以显示的题目"
"nothing_can_be_shown": "没有可以显示的题目",
"enabled_rows": "题目包含的五十音图行"
},
"history_title": "历史数据",
"history": {
Expand Down

0 comments on commit 43cdb1e

Please sign in to comment.