Hallo. Dieses Mal werde ich ein Tippspiel mit Ruby machen. Wenn Sie es vorerst ausprobieren möchten, versuchen Sie es bitte unter hier.
Wie macht man es dann? Ich werde schreiben.
Diesmal war es mühsam, daher verwende ich nur 100 englische Wörter, aber bitte fügen Sie hinzu, wie Sie möchten. Sie sollten in der Lage sein, mit einer kleinen Änderung Japanisch zu sprechen (obwohl es schwierig zu sein scheint, den Hebon-Stil zu unterstützen) (Ist es in Ordnung, den Hash-Wert auf eine Liste zu setzen und so etwas zu tun?)
Nun, ich denke, Sie können es hier richtig machen. Es ist nicht so wichtig.
Sie können es einfacher machen, indem Sie "io / console" verwenden. Ruby ist einfach so zu machen, nicht wahr?
require 'io/console'
ch = STDIN.getch
puts ch
Es wird angenommen, dass Wörter eine Liste von Wörtern enthalten, die in [1] geschrieben sind.
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
Nun, es ist einfach zu machen, also wirst du verstehen. \ r
ist der Wagenrücklauf und \ e [~~ m
ist die ANSI-Escape-Sequenz.
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)
Nun, das ist auch einfach. Die Zeit, bis "C-c" mit "Benchmark.realtime" fertig ist, wird gemessen und die Anzahl der Tastenanschläge pro Sekunde wird basierend darauf berechnet. \ e [~~ K
, \ e [~~ A
ist auch eine ANSI-Escape-Sequenz.
ruby main.rb
Recommended Posts