20140604/Telnetでマインスイーパを「自動的に」「考えず」やりたい(表示修正版)
ある講義の課題で作成したプログラム。
Telnetでホスト(大学のあるサーバ)にポート指定して接続すると、
マインスイーパが遊べちゃうのだ!!!
さて、手動で初見クリアできたけれど
こいつを自動的にやらせるプログラム作ってね、と言われました。
Cでsocket()なりなんなり使わせようとしてるのかな???
と考えたけれどRubyで書いてみました。
#coding: utf-8 require 'net/telnet' telnet = Net::Telnet.new("Host" => "hogehoge", "Port" => 00000, "Telnetmode" => true, "Timeout" => 60) ypoint, xpoint = 0 (1..10).each do |ypoint| (1..10).each do |xpoint| telnet.puts("#{ypoint},#{xpoint}") {|c| print c} telnet.waitfor(/200/) {|c| print c} if ypoint && xpoint > 9 then break end end end telnet.cmd("exit") {|c| print c} telnet.close
最初、loopでやろうとしてたためかbreak判定を入れてたり。
ひっかかった点として、
telnet.puts("#{ypoint},#{xpoint}") {|c| print c}
の部分をはじめに
telnet.cmd("#{ypoint},#{xpoint}") {|c| print c}
にしていたため、2回目で動作を停止させてしまっていました。
cmdにしていると、相手方のプロンプトを待機するようになるため、
返ってこなければ…(お察し)
putsで送るだけ送っておくとなんとかなってしまった。
やばげなこーどだ