//テトリス //テトリミノデータ const bool Base_Piece[8][4][4] = { { {0,0,0,0},//0 リセット {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, },{ {0,1,0,0},//1 Iブロック {0,1,0,0}, {0,1,0,0}, {0,1,0,0}, },{ {0,0,0,0},//2 Oブロック {0,1,1,0}, {0,1,1,0}, {0,0,0,0}, },{ {0,0,0,0},//3 Sブロック {0,1,0,0}, {0,1,1,0}, {0,0,1,0}, },{ {0,0,0,0},//4 Zブロック {0,0,1,0}, {0,1,1,0}, {0,1,0,0}, },{ {0,0,0,0},//5 Jブロック {0,1,1,0}, {0,1,0,0}, {0,1,0,0}, },{ {0,0,0,0},//6 Lブロック {0,1,1,0}, {0,0,1,0}, {0,0,1,0}, },{ {0,0,0,0},//7 Tブロック {0,1,0,0}, {0,1,1,0}, {0,1,0,0}, } }; //ゲームステータス enum { TETRIS_PLAY, //初回生成時 TETRIS_END_ANM, //終了アニメーション TETRIS_END, //ポーズ }; //------------------------------------------------------------------------------------------ /*! * \class SPiece * \brief テトリミノ * \author 中田幸一 * \date 2011/03/24 制作開始 by中田幸一 */ //------------------------------------------------------------------------------------------ class SPiece { public: bool Shape[4][4]; //ビースの形状 int PosX,PosY; //右上の位置情報 SPiece(void); // コンストラクタ ~SPiece(void){} // デストラクタ // void Initialize(); //ピース初期化 void Setting(unsigned int InNum); //ピース初期設定 void SetPiece(unsigned int InNum); //ピース }; //------------------------------------------------------------------------------------------ /*! * \class CTetris * \brief テトリス * \author 中田幸一 * \date 2011/03/24 制作開始 by中田幸一 */ //------------------------------------------------------------------------------------------ class CTetris { bool Screen_Draw[20][10]; // 現在の状態描画用(各オブジェクト毎に違う) bool Screen_Proces[20][10]; // 現在の状態(各オブジェクト毎に違う) SPiece Piece; // 可動ピース int Status; unsigned int Flame_Cnt; //フレームカウント unsigned int WaitBloc[2]; //待機Bloc unsigned int Score; //スコア unsigned int Speed; public: // 基本 CTetris(void); // コンストラクタ ~CTetris(void){} // デストラクタ // メイン処理 bool execute(); // 全ての機能をここで呼ぶ //三種の神器 void Draw(void); // 描画 void Input(void); // 入力 void Proces(void); // 処理 // 以下細々 //当たり判定 bool HitJudgmentNormal(int InX, int InY, bool InShape[][4]); //当たり判定 void HitJudgmentRight(void); //当たり判定右 void HitJudgmentLeft(void); //当たり判定左 void HitJudgmentUp(void); //当たり判定上 void HitJudgmentDown(void); //当たり判定下 void HitJudgmentRotation(void); //当たり判定回転 //垂直落下 void BlocDrop(void); //決定 void SetTetrisBloc(void); // //ライン消去 void DeleteLine(int InPosY); void DeleteLineCheck(void); //ピース90°回転 void RotationCalculation(bool InShape[][4]); //テトリミノの再出現 void AddPiece(void); //終了アニメーション void EndAnimation(void); };