C++编程实例大作业.docx

上传人:b****8 文档编号:8818070 上传时间:2023-02-01 格式:DOCX 页数:28 大小:37.82KB
下载 相关 举报
C++编程实例大作业.docx_第1页
第1页 / 共28页
C++编程实例大作业.docx_第2页
第2页 / 共28页
C++编程实例大作业.docx_第3页
第3页 / 共28页
C++编程实例大作业.docx_第4页
第4页 / 共28页
C++编程实例大作业.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C++编程实例大作业.docx

《C++编程实例大作业.docx》由会员分享,可在线阅读,更多相关《C++编程实例大作业.docx(28页珍藏版)》请在冰豆网上搜索。

C++编程实例大作业.docx

C++编程实例大作业

C++大作业

是男人就下100层编程实例

打开VC++6.0,创建一个win32application工程,名字随便取,新建一个C++sourcefile文件复选添加到工程选项

在C++sourcefile添加如下代码

#include

#include

#include

#include

HINSTANCEhInst;

constintDLou=6;//楼层数

intCJieTi[DLou+1]={1,2,3,3,4,4,2};//阶梯类型

intLJieTi[DLou+1];//阶梯左边距

intHJieTi[DLou+1];//阶梯高度

intWJieTi[DLou+1];//阶梯宽度

intXJieTi[DLou+1];//阶梯左上脚X坐标

intYJieTi[DLou+1];//阶梯左上脚Y坐标

intTJieTi[DLou+1];//阶梯的个性数据

constintVY_JieTi=5;

constintRefreshTime=100;//刷新时间

constintAY_Num=5;

constintVX_Num=20;

constintVY_TH=26;

intzt=0;//游戏是否开始=0等待开始=1正在进行中=2结束了

staticcharText[100];

constintFixTime=12;//计算时间片

intVX=0;//X方向速度

intVY=-VY_JieTi;//Y方向速度

intAY=0;//Y方向的加速度

intManX;//角色的X坐标

intManY;//角色的Y坐标

intOManX,OManY;

intpz;

intpztime;

constintGameWindowWidth=411;//游戏窗口的有效区域宽度

constintGameWindowHeight=535;//游戏窗口的有效区域高度

constintGameTopHeight=23;//游戏的有效区域上部提示信息区宽度

constintGameMainHeight=495;//游戏主区域高度

constintGameMainWidth=376;//游戏主区域宽度

constintManWidth=16;//角色的宽度

constintManHeight=16;//角色的高度

constintDYLou=5;//楼层Y方向均分数

constintDJieTi=10;//每层分数

constintDXJieTi=3;//阶梯X方向均分数

constintVX_TS=3;

intvx_ts=0;

intLife=10;//角色的生命值

intNum=0;

intNum_time;

staticHBITMAPRoleBmp;

staticHBITMAPDingZiBmp;

staticHBITMAPLCBmp;

staticHBITMAPJieTiBmp[6];

staticHBITMAPhMemBmp;//图像缓存

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

intIsJiaCeng();//判断是否需要加一层阶梯

inton(int);

intInit();

intFixMan();//处理人物的函数

HWNDhwnd;

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,

LPSTRlpcmdLine,intnCmdShow)

{

hInst=hInstance;

staticTCHARszAppName[]=TEXT("DisplayWithScrollBar");

staticTCHARszClassName[]=TEXT("DisplayWithscrlBarClass");

MSGmsg;

WNDCLASSwndclass;

wndclass.style=CS_HREDRAW|CS_VREDRAW;

wndclass.lpfnWndProc=WndProc;

wndclass.cbClsExtra=0;

wndclass.cbWndExtra=0;

wndclass.hInstance=hInstance;

wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);

wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);

wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

wndclass.lpszMenuName=NULL;

wndclass.lpszClassName=szClassName;

//注册窗口类

if(!

RegisterClass(&wndclass))

{

MessageBox(NULL,TEXT("ThispromgramerequiresWindowsNT"),szAppName,MB_ICONERROR);

return0;

}

//创建窗口

hwnd=CreateWindow(

szClassName,

TEXT("是男人就下100层"),

//创建窗口时,添加了WS_VSCROLL风格,以增加垂直滚动条

WS_OVERLAPPEDWINDOW,

50,

100,

420,

571,

NULL,

NULL,

hInstance,

NULL);

//显示窗口

ShowWindow(hwnd,nCmdShow);

//更新窗口

UpdateWindow(hwnd);

//消息循环

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

returnmsg.wParam;

}

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)

{RECTrect;

staticHDChdc,hdc_Role,hdc_JieTi,hdc_lp,hdc_dz;

staticHDCMemDC;

PAINTSTRUCTps;

inti,j;

staticHPENhpen_black,hpen_blue,hpen_red,hpen_gray;

staticHBRUSHhbrush_black,hbrush_blue,hbrush_red,hbrush_gray;

staticintnClientWidth,nClientHeight;//窗口宽高

hpen_black=CreatePen(PS_SOLID,2,RGB(255,255,255));

switch(message)

{

caseWM_CREATE:

/*DC初始化*/

hdc=GetDC(hwnd);

GetClientRect(hwnd,&rect);

nClientWidth=rect.right-rect.left;

nClientHeight=rect.bottom-rect.top;

hdc_Role=CreateCompatibleDC(hdc);

hdc_JieTi=CreateCompatibleDC(hdc);

hdc_lp=CreateCompatibleDC(hdc);

hdc_dz=CreateCompatibleDC(hdc);

MemDC=CreateCompatibleDC(hdc);

/*初始化临时画布必须*/

hMemBmp=CreateCompatibleBitmap(hdc,nClientWidth,nClientHeight);

SelectObject(hdc_Role,hMemBmp);

SelectObject(hdc_JieTi,hMemBmp);

SelectObject(hdc_lp,hMemBmp);

SelectObject(hdc_dz,hMemBmp);

/*载入人物的图片*/

RoleBmp=(HBITMAP)LoadImage(hInst,"Res\\man.bmp",

IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

JieTiBmp[0]=(HBITMAP)LoadImage(hInst,"Res\\smallTile5.bmp",

IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

JieTiBmp[1]=(HBITMAP)LoadImage(hInst,"Res\\SPRING_SELF.bmp",

IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

JieTiBmp[2]=(HBITMAP)LoadImage(hInst,"Res\\smallTeeth3.bmp",

IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

JieTiBmp[3]=(HBITMAP)LoadImage(hInst,"Res\\TRANSPORT_RIGHT_SELF.bmp",

IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

JieTiBmp[4]=(HBITMAP)LoadImage(hInst,"Res\\TRANSPORT_LEFT_SELF.bmp",

IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

LCBmp=(HBITMAP)LoadImage(hInst,"Res\\tile1.bmp",

IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

DingZiBmp=(HBITMAP)LoadImage(hInst,"Res\\dingzi.bmp",

IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

Init();

return0;

caseWM_PAINT:

hdc=BeginPaint(hwnd,&ps);

SelectObject(hdc,hpen_black);

SetTextColor(hdc,RGB(207,49,211));

SetBkMode(hdc,TRANSPARENT);

sprintf(Text,"LIFE:

%2d第%8d层,核桃(QQ:

2410250284)",Life,Num);

TextOut(hdc,25,0,Text,51);

/*绘制游戏界面的边界*/

MoveToEx(hdc,0,GameWindowHeight,NULL);

LineTo(hdc,GameWindowWidth,GameWindowHeight);

MoveToEx(hdc,GameWindowWidth,GameWindowHeight,NULL);

LineTo(hdc,GameWindowWidth,0);

/*绘制横纵向分区*/

/*

MoveToEx(hdc,0,GameTopHeight,NULL);

LineTo(hdc,GameWindowWidth,GameTopHeight);

MoveToEx(hdc,(GameWindowWidth-GameMainWidth)/2,GameTopHeight,NULL);

LineTo(hdc,(GameWindowWidth-GameMainWidth)/2,GameWindowHeight);

MoveToEx(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameTopHeight,NULL);

LineTo(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameWindowHeight);

MoveToEx(hdc,(GameWindowWidth-GameMainWidth)/2,GameTopHeight,NULL);

LineTo(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameTopHeight);

MoveToEx(hdc,(GameWindowWidth-GameMainWidth)/2,GameWindowHeight-GameMainHeight,NULL);

LineTo(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameWindowHeight-GameMainHeight);

*/

/*绘制辅助边界*/

/*

for(i=0;i<=DLou-1;i++)

{

MoveToEx(hdc,(GameWindowWidth-GameMainWidth)/2,GameWindowHeight-GameMainHeight+i*GameMainHeight/DLou,NULL);

LineTo(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameWindowHeight-GameMainHeight+i*GameMainHeight/DLou);

}

for(i=0;i<=DJieTi-1;i++)

{

MoveToEx(hdc,(GameWindowWidth-GameMainWidth)/2+(i+1)*GameMainWidth/DJieTi,GameWindowHeight-GameMainHeight,NULL);

LineTo(hdc,(GameWindowWidth-GameMainWidth)/2+(i+1)*GameMainWidth/DJieTi,GameWindowHeight);

}

*/

/*开始载入人物*/

SelectObject(hdc_Role,RoleBmp);

BitBlt(hdc,OManX,OManY,16,16,hdc_Role,0,0,SRCCOPY);

/*开始载入左右边带动条*/

SelectObject(hdc_lp,LCBmp);

BitBlt(hdc,0,GameTopHeight,(GameWindowWidth-GameMainWidth)/2,GameWindowHeight-GameTopHeight,hdc_lp,0,0,SRCCOPY);

BitBlt(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameTopHeight,(GameWindowWidth-GameMainWidth)/2,GameWindowHeight-GameTopHeight,hdc_lp,0,0,SRCCOPY);

/*绘制上面的钉子*/

SelectObject(hdc_dz,DingZiBmp);

BitBlt(hdc,(GameWindowWidth-GameMainWidth)/2,GameTopHeight,GameMainWidth,GameWindowHeight-GameTopHeight-GameMainHeight,hdc_dz,5,0,SRCCOPY);

/*开始绘制阶梯*/

for(i=0;i<=DLou-1;i++)

{

if(CJieTi[i]==0)

{

SelectObject(hdc_JieTi,JieTiBmp[0]);

//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE);

BitBlt(hdc,XJieTi[i],YJieTi[i],WJieTi[i],HJieTi[i],hdc_JieTi,0,0,SRCCOPY);

}

elseif(CJieTi[i]==1)

{

SelectObject(hdc_JieTi,JieTiBmp[1]);

//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE);

BitBlt(hdc,XJieTi[i],YJieTi[i],WJieTi[i],HJieTi[i],hdc_JieTi,0,0,SRCCOPY);

}

elseif(CJieTi[i]==2)

{

SelectObject(hdc_JieTi,JieTiBmp[2]);

//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE);

BitBlt(hdc,XJieTi[i],YJieTi[i],WJieTi[i],HJieTi[i],hdc_JieTi,0,0,SRCCOPY);

}

elseif(CJieTi[i]==3)

{

SelectObject(hdc_JieTi,JieTiBmp[3]);

//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE);

BitBlt(hdc,XJieTi[i],YJieTi[i],WJieTi[i],HJieTi[i],hdc_JieTi,0,0,SRCCOPY);

}

elseif(CJieTi[i]==4)

{

SelectObject(hdc_JieTi,JieTiBmp[4]);

//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE);

BitBlt(hdc,XJieTi[i],YJieTi[i],WJieTi[i],HJieTi[i],hdc_JieTi,0,0,SRCCOPY);

}

else

{

SelectObject(hdc_JieTi,JieTiBmp[0]);

//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE);

BitBlt(hdc,XJieTi[i],YJieTi[i],WJieTi[i],HJieTi[i],hdc_JieTi,0,0,NOTSRCCOPY);

}

}

//释放DC

ReleaseDC(hwnd,hdc_Role);

ReleaseDC(hwnd,hdc_JieTi);

ReleaseDC(hwnd,hdc_lp);

ReleaseDC(hwnd,hdc_dz);

ReleaseDC(hwnd,MemDC);

if(zt==0)

{

SetBkColor(hdc,RGB(0,0,0));

SetBkMode(hdc,OPAQUE);

sprintf(Text,"按任意键开始游戏");

TextOut(hdc,125,250,Text,16);

}

if(zt==2)

{

SetBkColor(hdc,RGB(0,0,0));

SetBkMode(hdc,OPAQUE);

sprintf(Text,"按任意键重新开始游戏");

TextOut(hdc,120,250,Text,20);

}

ReleaseDC(hwnd,hdc);

EndPaint(hwnd,&ps);

return0;

caseWM_TIMER:

Num_time++;

//时间函数,重难点

for(i=0;i<=DLou-1;i++)

{

YJieTi[i]-=VY_JieTi;

if(CJieTi[i]==3||CJieTi[i]==4)

{

TJieTi[i]++;

if(TJieTi[i]==3)

TJieTi[i]=0;

}

}

if(OManX+VX+vx_ts<(GameWindowWidth-GameMainWidth)/2)

ManX=(GameWindowWidth-GameMainWidth)/2;

elseif(OManX+VX+vx_ts+ManWidth>GameWindowWidth-(GameWindowWidth-GameMainWidth)/2)

ManX=GameWindowWidth-(GameWindowWidth-GameMainWidth)/2-ManWidth;

else

ManX=OManX+VX+vx_ts;

VY+=AY;

ManY=OManY+VY;

if(ManY>GameWindowHeight)

Life=0;

if(ManY

Life=0;

/*最难的人物处理函数*/

IsJiaCeng();

FixMan();

if(Life==0)

{

KillTimer(hwnd,1);

zt=2;

}

InvalidateRect(hwnd,NULL,true);

UpdateWindow(hwnd);

return0;

caseWM_KEYDOWN:

if(zt!

=1)

{

SetTimer(hwnd,1,RefreshTime,NULL);

zt=1;

Init();

}

if(zt==1)

{

switch(wParam)

{

caseVK_LEFT:

VX=-VX_Num;break;

caseVK_RIGHT:

VX=VX_Num;break;

}

}

return0;

caseWM_KEYUP:

switch(wParam)

{

caseVK_LEFT:

VX=0;break;

caseVK_RIGHT:

VX=0;break;

}

return0;

caseWM_DESTROY:

PostQuitMessage(0);

return0;

}

returnDefWindowProc(hwnd,message,wParam,lParam);

}

intFixMan()

{

intJiaoX=0;

intJiaoY=0;

inti;

/*最难的碰撞部分已经解决*/

for(i=0;i

{

if(OManY+ManHeightYJieTi[i]&&JiaoY==0)

JiaoX=OManX+int(float((YJieTi[i]+VY_JieTi-OManY-ManHeight)*(ManX-OManX))/float(ManY-OManY+VY_JieTi));

if(JiaoX>XJieTi[i]+WJieTi[i]||JiaoX+ManWidth

{

JiaoX=0;

JiaoY=0;

}

else

{

JiaoY=YJieTi[i];

pz=i;

pztime=1;

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1