FF10の雷除けを自動化した話

これはAizu Advent Calender 2014の9日目の記事です!

Aizu Advent Calender 2014

 

前の人: @MiZuKi_Sonoko

mizukindevelop: Hackathonに参加しよう {Aizu Advent Calendar 2014 [8]日目}

次の人: @a_r_g_v

 

はじめに

FF10はみんな知ってるよね?

FF10には七曜の武器っていう伝説の武器みたいなものがあって、入手方法がゲーム中のミニゲームをなんかすごいやるみたいな感じ。

例)

その中で巨乳おっぱいさんルールーの「雷平原のサブイベント・雷除けを200回連続で成功する」というものがある。

おっぱいさん

f:id:panchiga:20131228210446j:plain

 

雷除けとは

画面が光ったら◯ボタンを押す。それを200回繰り返す。そんな作業。


雷平原 雷避けチャレンジ20140517 - YouTube

 

 

こんな作業を人間がやる必要無くないか…じゃあ自動化してみよう!!!ってなったので

自動化をしてみた。

 

準備

今回使った物

 

 手順

  1. Webカメラから画面をキャプチャする
  2. キャプチャした画面情報から光ったかどうかの判定
  3. 光っていたら◯ボタンを押させる
  4. 光ってなかったら↑ボタンを押させる

 

コード

gist086a1a0c2a2bc05a70c2

 

gistf19a396b0924a1ba547d

 

配線

f:id:panchiga:20141209083845p:plain

 

 

f:id:panchiga:20141202043020j:plain

きったね

 

グランドか電源かわからないけど黄色の線が繋がってるのがリレーの入れ替わらない部分。

青色で繋がってるのが◯ボタン

灰色でつながってるのが上ボタン

 

灰色のとこから伸びてる黄色は上以外のボタンを押したい時に使う用

灰色のとこから伸びてる赤色は意味が無さそうので気にしないで…

 

それにしてもひどいな… 

 

動かす


[ff10]雷除けの自動化 - YouTube

 

動いてるね

 

 200回達成!!やったぜ!!!!

 

辛かったこと

Webカメラが勝手にホワイトバランスとか調整しちゃうのでミスが出る。それに気づくまで何が悪いのか全然分からなくて閾値とかスリープの時間とか変えたりしてわからんわからんってしてた。Logicoolwebカメラ使ってたので公式で配ってる調整ソフト(?)使って解決できてばんざい! 

トランジスタがなかったけどたまたまリレーがあって良かった。

 

まとめ 

  • PSコントローラーの基板直接使えばPC側から操作できるの最高
  • pythonシリアル通信超簡単
  • OpenCV強い
  • Arduino便利
  • リレー便利

 

感想

手でやりたくないことを機械にやらせよう的な事が計算みたいにコンピュータの中だけで済ませていたものから、PS2のゲームをやらせる的な現実の世界にまで飛び出して、行動の幅と言うかまさに世界が広がったなって感じがしてる。

電子工作って面白いなあって思いました。

 

次の人 → @a_r_g_v

 

 

Arduinoをはじめようキット

Arduinoをはじめようキット

 

 

【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

 

 

 

openCV使いたい…openCV使いたくない?

f:id:panchiga:20140717031812p:plain

はじめに

以前opencv使いたいなーって思ってOpenCV2プログラミングブックという書籍を参考にやってて途中で飽きて放置していました。
 
その本ではmacportsを使っているのですが、当時と違い私はhomebrewを使うようになってしまいました。
その為競合が発生するとのことで、もうmacportsが使えない体になってしまいました。
 
するとOpenCV2プログラミングブック通りには進められないので一工夫必要でした。なのでその苦労を書きます。
 
HomebrewでopenCVというのを紹介してるブログはいっぱい有るのでそのへんは適当にぐぐりましょう。
 
$brew install opencv
 
ここでは躓かなかったとします。
 

早速使う

早速サンプルプログラムを動かしてみようとしたところ、無理やでwって言われた。
brew installしたらパスは勝手に通ってるのではと思っていたので、
 
$g++ test.cpp
 
とかやってたので 
#include <opencv2/opencv.hpp>
         ^
1 error generated.
とかいうエラーくらってなんでだろうなあとか思ってました。
 
つまりincludeするファイルはどこにあるのかを教えてあげないといけないのです。
 
g++のオプション

今回使うオプション

-L :ライブラリファイルのディレクトリを指定する。
-I :インクルードファイルのディレクトリを指定する。
 

解決した 

g++ test.cpp -I /usr/local/Cellar/opencv/2.4.9/include/opencv2 -I/usr/local/include -L/usr/local/lib -lopencv_highgui -lopencv_core

 
死ぬほど長いですね。
でもお陰で無事にコンパイルできて実行ファイルが出力されました!やったね!
 

まとめ 

g++力があまりにも足りませんでした。あとググり力も足りませんでしたね。
さて次は-L /usr/local/libに何がいるのかを知る必要がありますね。
 

感想

なんというか、知らないことが多すぎるなあって感じでした。
何かを使う時、何が書かれてるか考えないでコピペするのはとても駄目ですね。せめて意味を理解してから使おうって思いました。
openCV使えると面白いことがいっぱいできそうなのでいっぱい使っていこうと思います。

 

図工 200円でDDRコントローラー(小)を作る

用意したもの

・PS用のDDRマット(100円)

・アルミホイル(60円)

・皮膜付きの導線60cm(40円)

・サーバーとか買った時についてくる発泡スチロールみたいの

・ラジオペンチ

・CDケース

・ガムテープ

 

手順

  1. DDRマットを切って基板だけ取り出す
  2. それがちゃんと動くことを確認する
  3. アルミホイルが電気通すことを利用してスイッチを4個作る(上下左右)
  4. アルミホイルと導線と基板とガムテープで頑張る
  5. 完成

 

完成です。簡単な図工ですね。

 

結果

f:id:panchiga:20131220072316j:plain

f:id:panchiga:20131220072312j:plain

f:id:panchiga:20131220072308j:plain

 

上の汚いのが完成品。

中のがスイッチ押したら動いた時の写真。ぶれまくった。

下のが実際動かしてみた奴。

 

スコアは散々だけど動きました。

自分の手のサイズに合ってなくてミスばっかだけどね。

 

感想とか

アルミホイルすげー!ガムテープすげー!

プロトタイプなので見栄えはあれだが無事に動いてよかった。スイッチ部分をどうにかもっといい方法探せば・・・

アルミホイルじゃなくてアルミの板とか使って、もっときれいにスイッチ作ってやればミニDDRが作れるんじゃないかって思えるものにはなるって確信できた。

スイッチ・・スイッチなあ・・・・

あとコントローラーが大した構造じゃないので自作もできるなって思った。

すぐ終わるだろwって舐めてかかったら3時間くらいかかってたので意外と辛かった。

 

EXTREMEは自慢です。近所で1000円くらいで買えました。MAX.クリアできません!

Processing

Arduinoでもっと遊ぶにはprocessingは必須らしい

ので初めて知ったことを書こうかなと

 

void setup()

は最初に実行されて初期状態を決めてる。Arduinoと同じだね。
小さいプログラム動かすくらいだったらいらなかったりする。
 
draw()って関数があるらしい
mousePressedを使ってマウスクリックを認識する
mouseX, mouseYでmouseのウィンドウ上の座標を取る
 

f:id:panchiga:20131213044115p:image

Exportをすると.app形式のファイルを作りだしてくれるんだが
10行程度のコードでやってみた結果
     Embed Javaのチェックを外すと5MBくらい
     つけるとなんと100MB!!あほか!!
 
 
リファレンスがExampleよりわかりやすい文になってるのでなにかやりたいのがあったら見るといいらしい。結果付きだからさらにいい。
 
図形を書くことが簡単にできるが(quad,line,ellipseなど)だいたい(座標1、座標2、…)ッて感じで書く。
 
arc()が面白い。欠けた円がかける。
 
size(480,480); 
arc(240,240,80,20,0,radians(257));

f:id:panchiga:20131213044118p:image

 
 
図形の描画は上から順にされる。
つまり
 

size(480,480);

triangle(50,50,50,240,240,400);
ellipse(100,200,150,150);
 
ellipse(300,200,150,150);
triangle(300,30,250,240,300,400);

f:id:panchiga:20131213044124p:image

こんな感じに
 
色とか線の太さとかも変えられる
色: 
background(int);
          背景色の設定
fill(int); 
          図形の色の設定
Stroke(int);
          輪郭の色の設定
noFill();やnoStroke();などで決めたことを無効化する
 
 
決まってない形を作る
beginShape();
vertex(x1,y1);
vertex(x2,y2);
vertex(xn,yn);
endShape();
 
これがあればtriangleとかいらないんじゃないっすかねえ・・・


感想
 
1日あれば本1冊くらい余裕だろって思ってたんだけだまさかの1章しか進まないっていう・・・
やる気あるんすかね
作業用BackGround Movieなんてありえないって学びましたね・・・
 
 
参考
 
 

numeron

numeronやろうぜ!って人がいた。

だから作った。

 

gist7683096

 

ターミナル開いて

ruby ファイル名

で一人用numeronです。

 

分かってて書くプログラム超楽しい・・・

次は敵になるCPUとか作りたいですね。

2人対戦とかも必要ですね。

 

 

コードレビューしてください!

Dvorak配列>>>>>>>>>>QWERTY配列

3日ほど前かQWERTY配列からDvorak配列に乗り換えました。

乗り換えてみようと思ったきっかけがいくつかあるので紹介します。

f:id:panchiga:20131115044444p:plain

 

QWERTY配列っていいものではない

この配列ってタイプライターのための配列みたいなんですよね。

タイプライターのキーの衝突を防ぐために入力する速度を落とすためって説が有力らしいです。

つまりこれはその時タイプライターから乗り換えた人に使いやすいって理由で使い始めてそれが普及してしまったがために今も使われてるといっていいと思ったんです。

実際プログラムとか書いてると左手薬指駆使し過ぎでアホかっておもってましたし。

そうおもいません?

 

・乗り換える大変さを知りたかった

QWERTY配列でもツイートとかはなにも苦労なくできている程度にはつかえていました。それでも慣れてないことをする大変さを知るいい機会だと思って。

 

・乗り換えること自体は簡単

Macだったらことえりがサポートしているので何も苦労はいらないです。

linuxだったらそういうパッケージがあるらしいです

Winは知りません

 

ショートカットキーが実は不便なのですが⌘キー押した時だけQWERTYにすることができます。

 

理由はこんなもんですかね。

 

 

使ってどうだったか

・自動ロック注意いります。慣れてないとどこがどのキーか分からないのでうへえってなります。

・ソフトウェアキーボードありがたがる日が来るとは・・・。

・’ー’押すの楽です

・慣れるまでは本当に大変でQWERTYでよくね・・・ってなります。耐えます。

・体が覚えてるレベルのことはだいたい不便ですが慣れだと思って耐えます。

 

何より小指が忙しくない!!

 

しかし親指は相変わらず仕事しなさ過ぎなので次はハードウェアの変更ですね。

 

 

読んでくださった皆さんもQWERTYなんてやめてDvorakに変えて世界標準を敵に回しましょう。

 

 

 

艦これ × Automator -> 育て屋さん

最近艦これに着任した。霧島さんかわいいよ霧島さん

 

経験値を稼いでレベルアップするという行為が必要になってくるのだがこれに時間費やすのもなんか悔しかったのでいつの間にかレベル上がっててくれないものだろうか例えば寝てる時とかにって思ってAutomatorというアプリがあったのを思い出した。

 

 

 

 

f:id:panchiga:20131019033046p:plain

 

Automatorをつかったレベル上げの手順を書くと

  1. 艦これを開いとく
  2. Automatorを開く(/Applications/Automator.app)
  3. workflowを選ぶ
  4. ●REC
  5. 艦これに戻る(注意:ページの艦これに関係ないっぽい白いところをクリックすること)
  6. 旗艦だけで行ってできるだけダメージくらわないで帰ってこれるところを選ぶ
  7. くらわないでいけるとこまで行ったら帰る
  8. 補給する
  9. 5の時に開いていたところに戻る(母港とか)
  10. Automatorに戻り停止をする
  11. あとは再生をするだけ

 

これだけだと1回行かせることしかできないが複製して何個か連結させることができるのでお好きなだけ。

実行中は自分の操作がほとんど受け付けられないので自己責任で。

cookie clickerのときに3000000回クリックさせるまで止まらないようにしたら1日何もできないなんてことになったので本当に自己責任で。

 

結果として朝起きたらレベルがあがってる。

自分的には1-1-1で帰るのがおすすめです。

 

 

本当は「進む」とか「補給」とか「出撃」とかの画像探させて頭良さげにやらせたかったんだけどよくわからなかったので諦めた。よくわかる人は前からやってそうですね。

もっといい方法あったら是非教えて下さい!