Faites un jeu de frappe avec ruby

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.

[1] Collectez des mots

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.

[2] Obtenez l'événement clé

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

[3] Rédigez les faits saillants et les parties principales à la fois

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.

Afficher les notes

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.

[4] Courez!

ruby main.rb

Recommended Posts

Faites un jeu de frappe avec ruby
Création d'un jeu Chinchiro avec Ruby 4th Création d'un processus de progression du jeu
Faisons un Bot LINE avec Ruby + Sinatra - Partie 2
Faisons un Bot LINE avec Ruby + Sinatra - Partie 1
Créez un labyrinthe de fouilles avec Ruby2D
Créer un outil de diaporama avec JavaFX
[Débutant] Essayez de créer un jeu RPG simple avec Java ①
Faire un rappel de garbage avec line-bot-sdk-java
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions
Créer une carte de liste avec LazyMap
Créer un jeu Chinchiro avec une amélioration de Ruby Final après avoir reçu un avis
Avec ruby ● × Game et Othello (examen de base)
Notez les arguments de mot-clé Ruby
Faisons une carte de Noël avec Processing!
Faites une liste de choses à faire en famille avec Sinatra
Faisons dessiner du poker avec du rubis ~ Préparation ~
Faites une liste de choses à faire en famille avec Sinatra
J'ai fait une mort risquée avec Ruby
Créez quand même une fonction de connexion avec Rails
[docker] [nginx] Créer un ALB simple avec nginx
Extraire une partie d'une chaîne en Ruby
Si vous voulez créer un fichier zip avec Ruby, c'est rubyzip.
AtCoder Beginner Contest 169 A, B, C avec rubis
Création d'un outil d'automatisation de navigateur avec Ruby + Selenium
Faisons Draw Poker avec Ruby ~ Préparation de l'unité de test ~
Faisons une fonction de recherche avec Rails (ransack)
Rendre System.out Mock avec Spock Test Framework
Un simple jeu de ciseaux-papier-pierre avec JavaFX et SceneBuilder
J'ai fait un portfolio avec Ruby On Rails
J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (inachevé)
J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (version inachevée ②)
Concevoir et implémenter un jeu de rupture de bloc avec une architecture propre
Comment créer une fonction de messagerie LINE avec Ruby
[Débutant] Créez un jeu compétitif avec des connaissances de base sur Java
Concevoir et implémenter un jeu de rupture de bloc avec une architecture propre
[Ruby] J'ai fait un robot avec de l'anémone et du nokogiri.
Premiers pas avec Ruby
[Ruby] Générer un code QR concaténé avec rqrcode (pratique)
Créer un utilitaire de réflexion ②
Créer un utilitaire de réflexion ③
Evolve Eve avec Ruby
[Ruby on Rails] Ajouter une colonne avec des contraintes de clé externe
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Créez un CRUD simple avec SpringBoot + JPA + Thymeleaf ① ~ Hello World ~
J'ai recherché un framework web avec Gem en Ruby
Faisons une API simple avec EC2 + RDS + Spring boot ①
Extraire une chaîne de caractères commençant par une majuscule avec une expression régulière (Ruby)