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重新开始();
发布评论