- 浏览: 146824 次
- 性别:
- 来自: 广州
最新评论
-
yinren13:
说的便捷的视频会议,我们公司的遥控器一按就能开始的视频会议tu ...
便捷视频会议 -
xujinquan19:
...
可视通讯与移植、跨平台开发 -
xujinquan19:
...
Android 平台下的即时通讯 -
xujinquan19:
...
Android 平台下的即时通讯 -
xujinquan19:
...
Android 平台下的即时通讯
入门篇:
游戏是动画的延伸,只要知道了动画的原理,在动画变化时,使它根据键盘或鼠标的输入操作而变化,就是游戏了。 所以在介绍游戏编程之前,先讲讲动画。 动画一般分三种形式:形变、位变、色变。如下: 1. 形变 即几种形状的图形或位图依次转变而成。(图1-1) 图1-1 先看一个简单的实例: a. 新建工程1_1,选择单文档,完成。 b. 在view类加变量int ituxing,并在构造函数里赋值为ituxing=0; c. 在OnDraw(CDC* pDC)函数上添上以下语句: void CMy1_1View::OnDraw(CDC* pDC) { CMy1_1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here //清除当前图形 CBrush mybrush1; mybrush1.CreateSolidBrush(RGB(255,255,255)); CRect myrect1(0,0,1024,768); pDC->FillRect(myrect1,&mybrush1); //判断当前图形ituxing if(ituxing==1) //ituxing=1,画矩形 pDC->Rectangle(20,20,89,89); else if(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(UINT nIDEvent)和OnCreate(LPCREATESTRUCT lpCreateStruct),并加上语句如下: void CMy1_1View::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default //获取指针pdc CDC *pDC=GetDC(); //调用OnDraw(pDC)重画 OnDraw(pDC); //使ituxing循环 ituxing=(ituxing+1)%3; CView::OnTimer(nIDEvent); } int CMy1_1View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here //设置更新时间 SetTimer(1, 750, NULL); return 0; } e. 完成。 2. 位变 即同一个图形或位图依次在不同的位置上出现而形成动画。(图1-2) 图 1-2 见实例1_2: a. 复制实例1_1文件夹,改名为1_2。 把void CMy1_1View::OnTimer(UINT nIDEvent)中的ituxing=(ituxing+1)%3;改为ituxing=(ituxing+1)%10; b. 把OnDraw(CDC* pDC)函数改为: void CMy1_1View::OnDraw(CDC* pDC) { CMy1_1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here //清除当前图形 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. 执行,OK! 3. 色变 即利用不同颜色的转变而形成有动感的图画。(图1-3) 图1-3 实例1_3: a. 新建单文档工程1_3。 b. 添加参数int icolor并赋值为0。 c. 添加函数OnTimer(UINT nIDEvent)和OnCreate(LPCREATESTRUCT lpCreateStruct),并添加语句如下: void CMy1_3View::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default icolor+=1; //此函数使客户区失效,以致重画 Invalidate(); CView::OnTimer(nIDEvent); } int CMy1_3View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here SetTimer(1,750,NULL); return 0; } d. 最后在OnDraw(CDC* pDC)加上画圆语句: void CMy1_3View::OnDraw(CDC* pDC) { CMy1_3Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here //获取icolor值 int i=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)); CBrush*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*i)%255,152+(64*i)%255)); CBrush*pOldBrush4=pDC->SelectObject(&brush4); pDC->Ellipse(350,250,400,300); pDC->SelectObject(pOldBrush4); } e. 完成。 以上是三种最基本的动画。当然,具体情况不会这么简单,而往往的其中二或三种的复杂的结合。 而作为游戏,它的关键在:在动画的基础上加一些主观的操作。如先画一个球,然后用方向键或鼠标移动。如实例1_4: a. 新建单文档工程1_4。 b. 添加半径和圆心 int ir;//半径 CPoint center;//圆心 在CMy1_4View()中赋值如下: CMy1_4View::CMy1_4View() { // TODO: add construction code here center.x=400; center.y=200; ir=50; } c. 在OnDraw(CDC* pDC)函数中画圆 void CMy1_4View::OnDraw(CDC* pDC) { CMy1_4Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here //画圆 pDC->Ellipse(center.x-ir,center.y-ir,center.x+ir,center.y+ir); } d. 添加OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags),使它按照键盘方向键的操作而移动圆的位置。如下: void CMy1_4View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default //利用方向键左右上下移动20 switch(nChar) { case VK_LEFT: center.x-=20; break; case VK_RIGHT: center.x+=20; break; case VK_UP: center.y-=20; break; case VK_DOWN: center.y+=20; break; } //重画 Invalidate(); CView::OnKeyDown(nChar, nRepCnt, nFlags); } e. 执行,看看效果,你就可以操纵了。 f. 那么,利用鼠标又是怎样操作呢?添加OnLButtonDown(UINT nFlags, CPoint point)如下: void CMy1_4View::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default //把圆移动鼠标指定位置 //圆心赋值为point center=point; //重画 Invalidate(); CView::OnLButtonDown(nFlags, point); } g. 再执行,你现在键盘鼠标都可以操作了。 真正的游戏,也就是以上简单的图形或位图的复杂化和简单操作的复杂化而已。
………………………………………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………
//
//
//学好入门篇之后,再来下载全部的经典游戏源码,保证你成为一个高级的游戏开发专家!!!!
发表评论
-
手机视频会议
2012-11-16 14:03 823在这个时代,手机被开发者们所赋予的意义已经远远超出了大众的期望 ... -
视频通讯demo源码
2012-11-09 15:23 1127以下为anychat视频通讯系统中的部分回调函数源码: 具体 ... -
音视频对话开发
2012-09-20 17:21 719AnyChat for Android是佰锐科技继2010年发 ... -
浅谈网络语音技术
2012-08-31 14:35 926浅谈网络语音技术 当我们使用像Sky ... -
H.264视频编码标准在网络视频监控系统中的应用 .
2012-08-24 15:13 932【摘 要】本文介绍了ITU-T最新高性能视频压缩标准H.264 ... -
安卓平台下的即时通讯
2012-08-24 15:12 952基于Android 平台简易即时通讯的研究与设计 摘要 ... -
手机音视频应用开发(专注于Symbian、iPhone、Android等跨平台音视频应用开发方案)
2012-08-24 14:47 1128一款好的手机应用, 能让用户在第一分钟就爱上他, 一款烂的手 ... -
手机视频通讯开发
2012-08-24 14:46 796如今,3G网络快速发展 ... -
音视频点播直播系统
2012-08-20 10:32 1455音视频点播直 ... -
网络游戏与实时视频结合,拉动网游的进步 .
2012-08-20 09:58 7892011年被称为中国网络 ... -
android视频开发
2012-08-16 17:31 1001摘要:论文简单介绍Android 平台的特性,主要阐述了基于A ... -
android视频聊天软件推荐
2012-08-15 17:00 1040正在当前那个社会 ... -
音视频交流服务系统
2012-03-15 16:22 887下面的这个平台是一种视频服务的应用,比如A(客户端)打视频电话 ... -
音视频开发平台
2012-03-15 16:12 815近日,腾讯公司发布了Q ... -
即时通讯开发平台(音视频)
2012-03-15 16:11 908近日,腾讯公司发布了Q ... -
视频开发与视讯系统的选择
2012-02-22 12:08 940随着Internet的发展,宽 ... -
手机视频之营销模式
2012-02-16 10:43 8793G时代的逼近,手机视 ... -
手机视频应用开发
2011-12-30 14:56 765AnyChat for Android是佰锐科技继2010年发 ... -
手机移动终端与PC进行音视频聊天和监控的开发
2011-11-08 11:15 980针对目前市场 ... -
音视频通讯、视频电话介绍
2011-08-04 18:03 787远程视频,可以拉近人们遥远的距离,天南地北,只需要一个网络一台 ...
相关推荐
vc 数据库开发技术vc 数据库开发技术vc 数据库开发技术vc 数据库开发技术vc 数据库开发技术vc 数据库开发技术vc 数据库开发技术vc 数据库开发技术
VC实现的游戏开发程序实例 VC实现的游戏开发程序实例 VC实现的游戏开发程序实例
vc游戏编程,vc游戏编程 vc游戏编程,vc游戏编程
VC游戏开发俄罗斯方块,讲解俄罗斯方块制作关键技术。
vc6.0游戏开发,是实例很适合大家学习!
用VC软件开发的建设银行界面系统可以实现取款、转账,修改密码等功能,希望初学者可以学习,演练 用VC软件开发的建设银行界面系统可以实现取款、转账,修改密码等功能,希望初学者可以学习,演练用VC软件开发的建设...
VC6.0从开发activex ocx控件到发布到网上全 过 程
VC数据库开发VC数据库开发VC数据库开发VC数据库开发
教你如何用VC开发GIS系统,书中内容:VC基础,VC数据库,GIS矢量图形开发,GIS空间数据库,vc图形处理,图元的序列化,等
VC游戏开发源代码。学习VC很不错的示例源代码。
VC6.0编程实例 软件开发过程文档 VC界面类编程
学VC编游戏,图文并茂从简单到复杂教你如何做一个有完整框架的游戏。即使是初学者也能看懂的好书
介绍用vc来开发游戏得过程和主要技术,从入门到游戏开发中得各项技术只是
C++ VC 2D游戏 Win32 cards
我就是看着这个傻瓜教程做的,vc6开发activex并发布全攻略
用VC6做推箱子游戏开发,本资源提供所有需要的文件
用VC开发CGI 用VC开发CGI 用VC开发CGI 用VC开发CGI
这写代码都是VC经典游戏设计里面的好几个小游戏的代码,比较好,我曾经都是按照这些代码来写的自己的小游戏,嘿嘿...
游戏开发包一 vc c++ 游戏 开发 dx
vc6开发类似雷电游戏源码 主要包含:GameEngine,Bitmap 等类