2011-12-08

Flick Golf!

10円アプリ二日目。ゴルフゲームのFlick Golf!がいい感じです。

何がいいかというと、ショットしてボールが飛んでいる間にフリックで軌道をねじ曲げられるところ。一回のフリックではそれほど変わりませんが、何回も一生懸命フリックすればかなり曲がります。バックスピンなんかも基本的に飛んでいる間のフリックでかかるみたいです。

ゴルフゲームというと、基本的には打ってしまったら止まるまで見守ることしかできない、だから考え抜いて神経を研ぎ澄まして打つ、それが良いところだったりするわけです。保守的なゴルフゲーマーは後から軌道をコントロールできると聞いたら眉をひそめるかもしれません。しかし常に集中してプレイできるわけではありませんし、タッチパネルの性能や指の太さ、そして画面の小ささ等を考慮すると、指で正確なショットをするのには限界があります。昔からよくあるゴルフゲームのように、向き、スタンス、クラブ、パワー、打点、それぞれを個別にボタンを押すタイミングだけで決めていくようにすれば、それほど正確な操作は必要なくなります。それはそれで面白いのですが、タッチパネルならではの直感的な操作を生かしていないのでは無いかと思います。

このゲームはそれを全く別の方法で解決しているわけです。まずはとにかく打ってみよう、と。そして飛んでいる間に一生懸命フリックすることで調整してもらおう、と。なのでショットするときにはそれほど考える必要がありません。強すぎたと思ったら上から下へフリック、弱すぎたと思ったら下から上へフリック、右過ぎたとか左過ぎたと思ったら逆方向にフリックすればある程度は修正が効きます。

でもあまりに弱すぎたら絶対ピンまで届きませんし、高いスコアを狙うならショットの段階で出来るだけ正確に指を動かした方が有利です。ただ、その正確さの分解能は荒くても大丈夫ということです。今回は近いからちょっと弱め、今回は遠いからめいっぱい。そんな大まかな感覚で大丈夫です。あとは飛んでいる間に調整すればOK。

何かカーリングに近いのかなぁなんて思ったり。

他にも現実のスポーツゲームに応用できそうですね。ボーリングとか。

2011-12-07

Android Market アプリ10円セール

アプリ10円セール実施中と言うことで、いろんなアプリを試す良い機会になりました。

  • SketchBook Mobile : 機能が充実したスケッチソフト。もっとレスポンス速く、細かい文字も書けるようになれば良いんだけど、Androidではこの辺が限界なのかなぁ。
  • 星座表 : 前から欲しかったのだけどそんなにお金を出してまで買うのもなぁと思っていたのでこの機会はありがたい。
  • SoundHound ∞ : 音楽検索ソフト。すごい。アニソンもばっちり。
2011-12-04

携帯端末変更

先週金曜日にSO-01B(Xperia X10)からSC-04D(Galaxy Nexus)へ移行した。4.0が出たら新しいの買うよ、と言っていたので仕方ない。

良くなったところ:

  • 画面の発色が綺麗
  • 解像度が高い
  • カメラ撮影が速い (SO-01Bだと撮影までかなり待たされる)
  • タッチパネルの感度が良い (もともとマルチタッチ非対応だったSO-01Bとは比較にならない。Google Mapのピンチアウト時にちゃんと指に追従してくれる)
  • 余計な(消せない)アプリが少ない (SO-01BはMoxierやmora touchなど消せないアプリが多数あった。SC-04Dでも消せないアプリはあるが、SO-01Bよりはだいぶ少ない。でもSPモードアプリはプリインストールしてほしくなかった)
  • ブラウザ速い
  • 電話・連絡先速い (SO-01Bは連絡先を開くのが異様に遅かった。なかなか電話できなくてイライラさせられていたが、SC-04Dは普通にストレスなく使える)
  • 色々速い
  • バッテリー状況の表示が格好いい
  • 他、細かい点を上げればいろいろ

悪くなったところ:

  • カメラの画質 (カメラの画質はSO-01Bの方が断然上。画素数だけでなく色合いや手ぶれ具合が気になる)
  • GPSのつかみ・精度 (まだ少し試しただけだけど、SO-01Bと比べてSC-04Dはつかみが遅かったり、位置がおかしくなりがちな気がする)
2011-12-02

Emacs Lispの書き方が分からない

Emacs Lispってたまに書くけど、いまだにちゃんとした書き方がよく分からない。

例えばバッファ内を正規表現検索してマッチした文字列からなるリストを作りたいとき。

(save-excursion
  (let (result)
    (while (re-search-forward "[0-9]+" nil t)
      (setq result (append result (list (match-string 0)))))
    result))

毎回appendするのは効率が悪そう。

(save-excursion
  (let (result)
    (while (re-search-forward "[0-9]+" nil t)
      ;;↓(require 'cl)していいなら(push (match-string 0) result)
      (setq result (cons (match-string 0) result)))
    (nreverse result)))

一番書きやすそうなコードだけど、reverseするくらいなら最初から後ろへつなげていけば良いんじゃね?

(save-excursion
  (let (head tail)
    (while (re-search-forward "[0-9]+" nil t)
      (let ((number (match-string 0)))
        (if tail (setq tail (setcdr tail (list number)))
          (setq head (setq tail (list number))))))
    head))

一番最初headもtailもnilから始まるのがやっかい。ループの中で毎回nil判定するのは無駄。

(save-excursion
  (if (re-search-forward "[0-9]+" nil t)
      (let* ((head (list (match-string 0)))
             (tail head))
        (while (re-search-forward "[0-9]+" nil t)
          (setq tail (setcdr tail (list (match-string 0)))))
        head)))

時間的な効率は良さそうに見える(要検証)けど、re-search-forwardやmatch-stringを二回書かなきゃいけないのがイヤな感じ。

というわけで、結局どう書くのが一番良いのかいまだに分からない。実行速度なんかはちゃんと検証した方が良いんだろうなぁ。

clとかあまり使ったこと無いし、マクロとかもほとんど使ったこと無い。たまに書くだけだからまだまだ知らないことが沢山あるなぁ。そういえばclって積極的に使って良い物なの? 上の例でもpush使おうか迷ったんだけど……。

普段Lispを使っている方はこういうときどう書くんでしょう。

2011-11-29

間取りゲー

この発想はなかった。

この手の図面って見てるだけでワクワクしちゃうよね。

似たようなゲームはなかったのかなと調べてみたら、少し形態は違うけどMADRISMというXboxインディーズゲームがあったらしい。

キッチン多すぎ(笑) 2LDKとかいって消えていくところが可笑しい。

四畳半神話体系のEDを連想したり。