Bonjour. Cette fois, je vais faire un jeu de frappe avec Ruby. Si vous voulez l'essayer pour le moment, veuillez l'essayer depuis ici.
Alors comment le faire? J'écrirai.
Cette fois, c'était gênant, donc je n'utilise que 100 mots anglais, mais s'il vous plaît ajoutez comme vous le souhaitez. Vous devriez être capable de parler japonais avec un peu de changement (bien que cela semble gênant de prendre en charge le style Hebon) (Est-il acceptable de définir la valeur de hachage sur une liste et de faire quelque chose comme ça?)
Eh bien, je pense que vous pouvez le faire correctement ici. Ce n’est pas si important.
Vous pouvez le faire facilement avec ʻio / console`. Ruby est facile à faire comme ça, n'est-ce pas?
require 'io/console'
ch = STDIN.getch
puts ch
On suppose que les mots contiennent une liste de mots écrits en [1].
require 'io/console'
miss = 0
all = 0
flag = false
while true
word = words.sample
puts "\e[36m#{word}\e[0m"
i = -1
wl = word.length
print "\e[2m#{word}\e[0m"
while i != (wl-1)
i += 1
key = STDIN.getch
all += 1
if key == word[i]
print "\r#{word[0..i]}\e[2m#{word[i+1..wl]}\e[0m"
elsif key == "\C-c"
flag = true
break
else
print "\r#{word[0...i]}\e[31m#{word[i]}\e[0m\e[2m#{word[i+1..wl]}\e[0m"
miss += 1
i -= 1
end
end
break if flag
puts
end
Eh bien, c'est simple à faire, alors vous comprendrez. \ r
est le retour chariot et \ e [~~ m
est la séquence d'échappement ANSI.
require 'io/console'
require 'benchmark'
miss = 0
all = 0
flag = false
result = Benchmark.realtime do
while true
word = words.sample
puts "\e[36m#{word}\e[0m"
i = -1
wl = word.length
print "\e[2m#{word}\e[0m"
while i != (wl-1)
i += 1
key = STDIN.getch
all += 1
if key == word[i]
print "\r#{word[0..i]}\e[2m#{word[i+1..wl]}\e[0m"
elsif key == "\C-c"
flag = true
break
else
print "\r#{word[0...i]}\e[31m#{word[i]}\e[0m\e[2m#{word[i+1..wl]}\e[0m"
miss += 1
i -= 1
end
end
break if flag
puts
end
end
print "\e[2K\e[1A\e[2K\r"
puts "miss: #{miss}"
printf "press: %.5f/s\n" %(all / result)
Eh bien, c'est aussi simple. Le temps jusqu'à ce que «C-c» soit fait avec «Benchmark.realtime» est mesuré, et le nombre de frappes par seconde est calculé en fonction de cela. \ e [~~ K
, \ e [~~ A
est également une séquence d'échappement ANSI.
ruby main.rb
Recommended Posts