ヘキサ日記 Blog

 

        

 

 

いつの間にか8月も終盤ですね

学生の皆さんは夏休みの課題は終わってますか
私は社会人としての課題が毎日山積みです

 

どーもノブです

 

今回も現在読んでいる参考書の一つを紹介します。
「3Dゲームをおもしろくする技術 実例から解き明かすゲームメカニクス・レベルデザイン・カメラのノウハウ」

です
20140829_book

 

この本は、実際にリリースされている様々なゲームを元に

「なぜこのゲームは面白いのか」
「なぜ繰り返しプレイしたくなってしまうのか」
などを解説している書籍です。

 

「スーパーマリオ64」
「GOD OF WAR Ⅲ」
「BAYONETTA」
「バイオハザードシリーズ」
「ANUBIS ZONE OF THE ENDERS」
などなどとにかく実例として上げているゲーム名が多数挙げられています。

 

なんとなく「面白い!!」と感じてプレイしていた部分を
「こういう理由で面白いんだ!!」とわかりやすく解説してくれています。

プログラマー視点からこの本を読んでいると、
「こういうことを考えてレベルデザインしているから、

こういうツールがあったほうが便利じゃないか?」
「こういう意図があるなら、こういう表現がかっこいいんじゃないか?」
など考えさせられる書籍でした

 

オリジナル開発や自作ゲームを作る上で役に立つ考え方の
参考となるので興味のある方にはオススメです

 

ヘキサドライブもユーザーから「面白い!!」と
思われるゲームを作っていきますよ~~!

 

では、また~


        

皆さん、こんにちは!
ビッシーです

 

今回も、引き続きプロシージャルテクスチャの例を紹介したいと思います。

 

今回はノイズテクスチャを利用した雲テクスチャの作成です。

 

今回は積雲のような雲を描画することを目指して、
ノイズテクスチャメタボールの組み合わせでプロシージャルを作成してみます!

 

□ノイズテクスチャとは?

 

雲の乱流のような不規則な表現をするために、 よく使われる手法がノイズテクスチャです。

20140828_pic001

 

あらかじめ、

各ピクセルにランダムな値を入れた画像を用意して、
その画像を合成に利用することで不規則な表現を追加します。

 

今回は、前回の記事で利用した乱数関数を利用し、

プログラムでテクスチャを計算しました。

 

ただし単純なノイズテクスチャを生成してしまうと、
ドットノイズが強く出てしまいます

 

乱流を表現するノイズテクスチャの場合、
一見不規則でも近傍とは連続性がほしいため、
細かいノイズと荒いノイズをスムージングしながら合成することで、
雲模様のような画像を生成しています。

 

□メタボールとは?

 

メタボールとは、n次元の関数の総和が閾値以下かどうかで表現されるボリュームです。
積雲のような綿のような形を表現するために、メタボールを利用します。

 

20140828_pic002

 

今回は2次元画像なので、メタボールは円の中心からの総和で求めています。

 

function(x,y,dst) {
    // 円の中心からの距離を総和
    var density = 0.0;
    for(var i=0; i<plist.length; ++i) {
        density += Math.max( (radius - pointlen(x,y,plist[i][0],plist[i][1])) / radius, 0 );
    }
    if(density > 1) {
        return color1;
    }
    return color2;
}

 

この図形に先ほどのノイズテクスチャを合成することで、
雲の領域を計算して、空と雲のカラーをブレンドさせます。

 

 

20140828_pic004

 

 

□レタッチ

 

最後に雲のように見せるために空のグラデーション処理を加えて、
見た目を調節しています。 

 

20140828_pic003

 

 

【今回のサンプルプログラム】
サンプルプログラム

 

若干のレタッチを加えてみましたが、雲の質感がまだまだ足りません・・・

現実世界の雲は、厚みのある気体ですので遮蔽や透過といった効果が入らないと、
雲の存在感がイマイチになってしまうようです

 

 

次回は、雲向けのライティングを実装して、
厚みのある雲のレンダリングに挑戦してみたいと思います

 

それでは


2014年8月27日

アイス

        

manga06_fix

 お久しぶりです、こんにちは。 デザイナーのミサミサです。

 

最近、自転車を買い換えました。

これまで使っていたのがボロッボロになってしまったので

小さくて軽い自転車にしました。

このごろ少し涼しくなって、自転車に乗るのも気分が良いです(^^)

 

 

アイス、私はあんまり普段食べないんですが

「味が妙」とか「色がすごい」アイスにはつい反応して食べてしまいます。

 

 

以前販売していたガリガリ君の

「コーンポタージュ味」「クリームシチュー味」「ナポリタン味」は

発売日にコンビニに走って買いました。

この、どんな味だか想像しづらい感じが食べてみたくなるんです・・・

個人的には「コーンポタージュ味」はまた食べたくなる位美味しかったです。

 

 

あと、31アイスクリームがたまにすごいカラーリングの商品を出すので

密かにチェックしています。

 

そろそろハロウィン商品が発表されそうなので、

ハロウィンらしいエキセントリックな色をしたアイスが出るのでは・・・と とても楽しみです!

ただ、10月にアイス食べるのはちょっと寒い・・・ですけど・・・

 

 

因みに、グリが食べてるアイスは「ミックスジュース味」です、よ。


2014年8月26日

ほったらかし

        

先週、久しぶりに歯医者に行ってきました。
前回行ったのは、えーと、確か新入社員のとき。
なんと、20年ぶり
進行していた虫歯は1本だけ、長年ほったらかしにしてた割には、まあ優秀な方かな。
こんにちは、イヌカイです。

 

ほったらかしと言えば、我が家には読まずにほったらかしにしてる本が何冊も・・・。
いわゆる積読(つんどく)です。
書店で平積みされているのが気になって思わず手に取り買ってしまった、
そしてなぜかそれだけで満足してしまった・・・。

 

そんな我が家の積読コレクションから、先日やっと解放された一冊をご紹介しましょう。

 

「うまくいっている人の考え方」

 20140826

 

人生がうまくいっている人の特徴は?

それは、「自尊心」が高いこと。
自尊心が高い人は、自分の考えや行動に自信を持ち、たとえ失敗してもそれを前向きにとらえて、

次のステップの土台にする心の余裕があります。
この本では、自尊心を高める方法が100項目紹介されています。

 

・自分を許す
・自分をけなさない
・あるがままの自分を受け入れる
・自分を他人と比較しない
・いい人をやめる
・自分の長所に目を向ける
・自分の価値観を大切にする   etc.

 

みなさんは「自尊心」持ってますか?
最近仕事が思い通りに捗らない、プライベートでもうまくいってないなーという方、一度読んで

みてはいかがでしょう?

 

さて、積読は一冊片付いたし、次は積みゲー崩しだな。

ターゲットは数年前に買った「ICO」。

うん、まずは開封、そして取説でも読むか・・・。

 

それではまた


        

こんにちは!暑さが少し和らいできましたね。

大阪デザイナーの阿部です。

 

何かほら・・・困ったこととか、よくあるじゃないですか

自分の思うように進まね!

とか いろいろうまくいかね!とか

 

そんな時って頬筋が仕事を辞めてどうしてもしょんぼり顔になってしまわないかい?

上がらない上がらない残念な頬筋・・。

そんなアンニュイな頬筋を上げていこうぜ!・・・というお話しです。

 

 

どんなことでも、状況でも、感情っていうのは伝染すると、良く思います。

鬼ごっこでも 誰一人が「走るなんてたりーよ、暑いしさー。 」

などと言い出したら周りの人はショボーンとしてしまいます。

しょぼんとしないまでも せっかくの楽しい時間が台無しだわっ!

って残念に思うと思います。

 

これです。

 

 

誰かが「楽しくない」って言うと、楽しいって思ってる自分が否定された感じになってしまって

せっかくの楽しいって気持ちが吹き飛んじゃうんですね。

 

これは逆も然りで

誰かが、

「鬼ごっこ超楽しい!最高!この遊び考えた人天才!ヒャッハー!!! 」

って人がいると、その楽しげな様子を見て自然とウフフとしてしまいませんか?

 

これですよ。

 

 

悲しきかなこの伝染力は

ショボーン>ヒャッハー で、

ネガティブな方の伝染力の方が強いのですが

それでも誰もヒャッハーとしないより全然いい

もしかしたらそのヒャッハーを誰かが受け取ってヒャッハーしてくれるかもしれない。

 

そんなん言っても笑ってるだけじゃ解決しねぇ!ってなるかもしれないですが

でも、笑顔で前向きの時の方が選べる選択肢が多くない?

あれもだめ、これもだめじゃなくて

あれもいいかも、これもいいかもって思う方が良くない?

 

その伝染は自分の中でも起こることがあって、

今自分の頬筋下がってるなって気づいたら 嘘でもいいから頬筋を上げてみてください。

頬筋上げるだけで小さな悩みは吹き飛んでしまうことがあります。

いやほんとに。

 

ホントよ。

 

笑顔パワー半端ないっすよ。

 

 

頬筋とは話がそれますが自分を笑顔に出来るスイッチをみつけるのもいいですね

私なぞはどんなに嫌なことがあっても、とあるジャンルの本を読むだけで 神回復することを知っているので、

しょんぼりした日は即、巣(布団)に入りその本を読むことにしてます。

30分後にはほぼ回復している、素晴らしい・・・。とあるジャンルの本・・・・。

 

まぁそんな本の話はさておき

貴方が笑えば誰かが笑って、それが伝わっていったら幸せじゃね?

そのためにはまず頬筋上げて行こうぜ!・・・というお話しでした!


2014年8月22日

草食系男子

        

夏バテなんて吹っ飛ばせ

 

健康ーーーー!!!

 

お久しぶりです、モリモトです

 

本日の昼休みも、
のほほんと過ごしております

 

20140822_1

 

 

そんな大阪オフィスで、

ただただ野菜を食すだけの男たちが増えつつあります。

 

20140822_2

 

 

日々増えていく調味料とドレッシング達

 

「今日はどのドレッシングにしようかしら♪」という迷いは小さな楽しみなのですが、

保管に場所を取るので味にわがまま言わず一つずつ消費していきたいところ…

画像右側のポン酢は私のオススメです、
雑味なしでサッパリとした後味が癖になる

 

またもマラソン大会が控えている私たちヘキサ陸部

ウェイトを落として足への負担軽減に繋げたいと
急遽始まった野菜食生活なのですが、

 

30代男性Aさん:「代謝が良くなりました!」
30代男性Bさん:「寝付きが以前と比べて良いです!」
20代男性Cさん:「体のむくみが無くなりました!」
等々、

痩せる以外に色んな効果が続出中

 

この調子で更に健康意識を高めて、
業務で良いパフォーマンスが出れば一石二鳥!頑張っていきますよー!

 

のほほんと過ごす昼休みをご紹介しました

 

では


2014年8月21日

お熱いのがお好き

        

お盆を過ぎ、少しは涼しく…
涼しく…涼しく…なって無い!!

結構暑い!

 

どうも、
残暑が終るのを今か今かと待ち続けている、インドア派のゴローです。

まだまだ暑い暑い季節、せっかくなので今日は熱い恋の話でもしましょうか。

 

 

 

今日の話題はこちら
『Love Letter(ラブレター)』

ラブレター

ええ、アナログゲームの事ですけど何か…?

 

 

このゲームの世界観は愛しの姫にラブレターを手渡すため、
城に仕えるさまざまな人たちにラブレターを運んでもらい、
最終的に姫や姫に近い身分の人へ届けるというものです。

 

 

 

 

大まかなゲームの流れはこんな感じです。

準備:
・山札から全員カードを一枚引く。
・ランダムで裏向きのまま一枚カードを取り除く。

 

自分の番が回ってきたら、山札からカードを一枚引く
持っているカードと、引いたカードのどちらかを捨てる
捨てたカードの特殊効果を使う

 

 

これをプレイヤーごとに順番に行っていきます。

 

 

最終的に山札が無くなった時に、

一番強い(数字の大きい)カードを持っていた人が勝ちです。
ただの数値比べだけでなく、山札が無くなる前にカードの効果で脱落することもあり
自分以外が全員脱落することで勝負が決まることも多いです。

 

 

 

このゲームに使うカードは全部で8種類16枚です。
16枚しかカードを使わず、一枚カードを引いて、一枚カードの特殊効果を使う
非常にシンプルでわかり易いルールですが、
カード一枚一枚の特殊効果により、高い推理要素を持ったゲームになっています。

 

 

ちなみにカードはこんな感じです(左に書いてある数字が大きいほど強いカードです)

 

 

1.  兵士: ほかの人ひとりの手札を宣言して当たっていたら脱落させる ×5枚
2.  道化: 他の人ひとりの手札を見る ×2枚
3.  騎士: 他の人ひとりの手札と自分の手札を比べ、弱い方を脱落させる ×2枚
4.  僧侶: 一周の間、カードの効果を受けない ×2枚
5.  魔術師: 自分か他の人ひとりの手札を捨てて、引き直させる  ×2枚
6.  将軍: 他の一人と手札を交換する ×1枚
7.  大臣: 手札の合計が12以上になってしまうと自分が脱落する  ×1枚
8.  姫: このカードを捨てた時自分が脱落する  ×1枚

 

 

全体として
数字が大きく強いカードほど、リスクが高い効果をもっており
数字が小さいカードほどリスクが低く、
相手のカードを知る手がかりになる効果を持っています。
しっかりしたリスクリターンですね。

 

 

一番強い姫を引いて余裕綽々に構えていたら

魔術師の効果で、無理やり姫カードを捨てさせられました。

脱落。

 

他の二人が騎士の効果で手札を比べた。
負けたのは結構強いハズな将軍…
じゃあ、相手は大臣か姫のどちらかだな。

 

等々、色々な効果で脱落させたり、推理が出来たりします。

 

このゲームで感じることは….
気付いたら何度もプレイしてる!

何度プレイしても、もう一回やってもいいかなって思うことです。

 

 

理由を考えると一回のプレイが短いことに思い当ります。
(他にも理由はあるんでしょうがそれは置いておいて)

 

 

まぁー短いですよ!

本当に短い!
準備も含めて3~5分で一回終わります。

 

 

16枚しかカードが無いので、最初に全員引く1枚のカードを差っ引くと
10回前後カードが引かれると終る訳です。
そりゃすぐ終わる訳です。
準備も、カード16枚をシャッフルして、カードを一枚づつ引くだけです。
そりゃすぐ始められる訳です。

 

 

そのおかげでもう一回プレイしよう、もう一回、もう一回と
あまり疲れず回数を重ねられます。
勝った人には、次も勝ちたいと感じさせ
負けた人には、次こそ勝つと思わせ
繰り返し、繰り返し、またプレイしたいと思うようになっています。

 

 

なるほどこれを考えれば、どんどん遊んでもらえるゲームを作る為には
達成感を得られるまでの、スパンを短くする
そして、遊ぶまでの準備時間を短くすればいいのかと分かります。

 

 

 

デジタルゲームに置き換えるとこんな感じでしょうか。

 

■ボス倒すまで延々ザコを倒して進むだけで、達成感が薄い
 →途中で新しいアイテム(フックショット等)を手に入れたりして定期的に達成感を感じてもらう。
■ゲームを開始するまでに、いくつものメニューを通らないといけない、面倒くさい
 →メニューの流れを整理して、ゲーム開始にすぐ辿りつけるようにする。
■ゲームオーバーになるたびにタイトルに戻る、だるい
 →コンティニューの選択を設けて、その場から復帰出来るようにする。

 

 

む、なるほど。
思い返せばこういう要素が出来て無くて
中だるみしたり、熱が冷めたりした事があったような気がしないでもない

こういう所に気を配れると、何度も何度もプレイしてもらえて
プレイヤーを冷めさせないゲームが作れるのでは無いでしょうか

 

 

 

就職作品なんかも、こういうところに気を配れば

何度もプレイしてもらえるかもしれませんよ
せっかく面白いゲーム作っても、

タイトルからゲーム始まるまでにロードが長すぎたり、
メニューが複雑すぎて、十分に遊んでもらえないと悲しいですからね

 

 

 

そんな感じで今日はおしまいです。


        

こんにちは。

お盆も過ぎましたが暑い日が続き、体力不足を感じる よっしーです。

 

今回はネットワークの障害調査で重宝する「nslookup」について紹介します。

※主にWindows上での利用を想定しています。

 

このコマンドは有名なコマンドで、DNSサーバに対して名前解決の問合せを行うコマンドになります。

良く使う場面として、うまく通信ができない時の原因究明に用いられます。

 

通信ができない原因の一つとして、DNSの名前解決ができない場合が考えられます。

 

その際に

 

nslookup xxxx.xxxx.jp

 

といったコマンドでDNS名からIPアドレスが正常に取得できているかの確認をします。

もし、うまくIPアドレスが取得できていなければ、

通信ができない原因はDNSの名前解決が原因である

と判断したりします。

 

そしてたまにあるのが、指定しているDNSサーバだけで障害が発生していて

名前解決ができないという状態です。

 

そういった場合は、「nslookup」コマンドで別のDNSサーバを指定して、
名前解決を試すことができます。

 

手順としては、

 

コマンドプロンプト上で「nslookup」を実行し、nslookupのコマンドモードにします。

 

  ※この際に「既定のサーバー」が表示されますが、これがデフォルトで指定しているDNSサーバです。

 

次に「server yyyy.yyyy.jp」と名前解決を試してみたいDNSサーバを指定します。

 

そして実際に名前解決ができるか確認したいDNS名を「zzzz.zzzz.jp」と入力して、
  コマンドを実行します。

 

正常にDNSの名前解決が出来ればIPアドレス等が表示されます。
  もし名前解決が出来なければエラーが表示されます。

 

このようにコマンドを用いることでIPアドレス等の設定を変更せずにDNSサーバを

指定してDNSの名前解決のチェックが出来ます。

 

ちょっとしたトラブルシューティング時に便利なので、利用してみてはいかがでしょうか。

 

それでは


        

屋外にいると、1分と経たずに汗が吹き出す
そんな猛暑ではございますが、いかがお過ごしですか

 

6/30に第一子が産まれ、絶賛育児奮闘中のタカシマヤこと高島です
まあ、実際はオムツを替えるのと、お風呂に入れてあげるくらいしか、
できてないんですけどねゴメンナサイ

 

さて、前回は「関心を起こさせる序論」というプレゼンのテクニックをご紹介しましたが、
今回は「ふさわしい休止」というテクニックをご紹介したいと思います。

———————————————————————–

 

 

「ふさわしい休止」とは何でしょうか。

 

 

会話や講話の適度な箇所で、きちんと停止することです。
「休止」とは短い休止や、瞬間的に声を弱めることを指します。
そして「ふさわしい」とは、その休止に価値ある目的があり、
それに応じた用い方である事を示唆しています。

 

 

 

なぜ「ふさわしい休止」が重要なのでしょうか。

 


休止の仕方は、聴衆に理解しやすい話をする重要な要素であり、
休止によって、話の中で重要な点を際立たせることができるからです。 

 

 

休止には主に3つの目的に合わせた用法があります。

 

  1. 句切りのための休止
  2. 考えの変化を示すための休止
  3. 強調のための休止

 

この3つの「休止」におけるテクニックをご紹介したいと思います。

 

 

 

1. 句切りのための休止とは、
文章で言う「、」や「。」などの句切り符号の位置で休止を行う事です。
この休止を怠ると、断続的でまくし立てる様な話し方に陥ります。
正しい位置で休止が置かれると、流暢で聴衆の聴きやすい話し方になります。

 

 

当然、会話には句切り符号などはありませんから、
話し手はこの点を意識し、徐々に自然な流れで休止が行える様に、
慣れさせていく必要があります。

 

 

その具体的な方法としては、文章を朗読する、あるいは頭の中で黙読し、
その際に句切り符号を意識して読む事で、身につけることができます。

 

 

2. 考えの変化を示すための休止とは、
1つの要点から別の要点へ移行する際、1度休止を置くことです。
それにより、今の要点を黙考し、次の要点へと方向が変わる事を、
意識する時間が聴衆には与えられます。

 

特に重要な案件や、難解な技術資料やデータ資料を使用した話の場合、
聴衆が理解し、次の話題に移る準備が完了するまでには時間を用します。
扱われる内容と、聴衆の反応から、適度な長さの休止を置く事が重要です。

 

 

 

3. 強調のための休止とは、
話の中で最も強調したい内容を話す際に置く休止です。
この休止は、ある程度の迫力をこめた、声量のある陳述や質問の前後に置き、
話の流れを劇的に変化させ、ドラマチックな展開にすることができます。

 

かつてキリストもナザレの会堂で聖句を読み上げた際に、
その聖句の適用をすぐに説明するのではなく、
巻き物を閉じ、椅子にゆっくり腰を下ろし、会堂が静まり、
聴衆の視線がじっと注がれるまでの充分な休止を取った後、
重要な「この聖句の成就」について語りました。

 

 

強調のための休止が効果的に用いられた時、
聴衆をグッと惹きつけ、話の中で最も伝えたかった内容を、
深く心に刻み込む事が可能となります。

 

 

————————————————————-

 

さて、「ふさわしい休止」と、その3つの用法により、

 

 

  • 流暢で聴きやすく、
  • 聴衆に理解を促し、
  • 強調すべき内容をしっかり伝える、

 

 

という会話やプレゼンに有用な効果が得られることが、
ご理解いただけましたでしょうか。

 

会話における重要な局面で、あえて何もしない「休止」が、
実はすごい要素を持っているなんて、素敵だと思いませんか?

 

ちなみにこのテクニックは講演やプレゼンだけでなく、
意中の異性へ「告白」「プロポーズ」をする際にも、
大きな効果を発揮します本当です実際に私の友人も…(ry

 

 

「大事な話があるんだ。」の後に長めの休止を入れてみると、
相手はドキドキするかもしれませんよね。夏は恋の季節ですよ

 

といったところで今回のブログはここまで、
また次回のお楽しみ、ありがとうございました。


        

お久しぶりです、サッカーワールドカップも終わり
平常モードに戻ったコウスケです。

今回から、関数型プログラミングの紹介をしたいと思います。
想定する読者はプログラミングに関して最低限の知識がある方になります。

 

20131203_separater

 

なぜ関数型プログラミング?
 「悟りを開けるから」です(プログラマとして)!
 ・・というのは冗談めかしてよく言われるのですが・・
 実際どういうことなのか、悟りを開いてない私にはわかりません。
 ただ・・関数型プログラミングはめちゃくちゃ便利!
 新しい考え方が学べる!といったメリットがあります。
 
そもそも関数型プログラミングってなに?
 「関数」が主人公のプログラミングです!
 オブジェクト指向言語における「オブジェクト」でも
 手続き型言語における「手続き」でもありません。
 今回はこの部分を紹介したいと思います。
 
なぜpythonなの?
 私が使い慣れていること・・は実際の所あるのですが、
 関数型プログラミングのために作られた関数型言語でなくても、
 普段のプログラミングでもそのエッセンスを取り込むことができる
 ということを紹介したいからです。

 

 関数型プログラミングにはhakelllispなど関数型言語というものがあります。
 純粋な関数型プログラミングをするならばそういったものを使うのが最適なのですが、
 なかなか敷居が高いです。
 pythonは、普通に使えばC言語ライクで初心者にも使いやすい言語なのですが、
 関数型プログラミングのエッセンスも取り入れられている所もあります。

 

 pythonを知らない方でも、
 擬似コードっぽく読んでいけばなんとなくやっていることは
 わかると思います^^。
 興味を持ったら、公式チュートリアルなどを読んでみてください。
 

20131203_separater

 

さて、本題ですが関数型言語であるためには何が必要なのか?
・・それは、関数がファーストクラスオブジェクトであることです!

ファーストクラスオブジェクトとは、すごく簡単にいえば

 

変数に代入できる
引数や返り値として使用することのできる

 

オブジェクトのことです。
例えば、C言語などでの基本型であるintやfloat、
Javaなどオブジェクト指向言語におけるクラスは
ファーストクラスオブジェクトです。
(※ここでのオブジェクトはプログラミングにおける部品・要素的な意味で、
オブジェクト指向のオブジェクトとは異なります)。

つまり、関数型言語では関数そのものを変数に代入でき、
引数や返り値として扱えます!

このことが、プログラミングにおいてとっても便利なのです!
それもただ便利なのでなく、新たな次元での考え方をもたらしてくれます!

 

以下、関数を変数として使う例を示します。

例えば、ゲームプログラミングでの状態遷移などによく使う、
関数テーブルによる実行制御をシンプルに書けます。

 

# -*- coding: sjis -*-

#
# 標準入力からコマンド入力を受け付け、
# それに応じて行動(関数を実行)します
#

#------------------------------
# 実行関数
#------------------------------
def walk():
    print "walkを実行"

def stop():
    print "stopを実行"

def attack():
    print "attackを実行"

def sleep():
    print "sleepを実行"

#------------------------------
# メイン関数
#------------------------------
def main():
    # 関数テーブル
    command_actions = {"walk":walk, 
                "stop":stop, 
                "attack":attack, 
                "sleep":sleep}

    while(True):
        print "-"*10
        print "コマンドを入力(walk/stop/attack/sleep):",
        command = raw_input() # 標準入力からコマンドを取得
        
        if command_actions.has_key(command):
            # コマンドに応じて行動
            action = command_actions[command] # 関数を取得
            action()
        else:
            print "!! 無効なコマンドです"
        

if __name__ == '__main__':
    main()
実行例
---------------------------------------------------
d:\work\python>python test.py
----------
コマンドを入力(walk/stop/attack/sleep): walk
walkを実行
----------
コマンドを入力(walk/stop/attack/sleep): stop
stopを実行
----------
コマンドを入力(walk/stop/attack/sleep): hoge
!! 無効なコマンドです
----------
コマンドを入力(walk/stop/attack/sleep): sleep
sleepを実行
----------
コマンドを入力(walk/stop/attack/sleep):

他の例といえばGUIのボタンなどの挙動を記述するときに使う
コールバック関数でしょうか。
直接関数を代入できるのでスッキリします。

# -*- coding: sjis -*-

#
# GUI表示の代わりとして標準入力を受け付け、
# それに応じたコールバック関数を呼び出します。
#

# ダイアログを表すクラス
class Dialog:
    # コンストラクタ
    def __init__(self):
        self.okPressed = None
        self.cancelPressed = None

    def show(self):
        while True:
            # GUI表示の代わりとして標準入力を受け付けます
            input = raw_input("ボタンを押してください(ok/cancel)") 
            # 入力に応じて登録された関数を呼ぶ
            if input == 'ok':
                if self.okPressed:
                    self.okPressed()
            elif input == 'cancel':
                if self.cancelPressed:
                    self.cancelPressed()
            else:
                print "無効な入力です"
    
#------------------------------
# コールバック登録関数
#------------------------------
def myOkPressed():
    print "OKが押されました"

def myCancelPressed():
    print "キャンセルが押されました"

#------------------------------
# メイン関数
#------------------------------
def main():
    # ダイアログを作成
    d = Dialog()
    # ボタン押下に対してコールバック関数を登録
    d.okPressed = myOkPressed
    d.cancelPressed = myCancelPressed
    # 表示
    d.show()

if __name__ == '__main__':
    main()

今回のまとめ
・関数型プログラミングで悟りが開ける!
・関数型プログラミングは関数が主人公だ。
・関数型言語では、関数をファーストクラスオブジェクトとして使用できる。

次回は関数を引数や返り値として取れることの便利さを
説明したいと思います。

数回に分けてネタが続く限り続けていきたいと思います
のでお楽しみに!

 


ヘキサブログ ピックアップ



過去の日記はこちら

2014年8月
« 7月   9月 »
 123
45678910
11121314151617
18192021222324
25262728293031