SDK版挖地雷游戏源码.docx

上传人:b****0 文档编号:9615657 上传时间:2023-05-20 格式:DOCX 页数:75 大小:28.71KB
下载 相关 举报
SDK版挖地雷游戏源码.docx_第1页
第1页 / 共75页
SDK版挖地雷游戏源码.docx_第2页
第2页 / 共75页
SDK版挖地雷游戏源码.docx_第3页
第3页 / 共75页
SDK版挖地雷游戏源码.docx_第4页
第4页 / 共75页
SDK版挖地雷游戏源码.docx_第5页
第5页 / 共75页
SDK版挖地雷游戏源码.docx_第6页
第6页 / 共75页
SDK版挖地雷游戏源码.docx_第7页
第7页 / 共75页
SDK版挖地雷游戏源码.docx_第8页
第8页 / 共75页
SDK版挖地雷游戏源码.docx_第9页
第9页 / 共75页
SDK版挖地雷游戏源码.docx_第10页
第10页 / 共75页
SDK版挖地雷游戏源码.docx_第11页
第11页 / 共75页
SDK版挖地雷游戏源码.docx_第12页
第12页 / 共75页
SDK版挖地雷游戏源码.docx_第13页
第13页 / 共75页
SDK版挖地雷游戏源码.docx_第14页
第14页 / 共75页
SDK版挖地雷游戏源码.docx_第15页
第15页 / 共75页
SDK版挖地雷游戏源码.docx_第16页
第16页 / 共75页
SDK版挖地雷游戏源码.docx_第17页
第17页 / 共75页
SDK版挖地雷游戏源码.docx_第18页
第18页 / 共75页
SDK版挖地雷游戏源码.docx_第19页
第19页 / 共75页
SDK版挖地雷游戏源码.docx_第20页
第20页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SDK版挖地雷游戏源码.docx

《SDK版挖地雷游戏源码.docx》由会员分享,可在线阅读,更多相关《SDK版挖地雷游戏源码.docx(75页珍藏版)》请在冰点文库上搜索。

SDK版挖地雷游戏源码.docx

SDK版挖地雷游戏源码

SourceFiles:

LandMine.c文件:

#include"stdafx.h"

#include"Resource.h"

#include"LandMine.h"

externCPenPen1,Pen2,Pen3,Pen4,Pen5,Pen6,Pen7;

voidCMineButton:

:

DrawItem(BOOLbFail)

{

RECTrect;

rect.left=m_nX;

rect.top=m_nY;

rect.right=m_nX+14;

rect.bottom=m_nY+14;

CClientDCClientDC(m_pParent);

ClientDC.SetBkColor(RGB(198,198,198));

ClientDC.SelectStockObject(LTGRAY_BRUSH);

ClientDC.SelectObject(Pen6);

ClientDC.Rectangle(&rect);

if(m_nStatus==MS_OPEN||bFail&&m_nStatus==MS_FLAG&&m_nMineNum>=0)

{

switch(m_nMineNum)

{

case1:

ClientDC.SetTextColor(RGB(0,128,0));

break;

case2:

ClientDC.SetTextColor(RGB(0,128,128));

break;

case3:

ClientDC.SetTextColor(RGB(0,0,128));

break;

case4:

ClientDC.SetTextColor(RGB(0,128,0));

break;

case5:

ClientDC.SetTextColor(RGB(128,0,0));

break;

case6:

ClientDC.SetTextColor(RGB(0,255,0));

break;

case7:

ClientDC.SetTextColor(RGB(128,128,0));

break;

case8:

ClientDC.SetTextColor(RGB(255,0,255));

break;

}

charcTmp[2]={0,0};

if(m_nMineNum>0)

{

cTmp[0]=m_nMineNum+'0';

ClientDC.DrawText(cTmp,-1,&rect,DT_CENTER|DT_VCENTER);

}

intnI;

ClientDC.SelectObject(Pen6);

ClientDC.SetBkColor(RGB(198,198,198));

ClientDC.SelectStockObject(NULL_BRUSH);

ClientDC.Rectangle(rect.left,rect.top,rect.right+1,rect.bottom+1);

for(nI=rect.left;nI

ClientDC.SetPixel(nI,rect.bottom+1,RGB(0,0,0));

for(nI=rect.top;nI

ClientDC.SetPixel(rect.right+1,nI,RGB(0,0,0));

if(bFail&&m_nStatus==MS_FLAG&&m_nMineNum!

=-1)

{

ClientDC.SelectObject(Pen4);

ClientDC.MoveTo(rect.left+1,rect.top+1);

ClientDC.LineTo(rect.right-1,rect.bottom-1);

ClientDC.MoveTo(rect.right-1,rect.top+1);

ClientDC.LineTo(rect.left+1,rect.bottom-1);

}

return;

}

if(bFail==1&&m_nMineNum==-1)

{

CBitmapBitmap;

if(m_nStatus!

=MS_EXPLODE)

Bitmap.LoadBitmap(IDB_MINE);

else

Bitmap.LoadBitmap(IDB_MINEEXPLODE);

//drawthewholebutton

CDCmemDC;

memDC.CreateCompatibleDC(&ClientDC);

CBitmap*pOld=memDC.SelectObject(&Bitmap);

if(pOld==NULL)

return;//destructorswillcleanup

ClientDC.BitBlt(rect.left,rect.top,16,16,

&memDC,0,0,SRCCOPY);

memDC.SelectObject(pOld);

intnI;

for(nI=rect.left;nI

ClientDC.SetPixel(nI,rect.bottom+1,RGB(0,0,0));

for(nI=rect.top;nI

ClientDC.SetPixel(rect.right+1,nI,RGB(0,0,0));

return;

}

if(m_nStatus==MS_QUEST)

{

ClientDC.SetTextColor(RGB(0,0,128));

ClientDC.SetBkColor(RGB(198,198,198));

ClientDC.DrawText("?

",1,&rect,DT_CENTER|DT_VCENTER);

}

else

{

if(m_nStatus==MS_FLAG)

{

CBitmapBitmap;

Bitmap.LoadBitmap(IDB_FLAG);

//drawthewholebutton

CDCmemDC;

memDC.CreateCompatibleDC(&ClientDC);

CBitmap*pOld=memDC.SelectObject(&Bitmap);

if(pOld==NULL)

return;//destructorswillcleanup

ClientDC.BitBlt(rect.left,rect.top,14,14,

&memDC,0,0,SRCCOPY);

memDC.SelectObject(pOld);

}

}

ClientDC.SelectObject(Pen3);

ClientDC.MoveTo(rect.right,rect.top);

ClientDC.LineTo(rect.left,rect.top);

ClientDC.LineTo(rect.left,rect.bottom);

ClientDC.SelectObject(Pen7);

ClientDC.LineTo(rect.right,rect.bottom);

ClientDC.LineTo(rect.right,rect.top);

}

voidCMineButton:

:

ButtonDown(intStatus)

{

RECTrect;

rect.left=m_nX;

rect.top=m_nY;

rect.right=m_nX+15;

rect.bottom=m_nY+15;

CClientDCClientDC(m_pParent);

if(Status==1)

{

ClientDC.SelectObject(Pen6);

ClientDC.SetBkColor(RGB(198,198,198));

ClientDC.SelectStockObject(NULL_BRUSH);

ClientDC.Rectangle(&rect);

intnI;

for(nI=rect.left;nI

ClientDC.SetPixel(nI,rect.bottom,RGB(0,0,0));

for(nI=rect.top;nI

ClientDC.SetPixel(rect.right,nI,RGB(0,0,0));

}

else

{

ClientDC.SelectObject(Pen6);

ClientDC.MoveTo(rect.left,rect.bottom);

ClientDC.LineTo(rect.right,rect.bottom);

ClientDC.LineTo(rect.right,rect.top+1);

DrawItem(FALSE);

}

}

intCMineButton:

:

OpenMine()

{

if(m_nStatus==MS_NORMAL||m_nStatus==MS_QUEST)

{

if(m_nMineNum!

=-1)

{

m_nStatus=MS_OPEN;

DrawItem(FALSE);

if(m_nMineNum==0)

return0;

else

return1;

}

else

{

m_nStatus=MS_EXPLODE;

DrawItem(TRUE);//Fail

return-1;

}

}

return1;

};

voidCLandMine:

:

Create(intnRow,intnCol,intnMineNum,intnX,intnY,CWnd*pParent)

{

m_pParent=pParent;

m_nX=nX;

m_nY=nY;

Reset(nRow,nCol,nMineNum);

}

voidCLandMine:

:

ReDraw(intbFail)

{

intnI;

for(nI=0;nI

m_aLandMine[nI]->DrawItem(bFail);

}

voidCLandMine:

:

Reset(intnRow,intnCol,intnMineNum)

{

intnI;

RECTrect;

for(nI=0;nI

{

if(m_aLandMine[nI]!

=NULL)

deletem_aLandMine[nI];

}

for(nI=0;nI

{

rect.left=m_nX+nI%nCol*16+1;

rect.top=m_nY+nI/nCol*16+1;

//rect.right=m_nX+nI/nCol*16+15;

//rect.bottom=m_nY+nI%nCol*16+15;

m_aLandMine[nI]=newCMineButton;

m_aLandMine[nI]->Create(m_pParent,rect.left,rect.top);

m_aLandMine[nI]->SetStatus(MS_NORMAL);

//m_aLandMine[nI]->SetMineNum(0);

}

m_nRow=nRow;

m_nCol=nCol;

m_nMineNum=nMineNum;

intnCurMines=0;

intnCurMine;

srand((unsigned)time(NULL));

//srand

(1);

while(nCurMines

{

nCurMine=rand()%(m_nRow*m_nCol);

if(m_aLandMine[nCurMine]->GetMineNum()!

=-1)

{

m_aLandMine[nCurMine]->SetMineNum(-1);

intnMineRound,nMineRound1;

//right;

nMineRound=GetRight(nCurMine);

if(nMineRound>=0)

{

if(m_aLandMine[nMineRound]->GetMineNum()!

=-1)

++(*m_aLandMine[nMineRound]);

//righttop

nMineRound1=GetTop(nMineRound);

if(nMineRound1>=0&&m_aLandMine[nMineRound1]->GetMineNum()!

=-1)

{

++(*m_aLandMine[nMineRound1]);

}

//rightbottom

nMineRound1=GetBot(nMineRound);

if(nMineRound1>=0&&m_aLandMine[nMineRound1]->GetMineNum()!

=-1)

{

++(*m_aLandMine[nMineRound1]);

}

}

//left

nMineRound=GetLeft(nCurMine);

if(nMineRound>=0)

{

if(m_aLandMine[nMineRound]->GetMineNum()!

=-1)

++(*m_aLandMine[nMineRound]);

//Lefttop

nMineRound1=GetTop(nMineRound);

if(nMineRound1>=0&&m_aLandMine[nMineRound1]->GetMineNum()!

=-1)

{

++(*m_aLandMine[nMineRound1]);

}

//Leftbottom

nMineRound1=GetBot(nMineRound);

if(nMineRound1>=0&&m_aLandMine[nMineRound1]->GetMineNum()!

=-1)

{

++(*m_aLandMine[nMineRound1]);

}

}

//Top

nMineRound=GetTop(nCurMine);

if(nMineRound>=0&&m_aLandMine[nMineRound]->GetMineNum()!

=-1)

{

++(*m_aLandMine[nMineRound]);

}

//Bottom

nMineRound=GetBot(nCurMine);

if(nMineRound>=0&&m_aLandMine[nMineRound]->GetMineNum()!

=-1)

{

++(*m_aLandMine[nMineRound]);

}

nCurMines++;

}

}

}

voidCLandMine:

:

LButtonDown(CPointpoint)

{

intnCol=(point.x-m_nX)/16;

intnRow=(point.y-m_nY)/16;

intnCurMine=nCol+nRow*m_nCol;

if(nRow>=m_nRow||nCol>=m_nCol||point.x

{

m_nOldMine=-1;

return;

}

if(nCol

&&(m_aLandMine[nCurMine]->GetStatus()==MS_NORMAL||m_aLandMine[nCurMine]->GetStatus()==MS_QUEST))

{

m_aLandMine[nCurMine]->ButtonDown

(1);

m_nOldMine=nCurMine;

}

};

intCLandMine:

:

LButtonUp(CPointpoint)

{

intnCol=(point.x-m_nX)/16;

intnRow=(point.y-m_nY)/16;

intnCurMine=nCol+nRow*m_nCol;

if(nRow>=m_nRow||nCol>=m_nCol||point.x

return0;

BOOLnStatus=OpenMine(nCurMine);

if(nStatus==FALSE)

{intnI;

for(nI=0;nI

{

if(m_aLandMine[nI]->GetMineNum()==-1)

m_aLandMine[nI]->DrawItem(TRUE);

if(m_aLandMine[nI]->GetStatus()==MS_FLAG)

m_aLandMine[nI]->DrawItem(TRUE);

}

return-1;

}

return1;

}

BOOLCLandMine:

:

OpenMine(intnCurMine)

{

intnRoundMine,nRoundMine1;

intaMine[500];

intnTop=0,nTail=0;

aMine[nTop++]=nCurMine;

while(nTop!

=nTail)

{

intnCurrent=aMine[nTail];

nTail=(nTail+1)%500;

switch(m_aLandMine[nCurrent]->OpenMine())

{

case0:

//Minenumberiszero

nRoundMine=GetLeft(nCurrent);

if(nRoundMine!

=-1)

{

aMine[nTop]=nRoundMine;

nTop=(nTop+1)%500;

nRoundMine1=GetTop(nRoundMine);

if(nRoundMine1!

=-1)

{

aMine[nTop]=nRoundMine1;

nTop=(nTop+1)%500;

nRoundMine1=GetTop(nRoundMine);

}

nRoundMine1=GetBot(nRoundMine);

if(nRoundMine1!

=-1)

{

aMine[nTop]=nRoundMine1;

nTop=(nTop+1)%500;

nRoundMine1=GetTop(nRoundMine);

}

}

nRoundMine=GetRight(nCurrent);

if(nRoundMine!

=-1)

{

aMine[nTop]=nRoundMine;

nTop=(nTop+1)%500;

nRoundMine1=GetTop(nRoundMine);

if(nRoundMine1!

=-1)

{

aMine[nTop]=nRoundMine1;

nTop=(nTop+1)%500;

nRoundMine1=GetTop(nRoundMine);

}

nRoundMine1=GetBot(nRoundMine);

if(nRoundMine1!

=-1)

{

aMine[nTop]=nRoundMine1;

nTop=(nTop+1)%500;

nRoundMine1=GetTop(nRoundMine);

}

}

nRoundMine=GetTop(nCurrent);

if(nRoundMine!

=-1)

{

aMine[nTop]=nRoundMine;

nTop=(nTop+1)%500;

}

nRoundMine=GetBot(nCurrent);

if(nRoundMine!

=-1)

{

aMine[nTop]=nRoundMine;

nTop=(nTop+1)%500;

}

break;

case1:

break;

case-1:

returnFALSE;//fail

}

}

returnTRUE;

}

BOOLCLandMine:

:

IsSuccess()

{

intnI,nStatus;

for(nI=0;nI

{

nStatus=m_aLandMine[nI]->GetStatus();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2