Skip to content

Instantly share code, notes, and snippets.

@shuantsu-zz
Last active April 26, 2021 23:42
Show Gist options
  • Save shuantsu-zz/9ee53a36b4946ae7d7753164ee4547be to your computer and use it in GitHub Desktop.
Save shuantsu-zz/9ee53a36b4946ae7d7753164ee4547be to your computer and use it in GitHub Desktop.
import random, sys, os, pprint, time
from colorama import init, Fore, Back, Style
os.system('chcp 932')
print('iniciando...')
init()
readings = [
"a", "i", "u", "e", "o", "ka", "ki", "ku", "ke", "ko",
"ga", "gi", "gu", "ge", "go", "sa", "shi", "su", "se", "so",
"za", "ji", "zu", "ze", "zo", "ta", "chi", "tsu", "te", "to",
"da", "dzi", "du", "de", "do", "na", "ni", "nu", "ne", "no",
"ha", "hi", "fu", "he", "ho", "ba", "bi", "bu", "be", "bo",
"pa", "pi", "pu", "pe", "po", "ma", "mi", "mu", "me", "mo",
"ya", "yu", "yo", "ra", "ri", "ru", "re", "ro",
"wa", "wo", "n"
]
hiragana = [
"あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ",
"が", "ぎ", "ぐ", "げ", "ご", "さ", "し", "す", "せ", "そ",
"ざ", "じ", "ず", "ぜ", "ぞ", "た", "ち", "つ", "て", "と",
"だ", "ぢ", "づ", "で", "ど", "な", "に", "ぬ", "ね", "の",
"は", "ひ", "ふ", "へ", "ほ", "ば", "び", "ぶ", "べ", "ぼ",
"ぱ", "ぴ", "ぷ", "ぺ", "ぽ", "ま", "み", "む", "め", "も",
"や", "ゆ", "よ", "ら", "り", "る", "れ", "ろ",
"わ", "を", "ん"
]
katakana = [
"ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ",
"ガ", "ギ", "グ", "ゲ", "ゴ", "サ", "シ", "ス", "セ", "ソ",
"ザ", "ジ", "ズ", "ゼ", "ゾ", "タ", "チ", "ツ", "テ", "ト",
"ダ", "ヂ", "ヅ", "デ", "ド", "ナ", "ニ", "ヌ", "ネ", "ノ",
"ハ", "ヒ", "フ", "ヘ", "ホ", "バ", "ビ", "ブ", "ベ", "ボ",
"パ", "ピ", "プ", "ペ", "ポ", "マ", "ミ", "ム", "メ", "モ",
"ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ",
"ワ", "ヲ", "ン"
]
katakanas = [(k, r) for k, r in list(zip(katakana, readings)) if r[0] not in ['b','g','z','d','j','p']]
hiraganas = [(k, r) for k, r in list(zip(hiragana, readings)) if r[0] not in ['b','g','z','d','j','p']]
def jogo(kanas, quantos=46):
os.system('cls')
quantos = 46 if quantos > 46 else quantos
com_dificuldade = []
l = kanas[:]
random.shuffle(l)
l = l[:quantos]
n = len(l)
nn = n
def pega(transcricao):
return [a for a, b in kanas if b == transcricao][0]
for k, r in l:
esperar_digitar = True
while esperar_digitar:
resposta = input(f'[{Fore.CYAN} {nn} {Style.RESET_ALL} restantes] {Fore.YELLOW} {k} {Style.RESET_ALL}')
if resposta not in [b for a, b in kanas]:
print('Ops, será que você digitou certo?')
else:
esperar_digitar = False
nn -= 1
if resposta != r:
com_dificuldade.append([k, r, resposta])
input(f'{Fore.GREEN}({k}) {r}{Style.RESET_ALL} != {Fore.RED}({pega(resposta)}) {resposta} {Style.RESET_ALL}')
os.system('cls')
print(f"{Fore.CYAN}Fim de jogo{Style.RESET_ALL}")
print('-'*30)
errou = len(com_dificuldade)
porcentagem = int(100 - errou / quantos * 100)
if porcentagem > 80:
print(Fore.GREEN, end="")
elif porcentagem > 50:
print(Fore.YELLOW, end="")
else:
print(Fore.RED, end="")
print(f'Você fez uma pontuação de {porcentagem}%')
print(Style.RESET_ALL, end="")
if com_dificuldade:
print('-'*30)
print(f'Você errou: {errou}')
for kana, certo, errado in com_dificuldade:
print(f'{Fore.CYAN} {kana} {Style.RESET_ALL} {Fore.GREEN} {certo.ljust(3)} {Style.RESET_ALL} {Fore.CYAN} {pega(errado)} {Fore.RED} {errado} {Style.RESET_ALL}')
while 1:
os.system('cls')
print(f'{Fore.CYAN}<<NOVO JOGO>>{Style.RESET_ALL}')
k = [hiraganas, katakanas][int(input("1 - Hiragana\n2 - Katakana\n")) - 1]
n = int(input('Quantos? (total: 46) ') or 46)
jogo(k, n)
input()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment