質問

言いビル、テトリス"ぐらいのゲームです。として任意の適切なプログラマと、お見論理の一面には、ビジネスロジックのその他の側;あふれるMVCます。

のモデルを送信し、その update(), のredrawsそのものとして期待される。

その後は...したい場合は、追加えて、アニメーションのゼライン、あなたは何点ぐらいになると思を実装することにいたします。

の前提にしたい---を除きる"すべてが適切に内包された".

役に立ちましたか?

解決

個人的には、私は別の画面としてしばしばできるものがなかった場合は更新のブロックの位置にします。そしてループをどこかに、 "更新""描画" ます。更新のボールのロジックはせず、又は更新の位置および/またはブロックを除去している。描画するのはボールをグラフィックス部のブロックしながら進めていきます。

今がある場合ラインを消去するには、ロジックを知ってび出すことが可能なのでそれにして撤廃されなければなりません。そしてここにすべての4つのシングルブロックおよびこれらのブロックが単一のオブジェクトです。今このブロックの"死"-フラグを設定できるもの描画-パーツゼのブロックということか500msが爆発).このオブジェクト処理のブロック線上がる。なぜ500ms?、こちらをクリックして下さいをすべき使用 時の移動 このゲーム速度の異なるコンピュータ

ちなみあうゲームエンジンを提供するような更新をループを実行します。例えばXNAす。純ます。また、コードを独自のエンジンなので注意で簡単ではありませんで非常に時間がかかります。かったことが見つからないですエンジンのソースエンジン-)

他のヒント

ほとんどのゲームではなく、モデルの状態の変化を待っていると、ビューをリフレッシュするよりも、常にできるだけ速くゲームのビューを再描画ループを実行します。

は、モデル・ビュー・パターンを好きなら、それは彼らが数ミリ秒の上にそれらをフェードアウト、モデルから削除された後、ビューはオブジェクトのいくつかのタイプを引くために継続するために働くかもしれません。

別のアプローチは、差動の実行のようなものを持つクラスMVCを組み合わせることであろう - 「ビュー」を提示されているもののモデルですが、描画コードは、イベントのストリームを比較して「ビュー」前回のレンダリングからのストリームを作成します。一つのストリームに行があります、そして次がないのであれば、描画コードは、違いをアニメーション化することができます。これは、図面がビューから離れて抽象化することができます。とにかく、ネストされたMVC階層で終わるので、頻繁にMVCの「ビュー」は、むしろ直接表示を描画する何かであるより、ウィジェットの集まりです:アプリケーションは、MVC(データモデル、ビュー・オブジェクト、アプリケーションコントローラ)である。ここで、ビューオブジェクトは、MVCでそれぞれのウィジェットのコレクション(ウィジェット状態(例えばボタンを押す)、ツールキットのイベントのルックアンドフィール/ツールキットバインディング、マッピング - >ウィジェットの状態を)持っています。

かばんのことです。

自分の考えを伝えていったところ:

1)ビューがそれぞれのブロックの形状、矢田-矢田)が追加"移行"のデータ:

2)この線を除去することで符号化された状態で、対象は,次のとおりである。

3)の先番号は予約確認通知に描転移現:

  • 変更:状態が同じでこの特定のブロック
  • 変化から"下落"、"ロック":状態が"ロック"によって落としブロック)
  • 変化から"ロック"の"削除":状態が"削除"(線を確認の上、お申し込みください
  • 変化から"下落"、"削除":状態が"削除"が古い状態でした"転倒"

その興味深いのは、MVCとしてゲームを考えること。私は(いくつかの奇妙な理由で)撮影したことがありません観点、間違いなく多くの意味を作る魅力的な1のthats。状態があり、そしてイベントがあります:あなたはMVCであなたのテトリスゲームを実装しないと仮定すると、私はあなたのコントローラとビューの間の通信に関しては考慮に入れたい場合があります二つのものがあると思います。

あなたのコントローラは、ユーザのための対話の中心点は明らかです。彼らはキーボードコマンドを発行すると、お使いのコントローラがそれらを解釈し、適切な状態の調整を行います。しかし、時々ゲームは、今や除去されるべきブロックと行を埋めるよう...特定のイベントと一致する状態になります。

Scoregraphicはあなたの偉大な基盤を与えています。あなたのビューには、コンピュータ全体で一貫した速度を維持するために、一定周期で動作する必要があります。しかし、新しい状態をレンダリングするために、画面の更新に加えて、それはまた、に応じてアニメーションを実行できるイベントのキューを持っている必要があります。テトリスでラインを充填する場合には、お使いのコントローラは、適切なアニメーションの応答を実行するためにビューで使用できるビューイベントキューへのベースイベントタイプのいくつかの種類から派生強く型付けされたイベントオブジェクトを発行することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top