0

大学では、ゲームを作成することになっています (言語は modula2 です。ご存知の可能性はほとんどありません)。各テトロミノは、中央のピースと 3 つの相対ピースによって定義されます。回転に関しては、相対ブロック (線形代数) を回転させるだけです。

私が自問しているのは、ピースがすでに「着陸」しているときにユーザーが行う回転を処理する方法です。これは、ユーザーがパイブを目的の位置にすばやく移動する時間が少し残っているためですが、ウェブ全体のテトリス バージョンでは、他のピースを「回転」させますが、私の回転ではそれが得られないようです。

どの部分を回転させる必要がありますか? ガイドラインはありますか?ありがとう

4

4 に答える 4

9

Tetris Wikiでは、これらのいわゆるウォール キックが行われる方法の 1 つを指定しています。

ウォール キックは、プレイヤーが駒を回転させたときに、回転後にそのテトロミノが通常占めるマス目にスペースが存在しないときに発生します。これを補うために、ゲームはテトロミノが見えるように一定数の代替スペースを設定します。[...] 最も単純なウォール キック アルゴリズム [...] は、テトロミノを右に 1 スペース、次に左に 1 スペース動かしてみて、どちらもできない場合は失敗します

テトリスガイドラインで義務付けられているスーパーローテーションシステムで指定されたものなど、他の方法もあります。そのシステムは、一連のテーブルを使用して、可能性のあるウォール キックを判断します。

于 2010-04-20T17:44:30.573 に答える
3

あなたの質問を正しく理解していれば、正解はありません。他の部分を「移動」できるかどうかは、特定の割り当てのガイドラインによって異なります。それを許可するコードと許可しないコードを書くことは可能です。

于 2010-04-20T17:34:27.007 に答える
0

そのフィールドを考えると、テトリスのピースが落ちるのはマトリックスです

1)ユーザーが回転するのに少し時間を与え、アルゴリズムを使用する場合

  • 一番下のブロックが、同じ列に既にピースがある行に隣接する行にあるときに開始するタイマーを設定します。
  • ユーザーがタイマーが終了する前にそのピースを動かそうとした場合は、移動可能なピースのブロックの 1 つの場所である行と列にブロックがあるかどうかを確認します。すでに埋まっている場合は移動できません

2)ユーザーが回転するのに少し時間を与え、他のアルゴリズムを使用する場合

  • ブロックを 3x3 の立方体と見なし、ピースに存在しない場合でも (たとえば、L フォーマットのピースに) 2x2 ブロックを介して回転させることができます。ですから、(1)の2番目のボタンで私が言ったことを実行するだけでいいのです! それはより簡単なアルゴリズムです。
于 2010-04-20T17:46:41.833 に答える
0

まず、質問の用語を明確にする必要があるかもしれません。最初の段落では、「ピース」は他の人が「タイル」と呼ぶものであるように見えます。つまり、各テトロミノは 4 つの「ピース」または「タイル」で構成されます。しかし、段落の最後では、それを「ブロック」と呼びます。そして、2 番目の段落では、「ピース」は「テトロミノ」と同義のようです。「ピースが着地した」、「ピースを動かした」。では、あなたの質問では、どういう意味ですか? おそらく「テトロミノはどの牌を回せばいいの?」

それが本当にあなたの質問である場合、答えは実装定義です。ゲームのさまざまなバージョンを試してみると、「I」のピースが 2 回回転すると左右または上下に揺れることがわかる場合があります (回転タイルはテトロミノに固定されています)。他のものはそうではありません (回転は 2 つの中央のタイル間でトグルし、時計回りの回転が反時計回りの回転と同じ効果を持つようにします)。「S」と「Z」のピースも同様にぐらつきます。ただし、ぐらつかない場合は、状況が対称である必要がある場合でも、ピースが左の壁に接している場合は回転できるが、右にある場合は回転できないことがわかる場合があります。そして四角い駒は固定回転牌で置いておくと、まったく回転しないように (見えるように) したい場合に、角を曲がって回転します。少なくともそれを処理しない実装は見たことがありません!

于 2010-04-21T01:40:16.787 に答える