Newer
Older
Ruby / wordlejp.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require('csv')
data=CSV.read("Q_fil_ippan.csv")
srand()
tango=data[rand(data.length)] #答えの単語をランダムで決める
puts("日本語版ワードルです。")
puts("5文字の単語を8回の試行で当ててください")
puts("カタカナ5文字で入力してね")
p(tango)
x=1
while true #無限に繰り返す
  printf("%d:",x)
  nyuryoku=gets.chomp
  print("\e[1A\e[2C")
  if nyuryoku.length!=5 #5文字の単語じゃなかったら…
    print("5文字の単語で入力してね。") #警告を出して
    sleep(1) #1秒待って
    print("\e[28D\e[0K") #警告を消す
    redo #やり直させる
  end
  y=0
  a=[]
  while y<data.length #⇣を辞書のやつ全て確認する
    if data[y].include?(nyuryoku)!=true #nyuryokuが辞書になかったら
      a<<y #aになんか入れておく
    end
    y+=1
  end
  if a.length==data.length #aの長さとdataの長さが同じ=辞書にnyuryokuがないとき
    print("単語が辞書に載ってないよ。") #警告を出して
    sleep(1) #1秒待って
    print("\e[28D\e[0K")#警告を消す
    redo
  end
  print("\e[5D\e[0K") #上のやつをかいくぐった単語をいったん消して
  z=0
  while z<nyuryoku.length #ここから1文字1文字に色を付ける作業に入る
    if nyuryoku[z]==tango[z] #もし同じところにあったら
      printf("\e[42m%s\e[0m",nyuryoku[z]) #緑背景で出す
      next #次のループに移る
    end
    o=0
    while o<tango.length #答えの単語の他の文字を確認し、
      if nyuryoku[z]==tango[o] #もし違う所だけど同じ文字だったら
        p(nyuryoku[z])
        printf("\e[43m%s\e[0m",nyuryoku[z]) #黄色背景で出す
        next  #次のループに移る
      end
      o+=1
    end
    printf("\e[47;30m%s\e[0m",nyuryoku[z]) #どこにもない文字は白背黒文で出す
    z+=1
  end
  puts("")
  if nyuryoku==tango
    printf("正解です!%d回で当てることができました。\n",x)
    break
  end
  x+=1
  if x==9
    printf("残念… 正解は%sでした。\n",tango)
    break
  end
end