タグ

ブックマーク / gemma.hatenadiary.org (4)

  • プログラミングに詳しい人に質問です。に釣られてみる - Gemmaの日記

    プログラミングに詳しい人に質問です。大学でプログラミング経験の学部一年生向けにプログラミングを教えることを想定しています。週1コマ×半年程度の限られた時間で、プログラミングとはどういうものかという質を教えたいのですが、どの言語を使うのが適切でしょうか。 http://q.hatena.ne.jp/1221708568 Q2にJavaScriptの選択肢がない というネタだと思ってたのに、一体みんな誰と戦っているんだ・・・! JavaScriptに一票。ブラウザですぐできる。構文が普通。オブジェクト指向もある。レキシカルクロージャもある。 SICPをJavaScriptで教えれば鉄板。 Schemeは、よい言語だけど、学ぶのは2番目か3番目がいいと思う。 プログラミング言語の紹介はバベル案内がおすすめ。 気でハッカーになりたいならハッカーになろうがおすすめ。

    プログラミングに詳しい人に質問です。に釣られてみる - Gemmaの日記
  • マリオのジャンプ実装法とVerlet積分(実践編) - Gemmaの日記

    前回の続き 実際にやってみました。(Canvas要素を使っているのでFirefoxでどうぞ) http://eva-lu-ator.net/~gemma/geocities/jsmario/jsmario.html マリオのようにジャンプで放物線運動をするゲームを作るとき、 たいていは、座標と速度を使って物理計算すると思います。これはEuler法といいます。 Verlet法では、座標と、前回の座標を使って計算します。つまり、速度を記憶しません。 Verlet法では、座標だけ扱えばすむので、壁にめりこんじゃいけないといった条件を簡単に書くことができます。 単に座標を、壁の直前にするだけでいいです。 ネタ元はCowboy Programming >> Blob Physicsです。 今回のコードの肝は以下の部分です。衝突判定がすっきり書けました。 //Verlet法 var y_temp =

  • マリオのジャンプ実装法とVerlet積分 - Gemmaの日記

    (追記)JavaScriptで実装してみました 昔、何かの雑誌*1でマリオのジャンプの実装法を見た覚えがあって、あの放物線運動は、 マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて、 マリオの前回の座標を保存しておいて座標を計算しているんだそうです。 y_temp = Mario.y; Mario.y += (Mario.y - Mario.y_prev) + F; Mario.y_prev = y_temp;Fはその瞬間の力で、ジャンプの瞬間はF=10にして、空中ではF=-1にします。 するとこんな放物線になります。 [0,10,19, 27, 34, 40, 45, 49, 52, 54, 55, 55, 54, 52, 49, 45, 40, 34, 27, 19, 10, 0] 加減算しか使わないので、非常に高速にできたと。 これがVerlet積分に似ているなと思った

    マリオのジャンプ実装法とVerlet積分 - Gemmaの日記
  • 関数型言語って何がすごいんですか - Gemmaの日記

    C使いの人に、 関数型言語って何がすごいんですか と聞かれて、 じゃあC言語で accumulator すなわち、数nをとり、「数iを取ってnをiだけ増加させ、その増加した値を返す関数」を返すような関数を書いてみろよ って言ったら、 値を返す関数を返すような関数・・・? オンドゥルルラギッタンディスカー で、会話が続かない。 さらに、C使いのターン。 関数に関数を渡せる? Cだって関数ポインタ渡せますよ。 チューリング完全なんだから、どんなプログラムだって書けますよ。 と仕掛けてきた。そこで、 じゃあ、3回呼ぶと動作が変わる関数を書いてみて。 f(); f(); f(); f(); と呼ぶと、 3 2 1 liftoff って出力されるやつ。ロケットみたいな。 できました。 #include <stdio.h> void f() { static int count = 3; if (co

    関数型言語って何がすごいんですか - Gemmaの日記
  • 1