//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BSAE_BOX_H__AAF9E542_5B12_453F_A0D8_0F2542E527FD__INCLUDED_)
#define AFX_BSAE_BOX_H__AAF9E542_5B12_453F_A0D8_0F2542E527FD__INCLUDED_
#if _MSC_VER > 1000 #pragma once
#endif // _MSC_VER > 1000 #include \"Bsae_box.h\"
class pixe //形状容器类 {
public: int getimg(); int cx,cy; int row[4]; int col[4]; int img; pixe(); ~pixe(); void cleanarr(); pixe* operator=(pixe &px); };
class pix //单个元素属性类 {
public: BOOL data; //数据 int img; //图形 pix():data(0),img(0){} ~pix(){} };
class CBsae_box //形状基类 {
public: virtual void setpnow(pixe *p)=0; CBsae_box(); virtual ~CBsae_box(); virtual void rotate(BOOL clockwise=1)=0; };
class CLbox :public CBsae_box //L形状类 {
public: CLbox(int Index,pixe *pn,pixe *pr,int img); ~CLbox(); void rotate(BOOL clockwise=1); private: pixe *m_pnow,*m_prot; int now; int img; public: void setprot(pixe *p); void setpnow(pixe *p); void rotates(int Index); };
class CJbox :public CBsae_box // J形状类 {
public: CJbox(int Index,pixe *pn,pixe *pr,int img); ~CJbox(); void rotate(BOOL clockwise=1); private: pixe *m_pnow,*m_prot; int now; int img; public: void setprot(pixe *p); void setpnow(pixe *p); void rotates(int Index); };
class CZbox :public CBsae_box // Z 形状类 {
public: CZbox(int Index,pixe *pn,pixe *pr,int img); ~CZbox(); void rotate(BOOL clockwise=1); private: pixe *m_pnow,*m_prot; int now; int img; public: void rotates(int Index); void setprot(pixe *p); void setpnow(pixe *p); };
class CSbox :public CBsae_box // S 形状类
{
public: CSbox(int Index,pixe *pn,pixe *pr,int img); ~CSbox(); void rotate(BOOL clockwise=1); private: pixe *m_pnow,*m_prot; int now; int img; public: void rotates(int Index); void setprot(pixe *p); void setpnow(pixe *p); };
class CTbox :public CBsae_box // T 形状类 {
public: CTbox(int Index,pixe *pn,pixe *pr,int img); ~CTbox(); void rotate(BOOL clockwise=1); private: pixe *m_pnow,*m_prot; int now; int img; public: void rotates(int Index); void setprot(pixe *p); void setpnow(pixe *p); };
class CIbox :public CBsae_box // I 形状类 {
public: CIbox(int Index,pixe *pn,pixe *pr,int img); ~CIbox(); void rotate(BOOL clockwise=1); void setprot(pixe *p); void setpnow(pixe *p); private: pixe *m_pnow,*m_prot; int now; int img; public: void rotates(int Index); };
class CObox :public CBsae_box //田字形状类 {
public: CObox(int Index,pixe *pn,pixe *pr,int img); ~CObox(); void rotate(BOOL clockwise=1); void setprot(pixe *p); void setpnow(pixe *p); private: pixe *m_pnow,*m_prot; int now; int img; public: void rotates(int Index); };
class Cbox //俄罗斯方块类 {
public: BOOL over; long getsuc(); void cleanbox(); CBsae_box* getbenext(); CBsae_box* getbenow(); int rand(); CPoint getnow(); void nextonow(); void createbox(int i,int j,int img); void delline(int line); BOOL isdown(int r,int c,pixe* ppx); void isline(int line); Cbox(); ~Cbox(); void Left(); void Right(); void Rotate(); void Down(); pixe *pnow,*pnext,*prot; pix m_boxs[23][10]; private: long suc; CBsae_box *m_now,*m_next; int col; int row; };
#endif
// !defined(AFX_BSAE_BOX_H__AAF9E542_5B12_453F_A0D8_0F2542E527FD__INCLUDED_)
// Bsae_box.cpp: implementation of the CBsae_box class. //
//////////////////////////////////////////////////////////////////////
#include \"stdafx.h\" #include \"Bsae_box.h\"
#ifdef _DEBUG #undef THIS_FILE
static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif
////////////////////////////////////////////////////////////////////// // Construction/Destruction
////////////////////////////////////////////////////////////////////// pixe::pixe() { for(int i=0;i<4;i++) { row[i]=0; col[i]=0; } }
pixe::~pixe() { }
pixe* pixe::operator=(pixe &px) { if(&px!=this) { cx=px.cx; cy=px.cy; img=px.img; for(int i=0;i<=3;i++) { row[i]=px.row[i]; col[i]=px.col[i]; }
} return this; }
void pixe::cleanarr() { cx=0; cy=0; img=0; for(int i=0;i<=3;i++) { row[i]=0; col[i]=0; } }
CBsae_box::CBsae_box() { }
CBsae_box::~CBsae_box() { }
CLbox::CLbox(int Index,pixe
i):now(Index%4),m_pnow(pn),m_prot(pr),img(i%6) { rotates(now); *m_pnow=*m_prot; }
CLbox::~CLbox() { }
void CLbox::rotate(BOOL clockwise) { if(clockwise) { now++; if(now==4) now=0; } else { now--; if(now==-1) now=3; }
*pn,pixe *pr,int
rotates(now); }
void CLbox::setpnow(pixe *p) { m_pnow=p; }
void CLbox::setprot(pixe *p) { m_prot=p; }
void CLbox::rotates(int Index) { switch(Index) { case 0://shap ┖ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=2,m_prot->col[2]=0; m_prot->row[3]=2,m_prot->col[3]=1; m_prot->cx=2;m_prot->cy=3; m_prot->img=img; break; case 1://shap ┙ m_prot->row[0]=0;m_prot->col[0]=2; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=1,m_prot->col[3]=2; m_prot->cx=3;m_prot->cy=2;m_prot->img=img; break; case 2://shap ┒ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=0,m_prot->col[1]=1; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=2,m_prot->col[3]=1; m_prot->cx=2;m_prot->cy=3;m_prot->img=img; break; case 3://shap ┍ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=0,m_prot->col[1]=1; m_prot->row[2]=0,m_prot->col[2]=2; m_prot->row[3]=1,m_prot->col[3]=0; m_prot->cx=3;m_prot->cy=2;m_prot->img=img;
break; } }
CJbox::CJbox(int Index,pixe *pn,pixe *pr,int i):now(Index%4),m_pnow(pn),m_prot(pr),img(i%6) { rotates(now); *m_pnow=*m_prot; }
CJbox::~CJbox() { }
void CJbox::rotate(BOOL clockwise) { if(clockwise) { now++; if(now==4) now=0; } else { now--; if(now==-1) now=3; } rotates(now); }
void CJbox::setpnow(pixe *p) { m_pnow=p; }
void CJbox::setprot(pixe *p) { m_prot=p; }
void CJbox::rotates(int Index) { switch(Index) { case 0://shap ┚ m_prot->row[0]=0;m_prot->col[0]=1; m_prot->row[1]=1,m_prot->col[1]=1; m_prot->row[2]=2,m_prot->col[2]=0; m_prot->row[3]=2,m_prot->col[3]=1;
m_prot->cx=2;m_prot->cy=3;m_prot->img=img; break; case 1://shap ┑ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=0,m_prot->col[1]=1; m_prot->row[2]=0,m_prot->col[2]=2; m_prot->row[3]=1,m_prot->col[3]=2; m_prot->cx=3;m_prot->cy=2;m_prot->img=img; break; case 2://shap ┎ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=0,m_prot->col[1]=1; m_prot->row[2]=1,m_prot->col[2]=0; m_prot->row[3]=2,m_prot->col[3]=0; m_prot->cx=2;m_prot->cy=3;m_prot->img=img; break; case 3://shap ┕ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=1,m_prot->col[3]=2; m_prot->cx=3;m_prot->cy=2;m_prot->img=img; break; } }
CZbox::CZbox(int Index,pixe
i):now(Index%2),m_pnow(pn),m_prot(pr),img(i%6) { rotates(now); *m_pnow=*m_prot; }
CZbox::~CZbox() { }
void CZbox::rotate(BOOL clockwise) { if(clockwise) { now++; if(now==2) now=0; } else { now--;
*pn,pixe *pr,int
if(now==-1) now=1; } rotates(now); }
void CZbox::setpnow(pixe *p) { m_pnow=p; }
void CZbox::setprot(pixe *p) { m_prot=p; }
void CZbox::rotates(int Index) { switch(Index) { case 0://shap z~ m_prot->row[0]=0;m_prot->col[0]=1; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=2,m_prot->col[3]=0; m_prot->cx=2;m_prot->cy=3;m_prot->img=img; break; case 1://shap z m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=0,m_prot->col[1]=1; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=1,m_prot->col[3]=2; m_prot->cx=3;m_prot->cy=2;m_prot->img=img; break; default: break; } }
CSbox::CSbox(int Index,pixe
i):now(Index%2),m_pnow(pn),m_prot(pr),img(i%6) { rotates(now); *m_pnow=*m_prot; }
CSbox::~CSbox() { }
*pn,pixe *pr,int
void CSbox::rotate(BOOL clockwise) { if(clockwise) { now++; if(now==2) now=0; } else { now--; if(now==-1) now=1; } rotates(now); }
void CSbox::setpnow(pixe *p) { m_pnow=p; }
void CSbox::setprot(pixe *p) { m_prot=p; }
void CSbox::rotates(int Index) { switch(Index) { case 0://shap s~ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=2,m_prot->col[3]=1; m_prot->cx=2;m_prot->cy=3;m_prot->img=img; break; case 1://shap s m_prot->row[0]=0;m_prot->col[0]=1; m_prot->row[1]=0,m_prot->col[1]=2; m_prot->row[2]=1,m_prot->col[2]=0; m_prot->row[3]=1,m_prot->col[3]=1; m_prot->cx=3;m_prot->cy=2;m_prot->img=img; break; default: break; }
}
CTbox::CTbox(int Index,pixe
i):now(Index%4),m_pnow(pn),m_prot(pr),img(i%6) { rotates(now); *m_pnow=*m_prot; }
CTbox::~CTbox() { }
void CTbox::rotate(BOOL clockwise) { if(clockwise) { now++; if(now==4) now=0; } else { now--; if(now==-1) now=3; } rotates(now); }
void CTbox::setpnow(pixe *p) { m_pnow=p; }
void CTbox::setprot(pixe *p) { m_prot=p; }
void CTbox::rotates(int Index) { switch(Index) { case 0://shap ┴ m_prot->row[0]=0;m_prot->col[0]=1; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=1,m_prot->col[3]=2; m_prot->cx=3;m_prot->cy=2;m_prot->img=img; break;
*pn,pixe *pr,int
case 1://shap ┤ m_prot->row[0]=0;m_prot->col[0]=1; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=2,m_prot->col[3]=1; m_prot->cx=2;m_prot->cy=3;m_prot->img=img; break; case 2://shap ┬ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=0,m_prot->col[1]=1; m_prot->row[2]=0,m_prot->col[2]=2; m_prot->row[3]=1,m_prot->col[3]=1; m_prot->cx=3;m_prot->cy=2;m_prot->img=img; break; case 3://shap ├ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=1,m_prot->col[2]=1; m_prot->row[3]=2,m_prot->col[3]=0; m_prot->cx=2;m_prot->cy=3;m_prot->img=img; break; } }
CIbox::CIbox(int Index,pixe *pn,pixe *pr,int i):now(Index%2),m_pnow(pn),m_prot(pr),img(i%6) { rotates(now); *m_pnow=*m_prot; }
CIbox::~CIbox() { }
void CIbox::rotate(BOOL clockwise) { if(clockwise) { now++; if(now==2) now=0; } else { now--; if(now==-1) now=1; }
rotates(now); }
void CIbox::setpnow(pixe *p) { m_pnow=p; }
void CIbox::setprot(pixe *p) { m_prot=p; }
void CIbox::rotates(int Index) { switch(Index) { case 0://shap - m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=1,m_prot->col[1]=0; m_prot->row[2]=2,m_prot->col[2]=0; m_prot->row[3]=3,m_prot->col[3]=0; m_prot->cx=1;m_prot->cy=4;m_prot->img=img; break; case 1://shap | m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=0,m_prot->col[1]=1; m_prot->row[2]=0,m_prot->col[2]=2; m_prot->row[3]=0,m_prot->col[3]=3; m_prot->cx=4;m_prot->cy=1;m_prot->img=img; break; } }
CObox::CObox(int Index,pixe i):now(Index%1),m_pnow(pn),m_prot(pr),img(i%6) { rotates(now); *m_pnow=*m_prot; }
CObox::~CObox() { }
void CObox::rotate(BOOL clockwise) { if(clockwise) {
*pn,pixe *pr,int
now++; if(now==2) now=0; } else { now--; if(now==-1) now=1; } rotates(now); }
void CObox::setpnow(pixe *p) { m_pnow=p; }
void CObox::setprot(pixe *p) { m_prot=p; }
void CObox::rotates(int Index) { switch(Index) { case 0://shap ∷ m_prot->row[0]=0;m_prot->col[0]=0; m_prot->row[1]=0,m_prot->col[1]=1; m_prot->row[2]=1,m_prot->col[2]=0; m_prot->row[3]=1,m_prot->col[3]=1; m_prot->cx=2;m_prot->cy=2;m_prot->img=img; break; } }
Cbox::Cbox():col(0),row(0),m_now(0),m_next(0) { cleanbox(); suc=0; pnow=new pixe; pnext=new pixe; prot=new pixe; over=0; }
Cbox::~Cbox()
{ if(m_next) delete m_next; if(m_now) delete m_now; if(pnow) delete pnow; if(pnext) delete pnext; }
void Cbox::Rotate() { *prot=*pnow; m_now->rotate(); int c; if((col+prot->cx)>10) c=10-prot->cx; else c=col; if(isdown(row,c,prot)) { col=c; *pnow=*prot; } }
void Cbox::isline(int line) { BOOL isb; int i=line+4; if(i>22) i=22; for(;i>=line-1;i--) { isb=TRUE; for(int j=0;j<10;j++) { if(!(m_boxs[i][j]).data) { isb=FALSE; break; } } if(isb) { delline(i); i++; suc+=10; } } }
BOOL Cbox::isdown(int irow,int icol,pixe* ppx) { for(int i=3;i>=0;i--) if(m_boxs[ppx->row[i]+irow][ppx->col[i]+icol].data) return FALSE; if(icol<0 || (icol+ppx->cx)>10) return FALSE; if((irow+ppx->cy)>23) return FALSE; return TRUE; }
void Cbox::Down() { if(!isdown(row+1,col,pnow)) { for(int i=0;i<=3;i++) { m_boxs[row+pnow->row[i]][col+pnow->col[i]].data=TRUE; m_boxs[row+pnow->row[i]][col+pnow->col[i]].img=pnow->img; } isline(row); nextonow(); } else row++; }
void Cbox::Left() { if(isdown(row,col-1,pnow)) col--; }
void Cbox::Right() { if(isdown(row,col+1,pnow)) col++; }
void Cbox::delline(int line) { for(int i=line;i>0;i--) for(int j=0;j<=9;j++) { m_boxs[i][j].data=m_boxs[i-1][j].data; m_boxs[i][j].img=m_boxs[i-1][j].img; }
}
void Cbox::createbox(int i, int j,int img) { i=i%7; if(m_next) delete m_next; switch(i) { case 0: m_next=new CLbox(j,pnext,prot,img); break; case 1: m_next=new CTbox(j,pnext,prot,img); break; case 2: m_next=new CIbox(j,pnext,prot,img); break; case 3: m_next=new CZbox(j,pnext,prot,img); break; case 4: m_next=new CSbox(j,pnext,prot,img); break; case 5: m_next=new CObox(j,pnext,prot,img); break; case 6: m_next=new CJbox(j,pnext,prot,img); break; } ASSERT(m_next!=0); }
void Cbox::nextonow() {
/* for(int i=0;i<=3;i++) { pnow->row[i]=pnext->row[i]; pnow->col[i]=pnext->col[i]; }*/ *pnow=*pnext; m_now=m_next; m_now->setpnow(pnow);
row=0;col=4; m_next=0; createbox(rand(),rand()+1,rand()+3); }
CPoint Cbox::getnow() { CPoint p; p.x=col; p.y=row; return p; }
int Cbox::rand() { SYSTEMTIME systime; ::GetLocalTime(&systime); return systime.wSecond; }
CBsae_box* Cbox::getbenow() { return m_now; }
CBsae_box* Cbox::getbenext() { return m_next; }
void Cbox::cleanbox() { pix *pb=&m_boxs[0][0]; for(int i=0;i<230;i++) { pb->data=FALSE; pb->img=0; pb++; } }
long Cbox::getsuc() {
return suc; }
int pixe::getimg() { return img; }
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务