游戏基础(二)

原创 2007年09月19日 23:59:00
 
1. 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、 建立单文档工程Game1。
2、 给视图(VIEW)类添加两个变量:CPoint move;、CBitmap m_Bitmap;。Move用来存放图片的位置。
3、 添加位图 IDB_BITMAP1,即狮子图象。

       

                                                                                             图1-4

 

1、 在CGame1View类的构造函数里添加如下几句:
    m_Bitmap.LoadBitmap(IDB_BITMAP1);
       move.x=70;
       move.y=70;
加载图片并初始化图片的位置。
2、 OnDraw函数修改如下:
   void CGame1View::OnDraw(CDC* pDC)
{
    CGame1Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    CDC dc;
    if(dc.CreateCompatibleDC(pDC)==FALSE) AfxMessageBox("Can't create DC");
    dc.SelectObject(m_Bitmap);
    pDC->StretchBlt(move.x,move.y,160,160,&dc,0,0,71,71,SRCCOPY);
}
进行图片显示。
3、 添加按键对应函数OnKeyDown(),这里要实现的是按下“上、下、左、右”键时图片向四个方向的运动。函数修改如下:
   void CGame1View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO: Add your message handler code here and/or call default
    switch(nChar)
    {
        case VK_LEFT:
            move.x=move.x-5;
            break;
        case VK_RIGHT:
            move.x=move.x+5;
            break;
        case VK_UP:
            move.y=move.y-5;
            break;
        case VK_DOWN:
            move.y=move.y+5;
            break;
    }
       //重画
       Invalidate();
    CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
4、 编译运行。
虽实现的功能很简单,但其他一些复杂游戏的基本原理也无非如此。
        

相关文章推荐

游戏编程之二 windows编程基础

第二章 windows编程基础     第一节 引言     为了跟上潮流,我们抛弃了已快被淘汰的DOS操作系统,所有的讲解和例程都是基于微 软的Windows操作系统的。考虑到很多的用户并没有...

游戏开发基础(二)

游戏开发编程基础第二章 三角形网格是构建物体模型的基本单元 通常网格中的三角形元素: 多边形(polygons),图元(primitives),网格几何元(mesh geometry) 描述三...
  • mmzsyx
  • mmzsyx
  • 2011年12月28日 16:41
  • 677

游戏编程基础(二)GDI透明半透明效果

半透明在游戏中通常用于若隐若现的特殊效果,如雾,隐形单位。半透明的原理是通过前景图片与背景图片像素的混合来实现的。 用公式表示即为:半透明色 = 前景色X不透明度 + 背景色X(1-不透明度) 为...
  • leogray
  • leogray
  • 2012年05月05日 01:40
  • 2071

学习《Android3D游戏开发技术宝典:OpenGL.ES.2.0》二:着色器语言基础

一:着色器语言概述         OpenGL ES 着色语言是一种高级的图形编程语言,起源自于C语言,同时具有RenderMan 以及其他着色语言的一些优良特性,易于被开发人员掌握。...

【阅读笔记之二】《DIRECTX.9.0.3D游戏开发编程基础》:基础数学知识

基础知识之数学            这一部分主要提供游戏开发所需要的数学知识的简要介绍。这是本书的预备知识。          这里的数学知识主要讨论向量(Vector)、矩阵(Matrix)...

【Visual C++】游戏开发笔记之八——基础动画显示(二)游戏循环的使用

本系列文章由zhmxy555编写,转载请注明出处。  http://blog.csdn.net/zhmxy555/article/details/7355377作者:毛星云    邮箱: happyl...
  • zhmxy555
  • zhmxy555
  • 2012年03月15日 04:15
  • 55620

【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。http://blog.csdn.net/zhmxy555/article/details/7496200作者:毛星云    邮箱: hap...
  • zhmxy555
  • zhmxy555
  • 2012年05月06日 02:05
  • 26830

游戏开发笔记之八——基础动画显示(二)游戏循环的使用

在笔记七中我们讲解了用定时器来产生动画的效果。定时器的使用固然简单方便,但是事实上这样的方法仅适合用在显示简易动画及小型的游戏程序中。因为一般而言,游戏本身需要显示顺畅的游戏画面,使玩家感觉不到延迟的...

【Visual C++】游戏开发笔记二十三 游戏基础物理建模(五) 粒子系统模拟(二)

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。http://blog.csdn.net/zhmxy555/article/details/7607916作者:毛星云    邮箱: hap...
  • zhmxy555
  • zhmxy555
  • 2012年05月28日 04:15
  • 36253
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:游戏基础(二)
举报原因:
原因补充:

(最多只允许输入30个字)