問題タブ [tetris]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - テトリス ピース ローテーション アルゴリズム
テトリス ゲームのピースを表現して回転させるための最適なアルゴリズム (および説明) は何ですか? 私はいつもピースのローテーションと表現のスキームがわかりにくいと感じています。
ほとんどのテトリス ゲームは、ローテーションごとに単純な「ブロックの配列を作り直す」方法を使用しているようです。
http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=tetris
ただし、事前に構築されたエンコードされた数値とビット シフトを使用して各ピースを表すものもあります。
http://www.codeplex.com/wintris
数学を使用してこれを行う方法はありますか (セルベースのボードで機能するかどうかはわかりません)?
matrix - ピボットを中心に座標を回転させますか? (テトリス)
私は独自のテトリス クローンを設計しようとしていますが、形状の回転で少し問題が発生しました。10 x 20 のゲーム グリッドを表す 2 次元配列と、初期化時に形状が落下し始めるグリッド上の座標を含む個々の形状オブジェクトがあります。たとえば、ユーザーがシェイプを下に移動すると、各座標の y 値が減少し、この変更がグリッドに反映されます。
私が理解できないように見えるのは、この実装を使用して形状の回転を処理する効率的な方法です。指定されたピボットの周りのこれらの座標のマトリックスを使用する方法はありますか?
どんな提案でも大歓迎です、
ありがとうございました。
artificial-intelligence - 進化的アルゴリズムで重み付けする入力を決定する
私はかつて、テトリスを非常に上手にプレイするテトリスAIを作成しました。私が使用したアルゴリズム(このホワイトペーパーで説明)は、2段階のプロセスです。
最初のステップで、プログラマーは問題に「関心がある」入力を追跡することを決定します。テトリスでは、ギャップを最小限に抑えると将来のピースをより簡単に配置できるため、連続していくつのギャップがあるかを追跡することに関心があるかもしれません。もう1つは、平均的な列の高さです。これは、負けそうになった場合にリスクを冒すことは悪い考えである可能性があるためです。
2番目のステップは、各入力に関連付けられた重みを決定することです。これは私が遺伝的アルゴリズムを使用した部分です。結果に基づいて重みが時間の経過とともに調整される限り、任意の学習アルゴリズムがここで実行されます。アイデアは、入力がソリューションにどのように関連するかをコンピューターに決定させることです。
これらの入力とその重みを使用して、アクションを実行することの価値を判断できます。たとえば、直線の形を右の列に完全に配置すると、4つの異なる行のギャップがなくなる場合、このアクションは、その重みが高い場合に非常に高いスコアを取得する可能性があります。同様に、それを上に平らに置くと、実際にはギャップが生じ、アクションのスコアが低くなる可能性があります。
「興味深い」潜在的な入力を見つける最初のステップに学習アルゴリズムを適用する方法があるかどうか、私はいつも疑問に思っていました。コンピュータが最初にどの入力が有用であるかを学習し、次に学習を適用してそれらの入力を重み付けするアルゴリズムを作成することは可能であるように思われます。以前にこのようなことをしたことがありますか?すでにAIアプリケーションで使用されていますか?
c++ - Tetris: クラスのレイアウト
動作するテトリスのクローンを作成しましたが、レイアウトがかなり乱雑です。コーディングを改善するためにクラスを再構築する方法についてフィードバックをいただけないでしょうか。私は自分のコードをできるだけ汎用的にすることに重点を置いており、ブロックのみを使用するゲームのエンジンに近づけようとしています。
各ブロックは、ゲーム内で個別に作成されます。私のゲームには 2 つの BlockList (リンクされたリスト) があります: StaticBlocks と Tetroid です。StaticBlocks は明らかにすべての動かないブロックのリストであり、tetroid は現在のテトロイドの 4 つのブロックです。
主にワールドが作成されます。
最初に、新しいテトロイド (リストテトロイド内の 4 つのブロック) が (NewTetroid) によって作成されます。
衝突は、(If*****) 関数を使用して各 Tetroid とすべての StaticBlocks を比較することにより、(***Collide) 関数によって検出されます。
Tetroid が停止する (ボトム/ブロックにヒットする) と、StaticBlocks にコピー (CopyTetroid) され、Tetroid が空にされます。次に、(SearchY) で StaticBlocks を検索することにより、完全な行のテストが行われ、ブロックが破棄/ドロップされます。
新しいテトロイドが作成されます。
(TranslateTetroid) と (RotateTetroid) は、Tetroid リスト内の各ブロックに対して 1 つずつ操作を実行します (これは悪い習慣だと思います)。
(DrawBlockList) は、ブロックごとに Draw() 関数を実行して、リストを処理するだけです。
回転は、(NewTetroid) が呼び出されたときに、Tetroid の最初のブロックに対して回転軸を設定することによって制御されます。各ブロックの回転関数 (Rotate) は、左右の回転に +-1 の入力を使用して、軸を中心にブロックを回転させます。RotationModes と States は、2 つまたは 4 つの異なる方法で回転するブロック用で、現在の状態と、左または右に回転する必要があるかどうかを定義します。これらが「World」でどのように定義されているかに満足していませんが、ブロックごとに (Rotate) 関数をジェネリックに保ちながら、どこに配置すればよいかわかりません。
私のクラスは次のとおりです
これが少し不明確であるか長々とした場合は申し訳ありませんが、私は再構築の助けを探しているだけです.
c# - C# を使用して XNA で Tetris ブロックを作成するにはどうすればよいですか?
XNA を使用して C# で Tetris クローンを作成していますが、ブロックを実際に実装する方法がわかりません。
イメージ通りに形を作るのはうまくいかないと思うので(線が形成されるときにパーツが削除されるため)、このようなピースを構成するブロックがあります。
残念ながら、ブロックを実際に定義してピースを作成する方法も、ブロックを操作して回転させる方法もわかりません。
編集: Tetris Grid の作成方法を学習する際にも支援が必要です。
c# - 現在、XNAを使わずにTetrisを作ることはできますか? C# を使用していますか?
現在、特定の XNA コンポーネントを実行できない古いコンピューターを使用しています。私はこの作業の初心者なので、XNA などを実行できる新しいコンピューターを入手する前に、他のプログラミング作業を完了させたいと考えています。しかし、テトリスは XNA なしで簡単に作成できますか?
rotation - テトリスの回転
大学では、ゲームを作成することになっています (言語は modula2 です。ご存知の可能性はほとんどありません)。各テトロミノは、中央のピースと 3 つの相対ピースによって定義されます。回転に関しては、相対ブロック (線形代数) を回転させるだけです。
私が自問しているのは、ピースがすでに「着陸」しているときにユーザーが行う回転を処理する方法です。これは、ユーザーがパイブを目的の位置にすばやく移動する時間が少し残っているためですが、ウェブ全体のテトリス バージョンでは、他のピースを「回転」させますが、私の回転ではそれが得られないようです。
どの部分を回転させる必要がありますか? ガイドラインはありますか?ありがとう
python - python list インデックス範囲外エラー
私は、教授がプログラミングクラスの概念の最終プロジェクトに割り当てた python テトリスゲームに取り組んでいます。この時点で、彼が取り組もうとしていたものはほぼすべて揃っていますが、その一部に少し問題があります。ピースを左右に動かし始めるたびに、「インデックス範囲外エラー」が発生し続けます。これは、ピースにぶつかったときにのみ発生します。ここに私を悲しませている犯人がいます。
私は誰かにそれを修正してもらうつもりはありません。自分で修正する方法のヒントを探しているだけです。与えられた助けを前もって感謝します。
algorithm - すべてのテトロミノのリストを生成するにはどうすればよいですか?
すべてのテトロミノのリストを生成するにはどうすればよいですか? または、より一般的には、セルの数に制限されたポリオミノのサブセットを生成するにはどうすればよいですか?