first commit
This commit is contained in:
commit
8578d2fe78
|
@ -0,0 +1,68 @@
|
|||
-- enum helper
|
||||
function Enum(tbl)
|
||||
for i = 1, #tbl do
|
||||
local v = tbl[i]
|
||||
tbl[v] = i
|
||||
end
|
||||
return tbl
|
||||
end
|
||||
|
||||
-- doesnt work
|
||||
function GetTerminalSize()
|
||||
io.write("\027[s")
|
||||
io.write("\027[9999;B")
|
||||
io.write("\027[9999;C")
|
||||
--io.write("\027[6n")
|
||||
io.write("\027[u")
|
||||
end
|
||||
|
||||
COLORMODE = Enum {
|
||||
"Normal",
|
||||
"Bold",
|
||||
"Dim",
|
||||
"Italic",
|
||||
"Underline",
|
||||
"BlinkSlow",
|
||||
"BlinkFast",
|
||||
"Invert",
|
||||
"Conceal",
|
||||
"CrossedOut"
|
||||
}
|
||||
|
||||
COLOR = Enum {
|
||||
"Black",
|
||||
"Red",
|
||||
"Green",
|
||||
"Yellow",
|
||||
"Blue",
|
||||
"Purple",
|
||||
"Cyan",
|
||||
"LightGray",
|
||||
"Gray",
|
||||
"HighRed",
|
||||
"HighGreen",
|
||||
"HighYellow",
|
||||
"HighBlue",
|
||||
"HighPurple",
|
||||
"HighCyan",
|
||||
"White"
|
||||
}
|
||||
|
||||
function Colorize(Text,Color,Background,Colormode)
|
||||
|
||||
if Colormode then
|
||||
lColormode = "\027["..tostring(Colormode-1).."m"
|
||||
else
|
||||
lColormode = ""
|
||||
end
|
||||
|
||||
if Background then
|
||||
lBackground = "\027[48;5;"..tostring(Background-1).."m"
|
||||
else
|
||||
lBackground = ""
|
||||
end
|
||||
|
||||
lColoredText = "\027[38;5;"..tostring(Color-1).."m"..Text
|
||||
|
||||
return lColormode..lBackground..lColoredText.."\027[0;m"
|
||||
end
|
|
@ -0,0 +1,477 @@
|
|||
KanjiData = {
|
||||
-- FIRST GRADE ELEMENTARY KANJIS
|
||||
{
|
||||
Symbol = "一",
|
||||
Meaning = "One",
|
||||
On = {"イチ","イツ"},
|
||||
Kun = {"ひと"}
|
||||
},
|
||||
{
|
||||
Symbol = "右",
|
||||
Meaning = "Right",
|
||||
On = {"ウ","ユウ"},
|
||||
Kun = {"みぎ"}
|
||||
},
|
||||
{
|
||||
Symbol = "雨",
|
||||
Meaning = "Rain",
|
||||
On = {"エン"},
|
||||
Kun = {"まる","まる(い)","つぶ(ら)","まろ(やか)"}
|
||||
},
|
||||
{
|
||||
Symbol = "王",
|
||||
Meaning = "King",
|
||||
On = {"オウ"},
|
||||
Kun = {}
|
||||
},
|
||||
{
|
||||
Symbol = "音",
|
||||
Meaning = "Sound",
|
||||
On = {"オン","イン"},
|
||||
Kun = {"おと","ね"}
|
||||
},
|
||||
{
|
||||
Symbol = "下",
|
||||
Meaning = "Down",
|
||||
On = {"カ","ゲ"},
|
||||
Kun = {"した","しも","もと","くだ(る・さる)","さ(がる)","お(りる)"}
|
||||
},
|
||||
{
|
||||
Symbol = "火",
|
||||
Meaning = "Fire",
|
||||
On = {"カ"},
|
||||
Kun = {"ひ","ほ"}
|
||||
},
|
||||
{
|
||||
Symbol = "花",
|
||||
Meaning = "Flower",
|
||||
On = {"カ"},
|
||||
Kun = {"はな"}
|
||||
},
|
||||
{
|
||||
Symbol = "学",
|
||||
Meaning = "Learn",
|
||||
On = {"ガク"},
|
||||
Kun = {"まな(ぶ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "気",
|
||||
Meaning = "Spirit",
|
||||
On = {"キ","ケ"},
|
||||
Kun = {}
|
||||
} ,
|
||||
{
|
||||
Symbol = "九",
|
||||
Meaning = "Nine",
|
||||
On = {"キュウ","ク"},
|
||||
Kun = {"ここの(つ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "休",
|
||||
Meaning = "Rest",
|
||||
On = {"キュウ"},
|
||||
Kun = {"やす(む)"}
|
||||
},
|
||||
{
|
||||
Symbol = "金",
|
||||
Meaning = "Gold, Money",
|
||||
On = {"キン","コン"},
|
||||
Kun = {"かね","かな-"}
|
||||
},
|
||||
{
|
||||
Symbol = "空",
|
||||
Meaning = "Sky, Empty",
|
||||
On = {"クウ"},
|
||||
Kun = {"そら","から","あ(く)","むな(しい)","す(く)","うつ(ろ)","あだ"}
|
||||
},
|
||||
{
|
||||
Symbol = "月",
|
||||
Meaning = "Moon, Month",
|
||||
On = {"ゲツ","ガツ"},
|
||||
Kun = {"つき"}
|
||||
},
|
||||
{
|
||||
Symbol = "犬",
|
||||
Meaning = "Dog",
|
||||
On = {"ケン"},
|
||||
Kun = {"いぬ"}
|
||||
},
|
||||
{
|
||||
Symbol = "見",
|
||||
Meaning = "See",
|
||||
On = {"ケン"},
|
||||
Kun = {"み(る・せる・える)"}
|
||||
},
|
||||
{
|
||||
Symbol = "五",
|
||||
Meaning = "Five",
|
||||
On = {"ゴ"},
|
||||
Kun = {"いつ(つ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "口",
|
||||
Meaning = "Mouth",
|
||||
On = {"コウ","ク"},
|
||||
Kun = {"くち"}
|
||||
},
|
||||
{
|
||||
Symbol = "校",
|
||||
Meaning = "School",
|
||||
On = {"コウ"},
|
||||
Kun = {}
|
||||
},
|
||||
{
|
||||
Symbol = "左",
|
||||
Meaning = "Left",
|
||||
On = {"サ"},
|
||||
Kun = {"ひだり"}
|
||||
},
|
||||
{
|
||||
Symbol = "三",
|
||||
Meaning = "Three",
|
||||
On = {"サン"},
|
||||
Kun = {"み(つ)","みっ(つ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "山",
|
||||
Meaning = "Mountain",
|
||||
On = {"サン","ザン"},
|
||||
Kun = {"やま"}
|
||||
},
|
||||
{
|
||||
Symbol = "子",
|
||||
Meaning = "Child",
|
||||
On = {"シ","ス"},
|
||||
Kun = {"こ","ね"}
|
||||
},
|
||||
{
|
||||
Symbol = "四",
|
||||
Meaning = "Four",
|
||||
On = {"シ"},
|
||||
Kun = {"よん","よ(つ)","よっ(つ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "糸",
|
||||
Meaning = "Thread",
|
||||
On = {"シ"},
|
||||
Kun = {"いと"}
|
||||
},
|
||||
{
|
||||
Symbol = "字",
|
||||
Meaning = "Letter",
|
||||
On = {"ジ"},
|
||||
Kun = {"あざ"}
|
||||
},
|
||||
{
|
||||
Symbol = "耳",
|
||||
Meaning = "Ear",
|
||||
On = {"ジ"},
|
||||
Kun = {"みみ"}
|
||||
},
|
||||
{
|
||||
Symbol = "七",
|
||||
Meaning = "Seven",
|
||||
On = {"シチ"},
|
||||
Kun = {"なな"}
|
||||
},
|
||||
{
|
||||
Symbol = "車",
|
||||
Meaning = "Vehicle",
|
||||
On = {"シャ"},
|
||||
Kun = {"くるま"}
|
||||
},
|
||||
{
|
||||
Symbol = "手",
|
||||
Meaning = "Hand",
|
||||
On = {"シュ"},
|
||||
Kun = {"て"}
|
||||
},
|
||||
{
|
||||
Symbol = "十",
|
||||
Meaning = "Ten",
|
||||
On = {"ジュウ"},
|
||||
Kun = {"とお"}
|
||||
},
|
||||
{
|
||||
Symbol = "女",
|
||||
Meaning = "Woman",
|
||||
On = {"ジョ","ニョウ","ニョ"},
|
||||
Kun = {"おんな","め"}
|
||||
},
|
||||
{
|
||||
Symbol = "小",
|
||||
Meaning = "Small",
|
||||
On = {"ショウ"},
|
||||
Kun = {"こ-","お-","ちいさ(い)"}
|
||||
},
|
||||
{
|
||||
Symbol = "上",
|
||||
Meaning = "Up",
|
||||
On = {"ジョウ"},
|
||||
Kun = {"うえ","うわ-","かみ","のぼ(る)","あ(がる・げる)"}
|
||||
},
|
||||
{
|
||||
Symbol = "森",
|
||||
Meaning = "Woods",
|
||||
On = {"シン"},
|
||||
Kun = {"もり"}
|
||||
},
|
||||
{
|
||||
Symbol = "人",
|
||||
Meaning = "Person",
|
||||
On = {"ジン","ニン"},
|
||||
Kun = {"ひと"}
|
||||
},
|
||||
{
|
||||
Symbol = "水",
|
||||
Meaning = "Water",
|
||||
On = {"スイ"},
|
||||
Kun = {"みず"}
|
||||
},
|
||||
{
|
||||
Symbol = "正",
|
||||
Meaning = "Correct",
|
||||
On = {"セイ","ショウ"},
|
||||
Kun = {"まさ","ただ(しい・す)"}
|
||||
},
|
||||
{
|
||||
Symbol = "生",
|
||||
Meaning = "Life",
|
||||
On = {"セイ","ショウ"},
|
||||
Kun = {"なま","い(きる)","う(む)","は(える)","き","ふ","む(す)","お-"}
|
||||
},
|
||||
{
|
||||
Symbol = "青",
|
||||
Meaning = "Blue",
|
||||
On = {"セイ","ショウ"},
|
||||
Kun = {"あお"}
|
||||
},
|
||||
{
|
||||
Symbol = "夕",
|
||||
Meaning = "Evening",
|
||||
On = {"セキ"},
|
||||
Kun = {"ゆう"}
|
||||
},
|
||||
{
|
||||
Symbol = "石",
|
||||
Meaning = "Stone",
|
||||
On = {"セキ","シャク","コク"},
|
||||
Kun = {"いし"}
|
||||
},
|
||||
{
|
||||
Symbol = "赤",
|
||||
Meaning = "Red",
|
||||
On = {"セキ","シャク"},
|
||||
Kun = {"あか"}
|
||||
},
|
||||
{
|
||||
Symbol = "千",
|
||||
Meaning = "Thousand",
|
||||
On = {"セン"},
|
||||
Kun = {"ち"}
|
||||
},
|
||||
{
|
||||
Symbol = "川",
|
||||
Meaning = "River",
|
||||
On = {"セン"},
|
||||
Kun = {"かわ"}
|
||||
},
|
||||
{
|
||||
Symbol = "先",
|
||||
Meaning = "Previous, Tip",
|
||||
On = {"セン"},
|
||||
Kun = {"さき"}
|
||||
},
|
||||
{
|
||||
Symbol = "早",
|
||||
Meaning = "Early, Fast",
|
||||
On = {"ソウ","サッ"},
|
||||
Kun = {"はや(い)"}
|
||||
},
|
||||
{
|
||||
Symbol = "足",
|
||||
Meaning = "Leg, Sufficient",
|
||||
On = {"ソク"},
|
||||
Kun = {"あし","た(りる)"}
|
||||
},
|
||||
{
|
||||
Symbol = "村",
|
||||
Meaning = "Village",
|
||||
On = {"ソン"},
|
||||
Kun = {"むら"}
|
||||
},
|
||||
{
|
||||
Symbol = "大",
|
||||
Meaning = "Large",
|
||||
On = {"ダイ","タイ"},
|
||||
Kun = {"おお(きい)"}
|
||||
},
|
||||
{
|
||||
Symbol = "男",
|
||||
Meaning = "Man",
|
||||
On = {"ダン","ナン"},
|
||||
Kun = {"おとこ"}
|
||||
},
|
||||
{
|
||||
Symbol = "中",
|
||||
Meaning = "Middle",
|
||||
On = {"チュウ"},
|
||||
Kun = {"なか","あ(てる)"}
|
||||
},
|
||||
{
|
||||
Symbol = "虫",
|
||||
Meaning = "Bug",
|
||||
On = {"チュウ"},
|
||||
Kun = {"むし"}
|
||||
},
|
||||
{
|
||||
Symbol = "町",
|
||||
Meaning = "Town",
|
||||
On = {"チョウ"},
|
||||
Kun = {"まち"}
|
||||
},
|
||||
{
|
||||
Symbol = "天",
|
||||
Meaning = "Heaven",
|
||||
On = {"テン"},
|
||||
Kun = {"あま-"}
|
||||
},
|
||||
{
|
||||
Symbol = "田",
|
||||
Meaning = "Rice Field",
|
||||
On = {"デン"},
|
||||
Kun = {"た"}
|
||||
},
|
||||
{
|
||||
Symbol = "土",
|
||||
Meaning = "Earth",
|
||||
On = {"ド","ト"},
|
||||
Kun = {"つち"}
|
||||
},
|
||||
{
|
||||
Symbol = "二",
|
||||
Meaning = "Two",
|
||||
On = {"ニ"},
|
||||
Kun = {"ふた(つ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "日",
|
||||
Meaning = "Sun, Day",
|
||||
On = {"ニチ","ジツ"},
|
||||
Kun = {"ひ","-か"}
|
||||
},
|
||||
{
|
||||
Symbol = "入",
|
||||
Meaning = "Enter",
|
||||
On = {"ニュウ"},
|
||||
Kun = {"はい(る)","い(れる・る)"}
|
||||
},
|
||||
{
|
||||
Symbol = "年",
|
||||
Meaning = "Year",
|
||||
On = {"ネン"},
|
||||
Kun = {"とし"}
|
||||
},
|
||||
{
|
||||
Symbol = "白",
|
||||
Meaning = "White",
|
||||
On = {"ハク"},
|
||||
Kun = {"しろ"}
|
||||
},
|
||||
{
|
||||
Symbol = "八",
|
||||
Meaning = "Eight",
|
||||
On = {"ハチ"},
|
||||
Kun = {"や(つ)","やっ(つ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "百",
|
||||
Meaning = "Hundred",
|
||||
On = {"ヒャク"},
|
||||
Kun = {"もも"}
|
||||
},
|
||||
{
|
||||
Symbol = "文",
|
||||
Meaning = "Text",
|
||||
On = {"ブン","モン"},
|
||||
Kun = {"ふみ","あや"}
|
||||
},
|
||||
{
|
||||
Symbol = "木",
|
||||
Meaning = "Tree",
|
||||
On = {"ボク","モク"},
|
||||
Kun = {"き","こ-"}
|
||||
},
|
||||
{
|
||||
Symbol = "本",
|
||||
Meaning = "Book",
|
||||
On = {"ホン"},
|
||||
Kun = {"もと"}
|
||||
},
|
||||
{
|
||||
Symbol = "出",
|
||||
Meaning = "Exit, Emerge",
|
||||
On = {"シュツ"},
|
||||
Kun = {"で(る)","だ(す)"}
|
||||
},
|
||||
{
|
||||
Symbol = "名",
|
||||
Meaning = "Name",
|
||||
On = {"メイ","ミョウ"},
|
||||
Kun = {"な"}
|
||||
},
|
||||
{
|
||||
Symbol = "目",
|
||||
Meaning = "Eye",
|
||||
On = {"モク","ボク"},
|
||||
Kun = {"め","ま-"}
|
||||
},
|
||||
{
|
||||
Symbol = "立",
|
||||
Meaning = "Stand",
|
||||
On = {"リツ","リュウ"},
|
||||
Kun = {"た(つ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "力",
|
||||
Meaning = "Strength",
|
||||
On = {"リョク","リキ"},
|
||||
Kun = {"ちから","りき(む)","つと(める"}
|
||||
},
|
||||
{
|
||||
Symbol = "林",
|
||||
Meaning = "Forest",
|
||||
On = {"リン"},
|
||||
Kun = {"はやし"}
|
||||
},
|
||||
{
|
||||
Symbol = "六",
|
||||
Meaning = "Six",
|
||||
On = {"ロク"},
|
||||
Kun = {"む(つ)","むっ(つ)"}
|
||||
},
|
||||
{
|
||||
Symbol = "草",
|
||||
Meaning = "Grass",
|
||||
On = {"ソウ"},
|
||||
Kun = {"くさ"}
|
||||
},
|
||||
{
|
||||
Symbol = "玉",
|
||||
Meaning = "Ball",
|
||||
On = {"ギョク"},
|
||||
Kun = {"たま"}
|
||||
},
|
||||
{
|
||||
Symbol = "竹",
|
||||
Meaning = "Bamboo",
|
||||
On = {"チク"},
|
||||
Kun = {"たけ"}
|
||||
},
|
||||
{
|
||||
Symbol = "貝",
|
||||
Meaning = "Seashell",
|
||||
On = {"バイ"},
|
||||
Kun = {"かい"}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,135 @@
|
|||
require "kanji_data"
|
||||
require "helper_functions"
|
||||
|
||||
function GetUnrepeatedKanji(lAvoid)
|
||||
lKanji = KanjiData[math.random(#KanjiData)]
|
||||
for i=1, #lAvoid do
|
||||
if lKanji == lAvoid[i] then
|
||||
lKanji = GetUnrepeatedKanji(lAvoid)
|
||||
break
|
||||
end
|
||||
end
|
||||
return lKanji
|
||||
end
|
||||
|
||||
function AskMeaning()
|
||||
io.write(Colorize("Q: ",COLOR.HighBlue).."What does "..CurrentKanji.Symbol.." mean? \n")
|
||||
io.write("\n")
|
||||
|
||||
for i=1, 4 do
|
||||
if i == Solution then
|
||||
io.write(Colorize(" ("..i..") ",COLOR.HighYellow)..CurrentKanji.Meaning)
|
||||
io.write("\n")
|
||||
else
|
||||
lRandomKanji = GetUnrepeatedKanji(AvoidList)
|
||||
table.insert(AvoidList,lRandomKanji)
|
||||
io.write(Colorize(" ("..i..") ",COLOR.HighYellow)..lRandomKanji.Meaning)
|
||||
io.write("\n")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AskKanji()
|
||||
io.write(Colorize("Q: ",COLOR.HighBlue).."Which is the kanji for \""..CurrentKanji.Meaning.."\"? \n")
|
||||
io.write("\n")
|
||||
|
||||
for i=1, 4 do
|
||||
if i == Solution then
|
||||
io.write(Colorize(" ("..i..") ",COLOR.HighYellow)..CurrentKanji.Symbol)
|
||||
io.write("\n")
|
||||
else
|
||||
lRandomKanji = GetUnrepeatedKanji(AvoidList)
|
||||
table.insert(AvoidList,lRandomKanji)
|
||||
io.write(Colorize(" ("..i..") ",COLOR.HighYellow)..lRandomKanji.Symbol)
|
||||
io.write("\n")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function Ask(Type)
|
||||
|
||||
Solution = math.random(4)
|
||||
|
||||
AvoidList = {}
|
||||
table.insert(AvoidList,CurrentKanji)
|
||||
|
||||
if Type == QuestionType.KANJI then
|
||||
AskKanji()
|
||||
elseif Type == QuestionType.MEANING then
|
||||
AskMeaning()
|
||||
end
|
||||
|
||||
io.write("\n")
|
||||
io.write(Colorize("A: ",COLOR.HighPurple))
|
||||
end
|
||||
|
||||
function Check(answer)
|
||||
if answer == "" then
|
||||
io.write("\027[1F".."\027[3C")
|
||||
Check(io.read())
|
||||
else
|
||||
io.write("\n")
|
||||
if answer == tostring(Solution) then
|
||||
io.write(Colorize("Correct!",COLOR.HighGreen))
|
||||
io.write(Colorize(" [Streak +1]",COLOR.HighCyan,nil,COLORMODE.BlinkFast))
|
||||
Streak = Streak + 1
|
||||
Correct = Correct + 1
|
||||
else
|
||||
io.write(Colorize("Wrong!",COLOR.HighRed).." Answer is ("..Solution..")")
|
||||
if Streak >= 5 then io.write(Colorize(" [Streak Lost]",COLOR.Cyan,nil,COLORMODE.BlinkFast)) end
|
||||
Streak = 0
|
||||
Wrong = Wrong + 1
|
||||
end
|
||||
UpdateProgress()
|
||||
io.write("\n")
|
||||
io.read()
|
||||
end
|
||||
Total = Total + 1
|
||||
end
|
||||
|
||||
QuestionType = Enum {
|
||||
"KANJI",
|
||||
"MEANING",
|
||||
"ON",
|
||||
"KUN"
|
||||
}
|
||||
|
||||
function ShowProgress()
|
||||
io.write("#"..tostring(Total+1).."\t")
|
||||
|
||||
io.write("Right: "..Colorize(tostring(Correct),COLOR.HighGreen).."\t")
|
||||
io.write("Wrong: "..Colorize(tostring(Wrong),COLOR.HighRed).."\t")
|
||||
|
||||
if Streak >= 5 then
|
||||
io.write(Colorize("CURRENT STREAK: ", COLOR.HighCyan,nil,COLORMODE.BlinkFast)..Colorize(Streak,COLOR.White,nil,COLORMODE.BlinkFast))
|
||||
end
|
||||
io.write("\n\n")
|
||||
end
|
||||
|
||||
function UpdateProgress()
|
||||
io.write("\027[s")
|
||||
io.write("\027[1;1H")
|
||||
ShowProgress(true)
|
||||
io.write("\027[u")
|
||||
end
|
||||
|
||||
Correct = 0
|
||||
Total = 0
|
||||
Streak = 0
|
||||
Wrong = 0
|
||||
while 1 do
|
||||
os.execute("clear")
|
||||
|
||||
CurrentKanji = KanjiData[math.random(#KanjiData)]
|
||||
|
||||
ShowProgress()
|
||||
|
||||
--Ask(math.random(#QuestionType))
|
||||
Ask(math.random(2))
|
||||
--Ask(QuestionType.KANJI)
|
||||
|
||||
response = io.read()
|
||||
|
||||
Check(response)
|
||||
end
|
Loading…
Reference in New Issue