Jet Fighter
なんとなく手持ち無沙汰な時間があったので、Jet Fighterというiphone MMO ゲームを手に入れてみた。
で、これは名前だけは知っているiMobを作ったところが作っているゲームらしい。あとからiMobの画面を見てみたら色以外まったく同じだった…
3日ほどやってみたんだが、結局やらなくなった。というか、なにがおもしろいんだ?これ…
概要説明
- 一定時間ごとに行動ポイントが増えていく
- ミッションをこなして経験値とお金を稼ぐ
- 稼いだお金で武器や防御兵器、戦闘機などを購入する
- 同じ程度のレベルの人を攻撃できる
- 攻撃に成功するとお金と経験値を奪える
- 友人を勧誘できる
- 9桁の数字のコードが割り当てられているのでそれを入力する
- GPSを使い、地理的に近い場所にいる人を勧誘できる
えっと、これだけ。レベル15ぐらいまでやったんだけど、展開に変化はまったくなかった。上位の人を見ると装備が同じぐらいのものだったのでだいぶやった方だと思うんだけど。
ちなみに、パラメータとしては、attackとかdefenceの二つがあるんだけど、別の人を攻撃する際に必要な値は人数。おそらくそれだけ。
レベル15ぐらいになるとみんな100とか200とかの友人(squadと呼ばれる)がいる。一応レベルの10倍までの人数しかカウントされないというようになっているようだが、それでも150人。武器の数も重要にはなるようだけど、この人数が多ければ勝ち。少なければ負け、っぽい。
つまり友人の数だけが必要で、あとはほんとに単なる作業。そのくせ時間拘束が厳しい。一定時間毎にポイントが溜まる形式なので放置でいいんじゃね?とか思うんだが、あっという間に上限まで溜まるので、無駄にしないためにはちょこちょこアクセスしないといけない。まあ別に無駄になるのを無視すればいいんだけど。
で、これがほんとにおもしろいの?友人の数が少なくて勝ったことがないからなのかもしれないけど。
もうちょっと戦略を考えたりする余地があったほうがおもしろいと思うんだけどなぁ。
いいところ
ただ、おもしろいなぁと思うところはそれなりにあった。おもにUIだけど。
- 徹底して文字を入力させないところ
- ボタンだけでできるようになっている
- iphoneでは入力画面が出てくるのが遅いからか
- 常時statusが表示されているところ
しかし正直これなら普通のWebページをiphone用にカスタマイズしたものでできる気がする。
あと、
- 人数が重要
なので、強制的に人数を増やすこと(ミッションに人数が必要)と、簡単に人数を増やせる方法が用意されているのがすごいことだと思う。
1. CUDA for Mac
ここから入手
http://www.nvidia.com/object/cuda_get.html#macos
Toolkit, Visual Profiler, SDK合わせて90Mぐらい。
要件
インストール後の設定
- PATH に /usr/local/cuda/binを加える
- DYLD_LIBRARY_PATH に /usr/local/cuda/lib を加える
export PATH=/usr/local/cuda/bin:$PATH export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH
試しにcompile
% nvcc -V (nvccはnvideaのcompiler) % cd /Developer/CUDA % make
バイナリは、
/Developer/CUDA/bin/darwin/release
にできる。
お試し
% cd /Developer/CUDA/bin/darwin/release % export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH % ./deviceQuery CUDA Device Query (Runtime API) version (CUDART static linking) There is no device supporting CUDA. Device 0: "Device Emulation (CPU)" CUDA Capability Major revision number: 9999 CUDA Capability Minor revision number: 9999 (...)
ちょ、こいつ対応してないじゃん…
- 終 了 -
ついでにRuby版
ruby書くの2年ぶりぐらいかも。
def geopoEncode(latitude, longitude, scale) # 64characters (number + big and small letter + hyphen + underscore) chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_" geopo = "" # Change a degree measure to a decimal number latitude = (latitude + 90) / 180 * (8** 10) longitude = (longitude + 180) / 360 * (8** 10) # Compute a GeoPo code from head and concatenate for i in 0..scale geopo += chars[(latitude / (8 ** (9 - i)) % 8).floor + (longitude / (8 ** (9 - i)) % 8).floor * 8,1] end return geopo; end def geopoDecode(geopo) chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; latitude = 0 longitude = 0 for i in 0..(geopo.size-1) # What number of character that equal to a GeoPo code (0-63) order = chars.index(geopo[i]) # Lat/Lng plus geolocation value of scale latitude = latitude + (order % 8).floor * (8 ** (9 - i)) longitude = longitude + (order / 8).floor * (8 ** (9 - i)) end # Change a decimal number to a degree measure, and plus revised value that shift center of area latitude = latitude * 180.0 / (8 ** 10) + 180 / (8 ** geopo.size) / 2 - 90 longitude = longitude * 360.0 / (8 ** 10) + 360 / (8 ** geopo.size) / 2 - 180 scale = geopo.size return latitude, longitude, scale end p geopoEncode(35.658578, 139.745447, 6) # -> Z4RHXX p geopoEncode(48.858271, 2.294512, 6) # -> C1qn6P p geopoEncode(31.658578, 139.745447, 3) # -> Z3O p geopoDecode("Z4RHXX") p geopoDecode("C1qn6P") p geopoDecode("Z30")
rangeの指定の仕方をすっかり忘れてたのでちょっと時間かかっちゃった。
GeoPoをPythonで
緯度経度を文字列で表現する方式GeoPo、というのがあるらしいというのを知った。んで、サンプルコードにPythonがなかったのでついかっとなってPHPをそのまんまPythonに移植してみた。
http://geopo.at/intl/ja/developer/sample_code.html
import math def geopoEncode(latitude, longitude, scale): # 64characters (number + big and small letter + hyphen + underscore) chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_" geopo = "" # Change a degree measure to a decimal number latitude = (latitude + 90) / 180 * pow(8, 10) longitude = (longitude + 180) / 360 * pow(8, 10) # Compute a GeoPo code from head and concatenate for i in range(scale): geopo += chars[int(math.floor(latitude / pow(8, 9 - i) % 8) + math.floor(longitude / pow(8, 9 - i) % 8) * 8)] return geopo; def geopoDecode(geopo): # 64characters (number + big and small letter + hyphen + underscore) chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; latitude = 0 longitude = 0 for i in range(len(geopo)): # What number of character that equal to a GeoPo code (0-63) order = chars.find(geopo[i]) # Lat/Lng plus geolocation value of scale latitude = latitude + math.floor(order % 8) * pow(8, 9 - i); longitude = longitude + math.floor(order / 8) * pow(8, 9 - i); # Change a decimal number to a degree measure, and plus revised value that shift center of area latitude = latitude * 180 / pow(8, 10) + 180 / pow(8, len(geopo)) / 2 - 90 longitude = longitude * 360 / pow(8, 10) + 360 / pow(8, len(geopo)) / 2 - 180 scale = len(geopo) return (latitude, longitude, scale) if __name__ == '__main__': print geopoEncode(35.658578, 139.745447, 6) # -> Z4RHXX print geopoEncode(48.858271, 2.294512, 6) # -> C1qn6P print geopoEncode(31.658578, 139.745447, 3) # -> Z3O print geopoDecode("Z4RHXX") print geopoDecode("C1qn6P") print geopoDecode("Z30")
間違ってるというご指摘お待ちしております。転載、使用する方がいらっしゃいましたらご自由にどうぞ。ってほんとうに単に写しただけですが。
追記: NTEmacs
k12uから「NTEmacsでいいんじゃね?」と言われたのでプレリリース版で試してみた。
(emacs-version) -> "GNU Emacs 23.0.90.1 (i386-mingw-nt5.1.2600) of 2009-02-02 on SOFT-MJASON" (fboundp 'mw32-ime-initialize) -> nil
というわけで、同様みたい。え、攻めすぎ?
Windowsでemacs
emacs本家がWindowsバイナリを配ってるではないですか。というわけで、これを使ってみることにする。
Install
zipを展開して、適当なところに置きます。ぼくはC:/Program Files以下にemacs-22.3を置きました。
実行
emacs-22.3/bin/runemacs.exe を実行します。
ぼくはWindowsではbluewindを使っているのでこのrunemacs.exeを登録するだけでした。他の人はショートカットを作ったり、PATHを通したりするといいでしょう。
(Bluewind: http://cspace.s2.xrea.com/software/bluewind/ いつも使わせていただいております。感謝!)
.emacsをどこに置けばいいの?
http://www.gnu.org/software/emacs/windows/Installing-Emacs.html#Installing-Emacs
を見ると、
- 1. HOMEという環境変数が設定されていればそこを使う
- 2. HKCU\SOFTWARE\GNU\Emacs\HOMEというレジストリがあればそこを使う
- 3. HKLM\SOFTWARE\GNU\Emacs\HOMEというレジストリがあればそこを使う。ただし、複数のユーザが同じHOMEを共有することになるので推奨しない。
- 4. C:\.emacsがあった場合、C:/を使う。これは後方互換性のため。
- 5. ユーザのAppDataディレクトリを使う。これは、通常ユーザのpreferenceディレクトリの下のApplication Dataディレクトリである。具体的な場所はWindowsのバージョンによってことなる。
一番簡単に調べるのは、C-x C-fを押して、
~/
と書き、TABを二回押すと~が展開されてHOMEが分かる。ここに.emacsを置けばいいみたいです。他にも、
(insert (getenv "HOME"))
を*scratch*に書いて、C-x C-e で評価してやれば分かります。ぼくの場合は↓でした。
C:\Documents and Settings\faw\Application Data
なので、環境変数HOMEを設定しました。これはloginしなおさないと反映されない点に注意です。
また、、Windows(というかexplorer)では、"."で始まるファイル名を扱うことができません。そのため、~/.emacsではなく、
~/.emacs.d/initl.el
が代わりに使われます。.emacsをここにファイル名を変えて置けばいいみたいです。