📄 hwrectview.h
字号:
// HWRECTView.h : interface of the CHWRECTView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_HWRECTVIEW_H__65E362BE_4052_46BA_A8E9_6074ED904C9B__INCLUDED_)
#define AFX_HWRECTVIEW_H__65E362BE_4052_46BA_A8E9_6074ED904C9B__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// 宏变量:白色和黑色
#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
#include "game.h"
class CHWRECTView : public CView
{
protected: // create from serialization only
CHWRECTView();
DECLARE_DYNCREATE(CHWRECTView)
// Attributes
public:
CHWRECTDoc* GetDocument();
GAME text;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CHWRECTView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CHWRECTView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
//用于记录当前区域大小与当前级别的字符串,用于显示在屏幕上提示用户当前状态
CString m_strArea;
CString m_strLevel;
//当前的样式与下一个将会出现的样式
int m_icurrentStatus;
int m_inextStatus;
//OnDraw中需要用到的设备名称
CPen *whitePen;
CPen *blackPen;
CBrush *blueBrush,*grayBrush,*blackBrush;
//是否画网格线
BOOL m_bDrawGrid;
//是否插放背景音乐
BOOL m_bMusic;
//游戏总成绩
int m_iPerformance;
//游戏是否已结束,为FALSE表示开始,否则为结束
BOOL m_bGameEnd;
bool game_stop; //计录是否 --暂停状态
BOOL m_bPaush;
// Generated message map functions
protected:
void InvalidateCurrent();
BOOL m_bGamePaush;
void CurrentAreaAndLevel();
void PlayMid();
void StopMid();
int Random(int MaxNumber);
void ActiveStatusToGameStatus();
void RectStatusToNextStatus(int m_which);
void RectStatusToActiveStatus(int m_which);
void RectArrow(int m_Type);
void RectDown();
void ActiveIsBottom();
BOOL LeftIsLimit();
BOOL RightIsLimit();
void RectChange();
//{{AFX_MSG(CHWRECTView)
afx_msg void OnGameStart();
afx_msg void OnGamePaush();
afx_msg void OnGameEnd();
afx_msg void OnGameOption();
afx_msg void OnGameExit();
afx_msg void OnOptionArea1();
afx_msg void OnOptionArea2();
afx_msg void OnOptionArea3();
afx_msg void OnOptionArea4();
afx_msg void OnOptionLevel1();
afx_msg void OnOptionLevel2();
afx_msg void OnOptionLevel3();
afx_msg void OnOptionLevel4();
afx_msg void OnOptionLevel5();
afx_msg void OnOptionLevel6();
afx_msg void OnOptionGrid();
afx_msg void OnOptionMusic();
afx_msg void OnHelpHelp();
afx_msg void OnHelpAbout();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnUpdateGameStart(CCmdUI* pCmdUI);
afx_msg void OnUpdateGameEnd(CCmdUI* pCmdUI);
afx_msg void OnUpdateGameOption(CCmdUI* pCmdUI);
afx_msg void OnUpdateGameExit(CCmdUI* pCmdUI);
afx_msg void OnUpdateGamePaush(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionArea1(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionArea2(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionArea3(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionArea4(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionLevel1(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionLevel2(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionLevel3(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionLevel4(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionLevel5(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionLevel6(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionGrid(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionMusic(CCmdUI* pCmdUI);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnUpdateHelpHelp(CCmdUI* pCmdUI);
afx_msg void OnUpdateHelpAbout(CCmdUI* pCmdUI);
afx_msg void OnHelpTeach();
afx_msg void OnUpdateHelpTeach(CCmdUI* pCmdUI);
afx_msg void OnBackMusic();
afx_msg void OnCloseMusic();
afx_msg void OnMusicCycle();
//}}AFX_MSG
//列与行的数量
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;
//各种不同形状方块的接触面,接触面是指这样的小方块:它下面如果有另外的方块则表示
//此方块已到底。
//此数组记录了这些接触面在当前方块动态位置数组中的元素号
int InterFace[74][4];
//当前的方块形状
int m_currentRect;
//标识方块已到底的变量,到底为TRUE
BOOL m_isBottom;
//用于标志方块状态的数组,大小由横格与竖格数据决定,为1表示该方块显示,或者不显示
//画形状只需要修改数组中相应元素的状态值即可
//由时钟控制,定时在OnPaint函数中根据数组画方块
int GameStatus[100][100];
//用于保存当前方块的动态位置,4个小方块分别在大数组中的位置
//存放位置为先左后右,每一列又遵循先上后下的原则
int ActiveStatus[4][2];
//存入下一次要出来的方块的模样的数组
int NextStatus[4][2];
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // debug version in HWRECTView.cpp
inline CHWRECTDoc* CHWRECTView::GetDocument()
{ return (CHWRECTDoc*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_HWRECTVIEW_H__65E362BE_4052_46BA_A8E9_6074ED904C9B__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -