Machen Sie ein Tippspiel mit Ruby

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.

[1] Sammle Wörter

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.

[2] Holen Sie sich das Schlüsselereignis

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

[3] Schreiben Sie Highlights und Kernteile gleichzeitig

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.

Noten anzeigen

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.

[4] Lauf!

ruby main.rb

Recommended Posts

Machen Sie ein Tippspiel mit Ruby
Erstellen eines Chinchiro-Spiels mit Ruby 4. Erstellen eines Spielfortschrittsprozesses
Machen wir einen LINE Bot mit Ruby + Sinatra - Teil 2
Machen wir einen LINE Bot mit Ruby + Sinatra - Teil 1
Machen Sie mit Ruby2D ein Labyrinth
Erstellen Sie mit JavaFX ein Diashow-Tool
[Anfänger] Versuchen Sie, mit Java ein einfaches RPG-Spiel zu erstellen ①
Machen Sie eine Müllabfuhr mit line-bot-sdk-java
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Erstellen Sie eine Listenkarte mit LazyMap
Erstellen eines Chinchiro-Spiels mit Ruby Final-Verbesserung nach Erhalt einer Bewertung
Mit Rubin ● × Game und Othello (Grundlegende Bewertung)
Notieren Sie sich die Ruby-Schlüsselwortargumente
Machen wir eine Weihnachtskarte mit Verarbeitung!
Erstellen Sie mit Sinatra eine Familien-ToDo-Liste
Lassen Sie uns mit Ruby ~ Vorbereitung ~ Poker ziehen
Erstellen Sie mit Sinatra eine Familien-ToDo-Liste
Ich habe mit Ruby einen riskanten Würfel gemacht
Erstellen Sie trotzdem eine Anmeldefunktion mit Rails
[Docker] [Nginx] Erstellen Sie mit Nginx eine einfache ALB
Extrahieren Sie einen Teil einer Zeichenfolge in Ruby
Wenn Sie mit Ruby eine Zip-Datei erstellen möchten, ist dies Rubyzip.
AtCoder Anfängerwettbewerb 169 A, B, C mit Rubin
Erstellen eines Browser-Automatisierungstools mit Ruby + Selenium
Lassen Sie uns mit Ruby ~ Test-Unit-Vorbereitung ~ Draw Poker machen
Lassen Sie uns eine Suchfunktion mit Rails (Ransack) machen
Machen Sie System.out Mock mit dem Spock Test Framework
Ein einfaches Stein-Papier-Scheren-Spiel mit JavaFX und SceneBuilder
Ich habe mit Ruby On Rails ein Portfolio erstellt
Ich habe versucht, mit Javafx ein einfaches Spiel zu machen ① "Lass uns Glücksspiel finden" (unvollendet)
Ich habe versucht, ein einfaches Spiel mit Javafx zu machen ① "Lass uns Glücksspiel finden" (unvollendete Version ②)
Entwerfen und implementieren Sie ein Block Breaking-Spiel mit einer sauberen Architektur
So erstellen Sie eine mit Ruby erstellte LINE-Messaging-Funktion
[Anfänger] Erstellen Sie ein wettbewerbsfähiges Spiel mit grundlegenden Java-Kenntnissen
Entwerfen und implementieren Sie ein Block Breaking-Spiel mit einer sauberen Architektur
[Ruby] Ich habe einen Crawler mit Anemone und Nokogiri gemacht.
Erste Schritte mit Ruby
[Ruby] Generiere verketteten QR-Code mit rqrcode (Übung)
Erstellen Sie ein Reflexionsprogramm ②
Erstellen Sie ein Reflexionsprogramm ③
Evolve Eve mit Ruby
[Ruby on Rails] Fügen Sie eine Spalte mit externen Schlüsselbeschränkungen hinzu
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Erstellen Sie mit SpringBoot + JPA + Thymeleaf ein einfaches CRUD ~ ~ Hallo Welt ~
Ich habe mit Gem in Ruby nach einem Webframework gesucht
Erstellen wir eine einfache API mit EC2 + RDS + Spring Boot ①
Extrahieren Sie eine Zeichenkette, die mit einem Großbuchstaben (Ruby) in Großbuchstaben beginnt.