■はじめに
このプロジェクトは、学習用ソースという位置づけです。
基礎的なテトリスをJavaで作成したサンプルとして、学習用に使っていただければ幸いです。
お試し版として、総当り検索によるCOM対応を作成。
スコア対応や、機械学習などでCOMの精度向上を目指すことを考えているが、現時点で未対応。
※2012以降ソースを更新していません。
※2021年中には、リファクタリング + python移植を対応予定
■コンセプト
テトリスのロジック部分はどんな環境でも共通なはずのため、多少真面目にルールに乗っ取り作成するというプロジェクトです。
完璧なものではないですが、いざテトリス作ろうとしている人がルールどおりに実装する際の参考になればと思います。
テトリスDSの動作を参考に、ワールドルールにある程度準拠しながら作成し、以下が対応済み。
・ネクスト
→7つ先まで表示
→必ず7種類のテトリミノ全てがランダムな順番で均一に出現し、それを7個毎に繰り返す
・スーパーローテーション(Super Rotation)
→Tスピンなどを含む第5法則まで対応済み
・下ボタンではテトリミノが固定しない
・テトリミノの出現位置
以下は未対応
・ホールド (Hold)
・ハードドロップ (Hard Drop)
・レベルアップ
・スコア計算・表示
■プログラム構成について
入力部(Player)と表示部(Display)をインターフェスとして分離。
具象クラスで、プラットフォーム依存部分を個別に実装する想定。
JavaのSwingを用いたGUIアプリと、コンソール画面上に表示する方法をお試しで作成。
(コンソール出力版は、キー入力を動的取得する方法が不明だったため、SwingのKeyListenerを使って強引に作成)
■COM対応について
入力の抽出化することで、キー入力以外のPlayer作成を試みたものです。
ロジックについては、仮実装レベルです。
スコア対応や、機械学習などでCOMの精度向上するのも一つの目標(未対応)