📄 hanview.cpp
字号:
// HanView.cpp : implementation of the CHanView class
//
#include "stdafx.h"
#include "Han.h"
#include "HanDoc.h"
#include "HanView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHanView
IMPLEMENT_DYNCREATE(CHanView, CView)
BEGIN_MESSAGE_MAP(CHanView, CView)
//{{AFX_MSG_MAP(CHanView)
ON_WM_KEYDOWN()
ON_COMMAND(ID_START, OnStart)
ON_WM_TIMER()
ON_COMMAND(ID_ONE, OnOne)
ON_COMMAND(ID_TWO, OnTwo)
ON_COMMAND(ID_THERE, OnThere)
ON_COMMAND(ID_FOUR, OnFour)
ON_COMMAND(ID_FIVE, OnFive)
ON_COMMAND(ID_SIX, OnSix)
ON_COMMAND(ID_SEVEN, OnSeven)
ON_COMMAND(ID_EIGHT, OnEight)
ON_COMMAND(ID_NINE, OnNine)
ON_COMMAND(ID_TEN, OnTen)
ON_COMMAND(ID_BREAK, OnBreak)
ON_COMMAND(ID_BEGIN, OnBegin)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHanView construction/destruction
CHanView::CHanView()
{
// TODO: add construction code here
//------------------------------------------------------------------//
y=0;
x=0;
m_sudu=1;
m=7;
n=0;
m_rcetsudu=CRect(400,70,600,90);
m_rectfen=CRect(400,120,600,140);
defen=0;
m_rectyouxi=CRect(200,10,300,310);
time_t timer;
time(&timer);
srand((unsigned int)timer);
//------------------------------------------------------------------//
pandiantuxing=0;
//------------------------------------------------------------------//
m_tu[30][0]=1;m_tu[30][1]=1;m_tu[30][2]=1;m_tu[30][3]=1;
m_tu[30][4]=1;m_tu[30][5]=1;m_tu[30][7]=1;m_tu[30][8]=1;
m_tu[30][6]=1;m_tu[30][9]=1;m_tu[30][10]=1;
//------------------------------------------------------------------//
m_tu[0][0]=1;m_tu[1][0]=1;m_tu[2][0]=1;m_tu[3][0]=1;
m_tu[4][0]=1;m_tu[5][0]=1;m_tu[6][0]=1;m_tu[7][0]=1;
m_tu[8][0]=1;m_tu[9][0]=1;m_tu[10][0]=1;m_tu[11][0]=1;
m_tu[12][0]=1;m_tu[13][0]=1;m_tu[14][0]=1; m_tu[15][0]=1;
m_tu[16][0]=1;m_tu[17][0]=1;m_tu[18][0]=1; m_tu[19][0]=1;
m_tu[20][0]=1;m_tu[21][0]=1;m_tu[22][-0]=1;m_tu[23][0]=1;
m_tu[24][0]=1;m_tu[25][0]=1; m_tu[26][0]=1;m_tu[27][0]=1;
m_tu[28][0]=1;m_tu[29][0]=1; m_tu[30][0]=1;
//------------------------------------------------------------------//
}
CHanView::~CHanView()
{
}
BOOL CHanView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CHanView drawing
void CHanView::OnDraw(CDC* pDC)
{
CHanDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//-----------------------------------------------------------------//
//画边框
CPen* oldPen1;
CPen penRed(PS_SOLID,4,RGB(225,0,0));
oldPen1=pDC->SelectObject(&penRed);
pDC->Rectangle(210,10,301,311);
//-----------------------------------------------------------------//
//输出速度
CString weisudu;
weisudu.Format("%d",m_sudu);
pDC->TextOut(400,50,"速度:");
pDC->TextOut(410,70,weisudu);
//-----------------------------------------------------------------//
//输出得分
CString fen;
fen.Format("%d",defen);
pDC->TextOut(400,100,"得分:");
pDC->TextOut(410,120,fen);
//-----------------------------------------------------------------//
for(int i=0;i<30;i++)
{for(int j=0;j<10;j++)
{if(m_tu[i][j]==1){m_tu[i][j]=1;}
else m_tu[i][j]=0;}
}
//-----------------------------------------------------------------//
//画图形
if(m==0&&n==0)
{m_tu[x+0][y+4]=1;m_tu[x+0][y+5]=1;
m_tu[x+0][y+6]=1;m_tu[x+0][y+7]=1;}
if(m==0&&n==2)
{m_tu[x+0][y+4]=1;m_tu[x+0][y+5]=1;
m_tu[x+0][y+6]=1;m_tu[x+0][y+7]=1;}
if(m==0&&n==1)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+2][y+4]=1;m_tu[x+3][y+4]=1;}
if(m==0&&n==3)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+2][y+4]=1;m_tu[x+3][y+4]=1;}
if(m==1)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+0][y+5]=1;m_tu[x+1][y+5]=1;}
if(m==2&&n==0)
{m_tu[x+0][y+5]=1;m_tu[x+1][y+5]=1;
m_tu[x+1][y+4]=1;m_tu[x+1][y+6]=1;}
if(m==2&&n==1)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+2][y+4]=1;m_tu[x+1][y+5]=1;}
if(m==2&&n==2)
{m_tu[x+0][y+4]=1;m_tu[x+0][y+5]=1;
m_tu[x+0][y+6]=1;m_tu[x+1][y+5]=1;}
if(m==2&&n==3)
{m_tu[x+0][y+5]=1;m_tu[x+1][y+4]=1;
m_tu[x+2][y+5]=1;m_tu[x+1][y+5]=1;}
if(m==3&&n==0)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+1][y+6]=1;m_tu[x+1][y+5]=1;}
if(m==3&&n==1)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+2][y+4]=1;m_tu[x+0][y+5]=1;}
if(m==3&&n==2)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+6]=1;
m_tu[x+0][y+6]=1;m_tu[x+0][y+5]=1;}
if(m==3&&n==3)
{m_tu[x+0][y+5]=1;m_tu[x+1][y+5]=1;
m_tu[x+2][y+4]=1;m_tu[x+2][y+5]=1;}
if(m==4&&n==0)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+0][y+6]=1;m_tu[x+0][y+5]=1;}
if(m==4&&n==1)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+5]=1;
m_tu[x+2][y+5]=1;m_tu[x+0][y+5]=1;}
if(m==4&&n==2)
{m_tu[x+0][y+6]=1;m_tu[x+1][y+4]=1;
m_tu[x+1][y+6]=1;m_tu[x+1][y+5]=1;}
if(m==4&&n==3)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+2][y+4]=1;m_tu[x+2][y+5]=1;}
if(m==5&&n==0)
{m_tu[x+1][y+5]=1;m_tu[x+1][y+4]=1;
m_tu[x+0][y+6]=1;m_tu[x+0][y+5]=1;}
if(m==5&&n==1)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+2][y+5]=1;m_tu[x+1][y+5]=1;}
if(m==5&&n==2)
{m_tu[x+1][y+5]=1;m_tu[x+1][y+4]=1;
m_tu[x+0][y+6]=1;m_tu[x+0][y+5]=1;}
if(m==5&&n==3)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+5]=1;
m_tu[x+2][y+5]=1;m_tu[x+1][y+4]=1;}
if(m==6&&n==0)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+6]=1;
m_tu[x+0][y+5]=1;m_tu[x+1][y+5]=1;}
if(m==6&&n==1)
{m_tu[x+2][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+0][y+5]=1;m_tu[x+1][y+5]=1;}
if(m==6&&n==2)
{m_tu[x+0][y+4]=1;m_tu[x+1][y+6]=1;
m_tu[x+0][y+5]=1;m_tu[x+1][y+5]=1;}
if(m==6&&n==3)
{m_tu[x+2][y+4]=1;m_tu[x+1][y+4]=1;
m_tu[x+0][y+5]=1;m_tu[x+1][y+5]=1;}
//-----------------------------------------------------------------//
if(pandiantuxing==1)
{
for(int mm=29;mm>=0;mm--)
{
if(m_tu[mm][1]==1&&m_tu[mm][2]==1&& m_tu[mm][3]==1&&
m_tu[mm][4]==1&&m_tu[mm][5]==1&&m_tu[mm][6]==1&&
m_tu[mm][7]==1&&m_tu[mm][8]==1&&m_tu[mm][9]==1)
{m_tu[mm][1]=0;m_tu[mm][2]=0;m_tu[mm][3]=0;
m_tu[mm][4]=0;m_tu[mm][5]=0;m_tu[mm][6]=0;
m_tu[mm][7]=0;m_tu[mm][8]=0;m_tu[mm][9]=0;
defen=defen+1;
Invalidate();
}
}
}
if(pandiantuxing==1)
{
for(int qq=29;qq>0;qq--)
{ if(m_tu[qq][1]==0&&m_tu[qq][2]==0&&m_tu[qq][3]==0&&
m_tu[qq][4]==0&&m_tu[qq][5]==0&&m_tu[qq][6]==0&&
m_tu[qq][7]==0&&m_tu[qq][8]==0&&m_tu[qq][9]==0)
{if(m_tu[qq-1][1]==1){m_tu[qq-1][1]=0;m_tu[qq][1]=1;}
if(m_tu[qq-1][2]==1){m_tu[qq-1][2]=0;m_tu[qq][2]=1;}
if(m_tu[qq-1][3]==1){m_tu[qq-1][3]=0;m_tu[qq][3]=1;}
if(m_tu[qq-1][4]==1){m_tu[qq-1][4]=0;m_tu[qq][4]=1;}
if(m_tu[qq-1][5]==1){m_tu[qq-1][5]=0;m_tu[qq][5]=1;}
if(m_tu[qq-1][6]==1){m_tu[qq-1][6]=0;m_tu[qq][6]=1;}
if(m_tu[qq-1][7]==1){m_tu[qq-1][7]=0;m_tu[qq][7]=1;}
if(m_tu[qq-1][8]==1){m_tu[qq-1][8]=0;m_tu[qq][8]=1;}
if(m_tu[qq-1][9]==1){m_tu[qq-1][9]=0;m_tu[qq][9]=1;}}
}
}
if(pandiantuxing==1)
{
for(int qq=29;qq>0;qq--)
{ if(m_tu[qq][1]==0&&m_tu[qq][2]==0&&m_tu[qq][3]==0&&
m_tu[qq][4]==0&&m_tu[qq][5]==0&&m_tu[qq][6]==0&&
m_tu[qq][7]==0&&m_tu[qq][8]==0&&m_tu[qq][9]==0)
{if(m_tu[qq-1][1]==1){m_tu[qq-1][1]=0;m_tu[qq][1]=1;}
if(m_tu[qq-1][2]==1){m_tu[qq-1][2]=0;m_tu[qq][2]=1;}
if(m_tu[qq-1][3]==1){m_tu[qq-1][3]=0;m_tu[qq][3]=1;}
if(m_tu[qq-1][4]==1){m_tu[qq-1][4]=0;m_tu[qq][4]=1;}
if(m_tu[qq-1][5]==1){m_tu[qq-1][5]=0;m_tu[qq][5]=1;}
if(m_tu[qq-1][6]==1){m_tu[qq-1][6]=0;m_tu[qq][6]=1;}
if(m_tu[qq-1][7]==1){m_tu[qq-1][7]=0;m_tu[qq][7]=1;}
if(m_tu[qq-1][8]==1){m_tu[qq-1][8]=0;m_tu[qq][8]=1;}
if(m_tu[qq-1][9]==1){m_tu[qq-1][9]=0;m_tu[qq][9]=1;}}
}
}
if(pandiantuxing==1)
{
for(int qq=29;qq>0;qq--)
{ if(m_tu[qq][1]==0&&m_tu[qq][2]==0&&m_tu[qq][3]==0&&
m_tu[qq][4]==0&&m_tu[qq][5]==0&&m_tu[qq][6]==0&&
m_tu[qq][7]==0&&m_tu[qq][8]==0&&m_tu[qq][9]==0)
{if(m_tu[qq-1][1]==1){m_tu[qq-1][1]=0;m_tu[qq][1]=1;}
if(m_tu[qq-1][2]==1){m_tu[qq-1][2]=0;m_tu[qq][2]=1;}
if(m_tu[qq-1][3]==1){m_tu[qq-1][3]=0;m_tu[qq][3]=1;}
if(m_tu[qq-1][4]==1){m_tu[qq-1][4]=0;m_tu[qq][4]=1;}
if(m_tu[qq-1][5]==1){m_tu[qq-1][5]=0;m_tu[qq][5]=1;}
if(m_tu[qq-1][6]==1){m_tu[qq-1][6]=0;m_tu[qq][6]=1;}
if(m_tu[qq-1][7]==1){m_tu[qq-1][7]=0;m_tu[qq][7]=1;}
if(m_tu[qq-1][8]==1){m_tu[qq-1][8]=0;m_tu[qq][8]=1;}
if(m_tu[qq-1][9]==1){m_tu[qq-1][9]=0;m_tu[qq][9]=1;}}
}
}
if(pandiantuxing==1)
{
for(int qq=29;qq>0;qq--)
{ if(m_tu[qq][1]==0&&m_tu[qq][2]==0&&m_tu[qq][3]==0&&
m_tu[qq][4]==0&&m_tu[qq][5]==0&&m_tu[qq][6]==0&&
m_tu[qq][7]==0&&m_tu[qq][8]==0&&m_tu[qq][9]==0)
{if(m_tu[qq-1][1]==1){m_tu[qq-1][1]=0;m_tu[qq][1]=1;}
if(m_tu[qq-1][2]==1){m_tu[qq-1][2]=0;m_tu[qq][2]=1;}
if(m_tu[qq-1][3]==1){m_tu[qq-1][3]=0;m_tu[qq][3]=1;}
if(m_tu[qq-1][4]==1){m_tu[qq-1][4]=0;m_tu[qq][4]=1;}
if(m_tu[qq-1][5]==1){m_tu[qq-1][5]=0;m_tu[qq][5]=1;}
if(m_tu[qq-1][6]==1){m_tu[qq-1][6]=0;m_tu[qq][6]=1;}
if(m_tu[qq-1][7]==1){m_tu[qq-1][7]=0;m_tu[qq][7]=1;}
if(m_tu[qq-1][8]==1){m_tu[qq-1][8]=0;m_tu[qq][8]=1;}
if(m_tu[qq-1][9]==1){m_tu[qq-1][9]=0;m_tu[qq][9]=1;}}
}
if(x<5)
{ KillTimer(0);
for(int ee=0;ee<30;ee++)
{for(int rr=0;rr<10;rr++){m_tu[ee][rr]=1;}}
MessageBox("Game Over");
Invalidate();
}
x=0;y=0;
m=rand()%6+0;
if(x==0)
{pandiantuxing=0;
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
//画方格
//画灰方格
CPen* oldPen3;
CPen penHui(PS_SOLID,1,RGB(150,150,150));
oldPen3=pDC->SelectObject(&penHui);
CBrush* oldBrush2;
CBrush brushHui(RGB(150,150,150));
oldBrush2=pDC->SelectObject(&brushHui);
for(int ii=0;ii<30;ii++)
{
for(int jj=1;jj<10;jj++)
{
if(m_tu[ii][jj]==0){pDC->Rectangle(200+jj*10,
10+ii*10,210+jj*10,20+ii*10);}}
}
//画黑红方格
CPen* oldPen2;
CPen penGreen(PS_SOLID,1,RGB(100,130,0));
oldPen2=pDC->SelectObject(&penGreen);
CBrush* oldBrush1;
CBrush brushBlack(RGB(0,0,0));
oldBrush1=pDC->SelectObject(&brushBlack);
for(int iii=0;iii<30;iii++)
{
for(int jjj=1;jjj<10;jjj++)
{
if(m_tu[iii][jjj]==1)
{pDC->Rectangle(200+jjj*10,10+iii*10,210+jjj*10,20+iii*10);}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
}
/////////////////////////////////////////////////////////////////////////////
// CHanView printing
BOOL CHanView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CHanView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CHanView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CHanView diagnostics
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -