资源描述:
《windows上mfc游戏编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一章游戏基础 一动画 游戏是动画的延伸,只要知道了动画的原理,在动画变化时,使它根据键盘或鼠标的输入操作而变化,就是游戏了。所以在介绍游戏编程之前,先讲讲动画。动画一般分三种形式:形变、位变、色变。如下: 1.1.形变 即几种形状的图形或位图依次转变而成。(图1-1)图1-1 先看一个简单的实例:a.a. 新建工程1_1,选择单文档,完成。b.b. 在view类加变量intituxing,并在构造函数里赋值为ituxing=0;c.c. 在OnDraw(CDC*pDC)函数上添上以下语句
2、:voidCMy1_1View::OnDraw(CDC*pDC){CMy1_1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahere//清除当前图形CBrushmybrush1;mybrush1.CreateSolidBrush(RGB(255,255,255));CRectmyrect1(0,0,1024,768);pDC->FillRect(myrect1,&mybrush1);//判断当前图形ituxing
3、if(ituxing==1)//ituxing=1,画矩形pDC->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(LPCREATESTRUC
4、TlpCreateStruct),并加上语句如下:voidCMy1_1View::OnTimer(UINTnIDEvent){//TODO:Addyourmessagehandlercodehereand/orcalldefault//获取指针pdcCDC*pDC=GetDC();//调用OnDraw(pDC)重画OnDraw(pDC);//使ituxing循环ituxing=(ituxing+1)%3; CView::OnTimer(nIDEvent);} intCMy1_1View::OnCreate(LP
5、CREATESTRUCTlpCreateStruct){if(CView::OnCreate(lpCreateStruct)==-1)return-1;//TODO:Addyourspecializedcreationcodehere//设置更新时间SetTimer(1,750,NULL);return0;}a.e. 完成。 1.2.位变 即同一个图形或位图依次在不同的位置上出现而形成动画。(图1-2) 图1-2 见实例1_2:a.a. 复制实例1_1文件夹,改名为1_2。把voidCMy1_1Vie
6、w::OnTimer(UINTnIDEvent)中的ituxing=(ituxing+1)%3;改为ituxing=(ituxing+1)%10;b.b. 把OnDraw(CDC*pDC)函数改为:voidCMy1_1View::OnDraw(CDC*pDC){CMy1_1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahere//清除当前图形CBrushmybrush1;mybrush1.CreateS
7、olidBrush(RGB(255,255,255));CRectmyrect1(0,0,1024,768);pDC->FillRect(myrect1,&mybrush1); //用当前图形位置ituxing//画圆pDC->Ellipse(30*ituxing,30*ituxing,30*ituxing+50,30*ituxing+50);}a.c. 执行,OK!1.3. 色变 即利用不同颜色的转变而形成有动感的图画。(图1-3)图1-3 实例1_3:a.a. 新建单文档工程1_3。b
8、.b. 添加参数inticolor并赋值为0。c.c. 添加函数OnTimer(UINTnIDEvent)和OnCreate(LPCREATESTRUCTlpCreateStruct),并添加语句如下: voidCMy1_3View::OnTimer(UINTnIDEvent){//TODO:Addyourmessagehandlercodehereand/orca