1

私は Java でテトリス ゲームを作成しています。現在のピースが既に着地している別のピースに当たったときに、現在のピースを停止させるのに少し問題があります。テトロミノの形状ごとに個別のクラスがあります。currentPiece が落下している場合、Y 座標が最も低く、X 値が current と同じ形状が currentPiece の停止点として設定されます。問題は、ピースが currentPiece の中心に隣接するブロックを通過し、すべての可能な形状と回転をコーディングするのが面倒なことです。

これを行うより良い方法はありますか?基本的に、私の質問は、テトリスのピースの境界を処理する方法ですか?

私の Java ファイルへのリンク: http://goo.gl/Ms8Mj (乱雑さを許してください)

各ブロックは値の表で表されます。L 字型の場合は次のようになります。

{0,0},{1,0},{0,1},{0,2}

「中間」のブロックが原点として扱われます。場所が占有されているかどうかに 2D ブール配列を作成することを検討しています。

4

3 に答える 3

2

行動ロジックをビュー ロジックから分離します。

各 Tetris ピースを動作ロジックで 4 つのブロックとして扱うと、衝突検出を行うのはかなり簡単になります。ブロックが X と X+1 の間のスペースを占有することはないため、検出するパーシャルはありません。それは常にどちらかです。ただし、X+1 が占有されておらず、ピースが落下し続けることを検出したら、ピースが1 つのスペースから次のスペースに移動するように見えるアニメーションを追加するだけで、同時にアニメーションが完了します。ロジックは、駒が 1 減ったことを示します。

于 2013-05-23T01:23:49.933 に答える
0

そうです、図形がどこで止まるべきかを知る最善の方法は、空のボックスと完全なボックスの X 線 (2 次元ブール配列) を作成することです。
しかし同時に、フィギュアのどのブロックをチェックする必要があるかを知る必要があります。Figure を下に移動する場合は、Figure の LOWER ブロックだけをチェックする必要があります。これを行うには、個別のカテゴリ (一意の水平方向の値を持つブロック) を配置し、そこから垂直方向の値が最も低いブロックを決定します。視覚的な表現については、これを確認してください。

于 2014-10-21T07:57:05.930 に答える