VC++游戏编程最基础教程.pdf
《VC++游戏编程最基础教程.pdf》由会员分享,可在线阅读,更多相关《VC++游戏编程最基础教程.pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章VC+游戏编程最基础教程学习各种高级外挂制作技术,马上去百度搜索(魔鬼作坊),点击第一个站进入,快速成为做挂达人。一动画游戏是动画的延伸,只要知道了动画的原理,在动画变化时,使它根据键盘或鼠标的输入操作而变化,就是游戏了。所以在介绍游戏编程之前,先讲讲动画。动画一般分三种形式:形变、位变、色变。如下:1 1 1 1 1 1 1 1 形变形变即几种形状的图形或位图依次转变而成。(图 1-1)图 1-1先看一个简单的实例:a a 新建工程 1_1,选择单文档,完成。b b 在 view 类加变量intituxing,并在构造函数里赋值为 ituxing=0;c c 在 OnDraw(CDC*
2、pDC)函数上添上以下语句:void CMy1_1View:OnDraw(CDC*pDC)CMy1_1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);/TODO:add draw codefor native datahere/清除当前图形CBrush mybrush1;mybrush1.CreateSolidBrush(RGB(255,255,255);CRect myrect1(0,0,1024,768);pDC-FillRect(myrect1,&mybrush1);/判断当前图形 ituxingif(ituxing=1)/ituxing=1,画矩形p
3、DC-Rectangle(20,20,89,89);elseif(ituxing=2)/ituxing=2,画圆pDC-Ellipse(20,20,89,89);else/否则,画三角形pDC-MoveTo(20,20);pDC-LineTo(89,45);pDC-LineTo(20,89);pDC-LineTo(20,20);d d 添 加 OnTimer(UINTnIDEvent)和 OnCreate(LPCREATESTRUCTlpCreateStruct),并加上语句如下:void CMy1_1View:OnTimer(UINT nIDEvent)/TODO:Add your mess
4、age handler codehere and/or call default/获取指针 pdcCDC*pDC=GetDC();/调用 OnDraw(pDC)重画OnDraw(pDC);/使 ituxing 循环ituxing=(ituxing+1)%3;CView:OnTimer(nIDEvent);intCMy1_1View:OnCreate(LPCREATESTRUCT lpCreateStruct)if(CView:OnCreate(lpCreateStruct)=-1)return-1;/TODO:Add your specialized creation codehere/设置更
5、新时间SetTimer(1,750,NULL);return 0;e e 完成。2 2 2 2 2 2 2 2 位变位变即同一个图形或位图依次在不同的位置上出现而形成动画。(图 1-2)图 1-2见实例 1_2:a.a.复制实例 1_1 文件夹,改名为 1_2。把voidCMy1_1View:OnTimer(UINTnIDEvent)中 的ituxing=(ituxing+1)%3;改 为ituxing=(ituxing+1)%10;b.b.把 OnDraw(CDC*pDC)函数改为:void CMy1_1View:OnDraw(CDC*pDC)CMy1_1Doc*pDoc=GetDocume
6、nt();ASSERT_VALID(pDoc);/TODO:add draw codefor native datahere/清除当前图形CBrush mybrush1;mybrush1.CreateSolidBrush(RGB(255,255,255);CRect myrect1(0,0,1024,768);pDC-FillRect(myrect1,&mybrush1);/用当前图形位置 ituxing/画圆pDC-Ellipse(30*ituxing,30*ituxing,30*ituxing+50,30*ituxing+50);c.c.执行,OK!3 3 色变色变即利用不同颜色的转变而形
7、成有动感的图画。(图 1-3)图 1-3实例 1_3:a.a.新建单文档工程 1_3。b.b.添加参数inticolor 并赋值为 0。c.c.添 加函 数 OnTimer(UINT nIDEvent)和 OnCreate(LPCREATESTRUCTlpCreateStruct),并添加语句如下:void CMy1_3View:OnTimer(UINT nIDEvent)/TODO:Add your message handler codehere and/or call defaulticolor+=1;/此函数使客户区失效,以致重画Invalidate();CView:OnTimer(n
8、IDEvent);intCMy1_3View:OnCreate(LPCREATESTRUCT lpCreateStruct)if(CView:OnCreate(lpCreateStruct)=-1)return-1;/TODO:Add your specialized creation codehereSetTimer(1,750,NULL);return 0;d.d.最后在 OnDraw(CDC*pDC)加上画圆语句:void CMy1_3View:OnDraw(CDC*pDC)CMy1_3Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);/TODO:add
9、 draw codefor native datahere/获取 icolor 值inti=icolor;/在不同位置画四个不同颜色的圆CBrush brush1(RGB(20+(64*i)%255,140+(64*i)%255,210*(64+i)%255);CBrush*pOldBrush1=pDC-SelectObject(&brush1);pDC-Ellipse(300,200,350,250);pDC-SelectObject(pOldBrush1);CBrush brush2(RGB(84+(64*i)%255,204+(64*i)%255,24+(64*i)%255);CBrus
10、h*pOldBrush2=pDC-SelectObject(&brush2);pDC-Ellipse(350,200,400,250);pDC-SelectObject(pOldBrush2);CBrush brush3(RGB(148+(64*i)%255,14+(64*i)%255,88+(64*i)%255);CBrush*pOldBrush3=pDC-SelectObject(&brush3);pDC-Ellipse(300,250,350,300);pDC-SelectObject(pOldBrush3);CBrush brush4(RGB(212+(64*i)%255,78+(64
11、*i)%255,152+(64*i)%255);CBrush*pOldBrush4=pDC-SelectObject(&brush4);pDC-Ellipse(350,250,400,300);pDC-SelectObject(pOldBrush4);e.e.完成。以上是三种最基本的动画。当然,具体情况不会这么简单,而往往的其中二或三种的复杂的结合。而作为游戏,它的关键在:在动画的基础上加一些主观的操作。如先画一个球,然后用方向键或鼠标移动。如实例 1_4:a.a.新建单文档工程 1_4。b.b.添加半径和圆心intir;/半径CPoint center;/圆心在 CMy1_4View()中赋
12、值如下:CMy1_4View:CMy1_4View()/TODO:add construction codeherecenter.x=400;center.y=200;ir=50;c.c.在 OnDraw(CDC*pDC)函数中画圆void CMy1_4View:OnDraw(CDC*pDC)CMy1_4Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);/TODO:add draw codefor native datahere/画圆pDC-Ellipse(center.x-ir,center.y-ir,center.x+ir,center.y+ir);d.d
13、.添加 OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags),使它按照键盘方向键的操作而移动圆的位置。如下:void CMy1_4View:OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags)/TODO:Add your message handler codehere and/or call default/利用方向键左右上下移动 20switch(nChar)caseVK_LEFT:center.x-=20;break;caseVK_RIGHT:center.x+=20;break;caseVK_UP:cent
14、er.y-=20;break;caseVK_DOWN:center.y+=20;break;/重画Invalidate();CView:OnKeyDown(nChar,nRepCnt,nFlags);e.e.执行,看看效果,你就可以操纵了。f.f.那么,利用鼠标又是怎样操作呢?添加 OnLButtonDown(UINT nFlags,CPointpoint)如下:void CMy1_4View:OnLButtonDown(UINT nFlags,CPoint point)/TODO:Add your message handler codehere and/or call default/把圆
15、移动鼠标指定位置/圆心赋值为 pointcenter=point;/重画Invalidate();CView:OnLButtonDown(nFlags,point);g.g.再执行,你现在键盘鼠标都可以操作了。真正的游戏,也就是以上简单的图形或位图的复杂化和简单操作的复杂化而已。二部分图更新既然游戏是动画,就离不开“动”,而所谓“动”,就是利用画面的刷新,用新的要求的图画或位置去代替原先的图画或位置。图画储存在哪里?内存。画图需要什么?系统资源。而它们有什么关系?成正比。为什么说这些呢?因为这关系到游戏编程一个极大的问题:速度!上面那些简单的例子,我们是怎样实现的呢?不就是利用一个控制时间的函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 游戏 编程 基础教程
限制150内