⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~h

📁 自编小俄罗斯方块
💻 ~H
字号:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>
#include <Menus.hpp>

// 宏变量:白色、黑色和蓝色
#define WHITE RGB(255,255,255)
#define BLACK RGB(0,0,0)
#define BLUE RGB(0,0,255)

//左移,右移、上升和下降宏定义
#define LEFT 0
#define RIGHT 1
#define UP 2
#define DOWN 3

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TImage *Image2;
        TTimer *Timer1;
        TMainMenu *MainMenu1;
        TMenuItem *N1;
        TMenuItem *N2;
        TMenuItem *N3;
        TMenuItem *N4;
        TMenuItem *N5;
        TMenuItem *N6;
        TMenuItem *N7;
        TMenuItem *N8;
        TMenuItem *N9;
        TMenuItem *N10;
        TMenuItem *N11;
        TMenuItem *N12;
        TMenuItem *N13;
        TMenuItem *N12101;
        TMenuItem *N18151;
        TMenuItem *N24201;
        TMenuItem *N30251;
        TMenuItem *N14;
        TMenuItem *N15;
        TMenuItem *N16;
        TMenuItem *N17;
        TMenuItem *N18;
        TMenuItem *N19;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall FormPaint(TObject *Sender);
        void __fastcall Timer1Timer(TObject *Sender);
        void __fastcall FormKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift);
        void __fastcall N2Click(TObject *Sender);
        void __fastcall N3Click(TObject *Sender);
        void __fastcall N4Click(TObject *Sender);
        void __fastcall N12Click(TObject *Sender);
        void __fastcall N12101Click(TObject *Sender);
        void __fastcall N18151Click(TObject *Sender);
        void __fastcall N24201Click(TObject *Sender);
        void __fastcall N30251Click(TObject *Sender);
        void __fastcall N14Click(TObject *Sender);
        void __fastcall N15Click(TObject *Sender);
        void __fastcall N16Click(TObject *Sender);
        void __fastcall N17Click(TObject *Sender);
        void __fastcall N18Click(TObject *Sender);
        void __fastcall N19Click(TObject *Sender);
        void __fastcall N11Click(TObject *Sender);
        void __fastcall N10Click(TObject *Sender);
private:	// User declarations
protected:
	//列与行的数量
	int m_iCol;
	int m_iRow;

	//小方块的大小,它会随着行与列的不同而不同,具体为:
	// 12行10列,30个象素的正方形
	// 18行15列,20个象素的正方形
	// 24行20列,15个象素的正方形
	// 30行25列,12个象素的正方形
	int m_iLarge;

	//当前的级别,换算成速度的算法为:1500 - m_iLevel*200
	int m_iLevel;

	//游戏区域左上角的坐标
	int m_iStartX;
	int m_iStartY;

	void RectChange();
	BOOL RightIsLimit();
	BOOL LeftIsLimit();
	//各种不同形状方块的接触面,接触面是指这样的小方块:它下面如果有另外的方块则表示
	//此方块已到底。
	//此数组记录了这些接触面在当前方块动态位置数组中的元素号
	int InterFace[74][4];

	//当前的方块形状
	int m_currentRect;

	//判断当前方块是否到底
	void ActiveIsBottom();

	//当前方块下降
	void RectDown();

	//当前方块加速:UP,左移:LEFT,右移:RIGHT
	void RectArrow(int m_Type);

	//将一方块初始样式数据赋给当前方块动态位置数组以及下一次将要出来的方块的位置数组
	void RectStatusToActiveStatus(int m_which);
	void RectStatusToNextStatus(int m_which);

	void ActiveStatusToGameStatus();
	int Random(int MaxNumber);
	//标识方块已到底的变量,到底为TRUE
	BOOL m_isBottom;

	//用于标志方块状态的数组,大小由横格与竖格数据决定,为1表示该方块显示,或者不显示
	//画形状只需要修改数组中相应元素的状态值即可
	//由时钟控制,定时在OnPaint函数中根据数组画方块
	int GameStatus[100][100];

	//用于保存当前方块的动态位置,4个小方块分别在大数组中的位置
	//存放位置为先左后右,每一列又遵循先上后下的原则
	int ActiveStatus[4][2];

	//存入下一次要出来的方块的模样的数组
	int NextStatus[4][2];

// Generated message map functions
protected:
	BOOL m_bGamePaush;
	void StopMid();
	void PlayMid();
	void CurrentAreaAndLevel();
	//用于记录当前区域大小与当前级别的字符串,用于显示在屏幕上提示用户当前状态
	AnsiString m_strArea;
	AnsiString m_strLevel;

	//当前的样式与下一个将会出现的样式
	int m_icurrentStatus;
	int m_inextStatus;

	//OnDraw中需要用到的设备名称
	TPen *whitePen;
	TPen *blackPen;
        TPen *redPen;
	TBrush *blueBrush,*grayBrush,*blackBrush;

	//是否画网格线
	BOOL m_bDrawGrid;

	//是否插放背景音乐
	BOOL m_bMusic;

	//游戏总成绩
	int m_iPerformance;

	//游戏是否已结束,为FALSE表示开始,否则为结束
	BOOL m_bGameEnd;

	//刷新指定的区域,它的大小为:四个小方块所在的正方形的大小
	void InvalidateCurrent();
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -