アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#で物理シミュレーションをしようと考えています。粒子が飛び交う様子をシミュレートし、StartやStopが可能で、粒子のパラメータなどを逐一変更できるようなものにする予定です。

で、シミュレートする部分は大体できたのですが、どのようにして画面に描画するかで悩んでいます。
C#でテトリスを作ったことがあるのですが、Threadで描画(this.Invalidate()の呼び出し)と計算(テトリミノの落下)を無限ループさせるという、かなり強引な手段で作り上げてしまいました。ループの時間間隔の調整はThread.Sleep()で、無限ループの停止、開始は外部からそのThreadをSuspend、Resumeさせることで行っていました。

こんな設計ではどこかでガタがくると思います。C#ではこういう場合、どのようにプログラムするのでしょうか?
できることなら、ひな形となるようなコードを拝見したいのですが…

一例として、添付画像のようなプログラムをどのように実装するか、教えていただけますでしょうか。

「物理シミュレーションの可視化(C#)」の質問画像

A 回答 (1件)

こんなんでどうでしょう?



http://www.codeproject.com/Articles/19687/Fun-Wi …

これはサンプルとして重力やらフライバイやらをシミュレートした結果を描画させています
一通りのことは出来ていますので、ちょっと弄って改造するくらいなら簡単かと思います。

※ただし、ソースはCodeProjectにメンバー登録してからダウンロードする必要があります
※環境によってはビルドできない可能性あり(バージョン違い等が原因)
※改造して配布や公開する場合はライセンスに注意してください。
    • good
    • 0
この回答へのお礼

ソースを見てみたら、Forms.Timerを使っていました。また、ググッてみたら、自分でいろいろ設定しなくてはなりませんが、Timers.Timerの方が時間の精度が高いそうです。
これでなんとか進めそうです!ありがとうございました。

お礼日時:2013/10/22 23:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!