2024年2月19日发(作者:)

实训代码——棋盘穿梭游戏

在zzsView.h中

public:

UINT VirKey;

CPen pen;

CBrush br;

int X1;

int Y1;

int X2;

int Y2;

//在头文件中声明所要变量

CBrush b;

CPen p;

int LocationX;

int LocationY;

int chessBoard[100][100];

int GameLeve;

int ilife;

char number[200];

在中

#include "stdafx.h"

#include "zzs.h"

#include "zzsDoc.h"

#include "zzsView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CzzsView

IMPLEMENT_DYNCREATE(CzzsView, CView)

BEGIN_MESSAGE_MAP(CzzsView, CView)

ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)

ON_COMMAND(ID_32774, &CzzsView::On重新开始)

ON_COMMAND(ID_32771, &CzzsView::Ondiji)

ON_COMMAND(ID_32772, &CzzsView::Onzhongji)

ON_COMMAND(ID_32773, &CzzsView::Ongaoji)

END_MESSAGE_MAP()

// CzzsView 构造/析构

CzzsView::CzzsView()

{

VirKey=0; //在构造函数中进行初始化

X1=30;

Y1=30;

ON_WM_KEYDOWN()

X2=70;

Y2=70;

SolidBrush(RGB(255,0,0));

Pen(PS_SOLID,1,RGB(128,110,245));

Pen(PS_SOLID,1,RGB(255,110,0));

SolidBrush(RGB(115,211,100));

LocationX=0;

}

void CzzsView::OnDraw(CDC* pDC) // CzzsView 绘制

{

CzzsDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

LocationY=0;

GameLeve=9;

for (int i=0;i<10;i++)

{

}

chessBoard[0][0]=0;

chessBoard[0][1]=0;

chessBoard[1][0]=0;

chessBoard[1][1]=0;

chessBoard[9][9]=0; // 结束的位置不应有障碍

chessBoard[9][8]=0;

chessBoard[8][9]=0;

chessBoard[8][8]=0;

// 开始的位置不应有障碍

for (int j=0;j<10;j++)

{

}

chessBoard[i][j]=0;

r=((double)rand())/RAND_MAX*10.0;

if (r>=GameLeve)

chessBoard[i][j]=3;

chessBoard[i][j]=1;

// 炸弹

// 资源

if (r<1)

ilife=1;

int r;

pDC->SelectObject(&p);

for(int i=0;i<=10;i++)

{

pDC->MoveTo(i*60+20,20);

pDC->LineTo(i*60+20,620);

}

for(int j=0;j<=10;j++)

{

pDC->MoveTo(20,j*60+20);

pDC->LineTo(620,j*60+20);

}

pDC->SelectObject(&b);

pDC->Rectangle(620,20,780,620);

pDC->SetTextColor(RGB(0,0,0));

}

// CzzsView 消息处理程序

void CzzsView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

pDC->SetBkColor(RGB(115,211,100));

pDC->TextOutA(650,80,"游戏状态:");

pDC->TextOutA(650,110,"游戏进行中...");

pDC->TextOutA(650,140,"生命数:");

pDC->TextOutA(730,140,"1");

pDC->SelectObject(&br);

pDC->Ellipse(X1,Y1,X2,Y2);

for(int i=0;i<10;i++)

{

for(int j=0;j<10;j++)

{

pDC->SelectObject(&pen);

switch(chessBoard[i][j])

{

case 1:

}

}

{

CBrush hp(RGB(255,128,255));//能量包

pDC->SelectObject(&hp);

pDC->Ellipse(60*i+30,60*j+30,60*(i+1)+10,60*(j+1)+0);

Object();

}

break;

{

CBrush hp(RGB(192,192,192));

pDC->SelectObject(&hp);

pDC->Pie(60*i+30,60*j+30,60*(i+1)+10,60*(j+1)+10,60*i+20,60*j+70,60*i+20,60*j+30);

Object();

}

break;

}

case 3: //炸弹

{

CClientDC dc(this);

if(ilife==0)

{ return; }

if(LocationX==9&&LocationY==9)

{ return; }

VirKey=nChar;

Object(&pen);

Object(&br);

switch (VirKey)

{

case VK_RIGHT:

if (X2+2<=560)

{

lidRect(X1,Y1,X2-X1,Y2-Y1,RGB(255,255,255));

X1=X1+60;

X2=X2+60;

LocationX+=1;

if(chessBoard[LocationX][LocationY]==1)

{

ilife+=1;

Sleep(150);

CBrush brush(RGB(250,150,50));

e(X1,Y1,X2,Y2);

Sleep(150);

CBrush br(RGB(255,128,0));

e(X1,Y1,X2,Y2);

sprintf(number,"%d",ilife);

lidRect(730,140,20,15,RGB(115,211,100));

olor(RGB(115,211,100));

tA(730,140,number);

Object(&brush);

Object(&br);

}

if(chessBoard[LocationX][LocationY]==3)

{

ilife-=1;

Sleep(150);

CBrush brush(RGB(250,150,50));

e(X1,Y1,X2,Y2);

Sleep(150);

CBrush br(RGB(255,128,0));

Object(&brush);

Object(&br);

}

e(X1,Y1,X2,Y2);

sprintf(number,"%d",ilife);

lidRect(730,140,20,15,RGB(115,211,100));

olor(RGB(115,211,100));

tA(730,140,number);

}

chessBoard[LocationX][LocationY]=0;

break;

if (X1-2>=30)

{

lidRect(X1,Y1,X2-X1,Y2-Y1,RGB(255,255,255));

X1=X1-60;

X2=X2-60;

LocationX-=1;

case VK_LEFT:

if(chessBoard[LocationX][LocationY]==1)//碰到能量包

{

ilife+=1;

Sleep(150);

CBrush brush(RGB(250,150,50));

e(X1,Y1,X2,Y2);

Sleep(150);

CBrush br(RGB(255,128,0));

e(X1,Y1,X2,Y2);

sprintf(number,"%d",ilife);

lidRect(730,140,20,15,RGB(115,211,100));

olor(RGB(115,211,100));

tA(730,140,number);

if(chessBoard[LocationX][LocationY]==3)//碰到炸弹

{

ilife-=1;

Sleep(150);

CBrush brush(RGB(250,150,50));

e(X1,Y1,X2,Y2);

Sleep(150);

CBrush br(RGB(255,128,0));

e(X1,Y1,X2,Y2);

sprintf(number,"%d",ilife);

Object(&brush);

Object(&br);

}

Object(&brush);

Object(&br);

}

lidRect(730,140,20,15,RGB(115,211,100));

olor(RGB(115,211,100));

tA(730,140,number);

}

chessBoard[LocationX][LocationY]=0;

break;

if (Y1-2>=30)

{

lidRect(X1,Y1,X2-X1,Y2-Y1,RGB(255,255,255));

Y1=Y1-60;

Y2=Y2-60;

case VK_UP:

LocationY-=1;

if(chessBoard[LocationX][LocationY]==1)

{

ilife+=1;

Sleep(150);

CBrush brush(RGB(250,150,50));

e(X1,Y1,X2,Y2);

Sleep(150);

CBrush br(RGB(255,128,0));

e(X1,Y1,X2,Y2);

sprintf(number,"%d",ilife);

lidRect(730,140,20,15,RGB(115,211,100));

olor(RGB(115,211,100));

tA(730,140,number);

if(chessBoard[LocationX][LocationY]==3)

{

ilife-=1;

Sleep(150);

CBrush brush(RGB(250,150,50));

e(X1,Y1,X2,Y2);

Sleep(150);

CBrush br(RGB(255,128,0));

e(X1,Y1,X2,Y2);

sprintf(number,"%d",ilife);

lidRect(730,140,20,15,RGB(115,211,100));

olor(RGB(115,211,100));

Object(&brush);

Object(&br);

}

Object(&brush);

Object(&br);

}

tA(730,140,number);

}

chessBoard[LocationX][LocationY]=0;

break;

if (Y2+2<=560)

{

lidRect(X1,Y1,X2-X1,Y2-Y1,RGB(255,255,255));

Y1=Y1+60;

Y2=Y2+60;

LocationY+=1;

case VK_DOWN:

if(chessBoard[LocationX][LocationY]==1)

{

ilife+=1;

Sleep(150);

CBrush brush(RGB(250,150,50));

e(X1,Y1,X2,Y2);

Sleep(150);

CBrush br(RGB(255,128,0));

Object(&brush);

Object(&br);

e(X1,Y1,X2,Y2);

sprintf(number,"%d",ilife);

lidRect(730,140,20,15,RGB(115,211,100));

olor(RGB(115,211,100));

tA(730,140,number);

}

if(chessBoard[LocationX][LocationY]==3)

{

ilife-=1;

Sleep(150);

CBrush brush(RGB(250,150,50));

e(X1,Y1,X2,Y2);

Sleep(150);

CBrush br(RGB(255,128,0));

e(X1,Y1,X2,Y2);

sprintf(number,"%d",ilife);

lidRect(730,140,20,15,RGB(115,211,100));

olor(RGB(115,211,100));

tA(730,140,number);

}

Object(&brush);

Object(&br);

}

}

}

chessBoard[LocationX][LocationY]=0;

break;

e(X1,Y1,X2,Y2);

if(LocationX==9&&LocationY==9) //到底右下角成功

{

olor(RGB(115,211,100));

tColor(RGB(255,0,0));

lidRect(670,110,90,15,RGB(115,211,100));

tA(650,110,"游戏成功! ");

CFont cf;

Object(&cf);

olor(RGB(255,255,255));

tColor(RGB(255,0,0));

PointFont(800,"宋体");

tA(80,300,"游戏成功!");

}

else

{

}

if(ilife==0)

{

olor(RGB(115,211,100));

lidRect(670,110,90,15,RGB(115,211,100));

tColor(RGB(211,250,0));

tA(650,110,"GAME OVER! ");

CFont cf;

Object(&cf);

olor(RGB(255,255,255));

tColor(RGB(100,110,250));

tA(80,300,"游戏失败!");

}

PointFont(800,"宋体");

CView::OnKeyDown(nChar, nRepCnt, nFlags);

void CzzsView::On重新开始()

{

CClientDC dc(this);

lidRect(0,0,620,620,RGB(255,255,255));

for(int i=0;i<=10;i++)

{

(i*60+20,20);

(i*60+20,620);

}

for(int j=0;j<=10;j++)

{

(20,j*60+20);

(620,j*60+20);

}

CBrush brush,*pbrush;

SolidBrush(RGB(255,0,0));

pbrush=Object(&brush);

e(30,30,70,70);

SolidBrush(RGB(115,211,100));

pbrush=Object(&brush);

gle(620,20,800,620);

tColor(RGB(0,0,0));

olor(RGB(115,211,100));

tA(650,90,"游戏状态:");

tA(650,140,"生命数:");

tA(730,140,"1");

X1=30;

Y1=30;

X2=70;

Y2=70;

LocationX=0;

LocationY=0;

tA(650,110,"游戏进行中...");

ilife=1;

int r;

for (int i=0;i<10;i++)

{

}

chessBoard[0][0]=0; // 开始的位置不应有障碍

chessBoard[0][1]=0;

chessBoard[1][0]=0;

chessBoard[1][1]=0;

chessBoard[9][9]=0; // 结束的位置不应有障碍

for (int j=0;j<10;j++)

{

}

chessBoard[i][j]=0;

r=((double)rand())/RAND_MAX*10.0;

if (r>=GameLeve)

chessBoard[i][j]=3;

chessBoard[i][j]=1;

if (r<1)

}

chessBoard[9][8]=0;

chessBoard[8][9]=0;

chessBoard[8][8]=0;

for(int i=0;i<10;i++)

{

for(int j=0;j<10;j++)

{

switch(chessBoard[i][j])

{

case 1:

}

{

CBrush hp(RGB(255,128,255));//能量包

Object(&hp);

e(60*i+30,60*j+30,60*(i+1)+10,60*(j+1)+0);

Object();

}

break;

{

CBrush hp(RGB(192,192,192));

Object(&hp);

(60*i+30,60*j+30,60*(i+1)+10,60*(j+1)+10,60*i+20,60*j+70,60*i+20,60*j+30);

Object();

}

break;

}

}

case 3: //炸弹

void CzzsView::Ondiji()

{

}

void CzzsView::Onzhongji()

{

}

void CzzsView::Ongaoji()

{

}

GameLeve=5;

CzzsView::On重新开始();

GameLeve=7;

CzzsView::On重新开始();

GameLeve=9;

CzzsView::On重新开始();