如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第一章游戏基础一动画游戏是动画的延伸,只要知道了动画的原理,在动画变化时,使它根据键盘或鼠标的输入操作而变化,就是游戏了。所以在介绍游戏编程之前,先讲讲动画。动画一般分三种形式:形变、位变、色变。如下:1.形变即几种形状的图形或位图依次转变而成。(图1-1)图1-1先看一个简单的实例:a.新建工程1_1,选择单文档,完成。b.在view类加变量intituxing,并在构造函数里赋值为ituxing=0;c.在OnDraw(CDC*pDC)函数上添上以下语句: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);//判断当前图形ituxingif(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.添加OnTimer(UINTnIDEvent)和OnCreate(LPCREATESTRUCTlpCreateStruct),并加上语句如下: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(LPCREATESTRUCTlpCreateStruct){if(CView::OnCreate(lpCreateStruct)==-1)return-1;//TODO:Addyourspecializedcreationcodehere//设置更新时间SetTimer(1,750,NULL);return0;}e.完成。2.位变即同一个图形或位图依次在不同的位置上出现而形成动画。(图1-2)图1-2见实例1_2:a.复制实例1_1文件夹,改名为1_2。把voidCMy1_1View::OnTimer(UINTnIDEvent)中的ituxing=(ituxing+1)%3;改为ituxing=(ituxing+1)%10;b.把OnDraw(CDC*pDC)函数改为: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//画圆pDC->Ellipse(30*ituxing,30*ituxing,30*ituxing+50,30*ituxing+50);}c.执行,OK!3.色变即利用不同颜色的转变而形成有动感的图画。(图1-3)图1-3实例1_3:a.新建单文档工程1_3。b.添加参数inticolor并赋值为0。c.添加函数OnTimer(UINTnIDEvent)和OnCreate(LPCREATESTRUCTlpCreateStr