游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1514|回复: 1

无聊发一个

[复制链接]

3

主题

50

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2007-1-24 23:06:00 | 显示全部楼层 |阅读模式
其实要使图片运行起来,[directdraw就是使图片运行起来]
就要经过
初始化-〉创建页面-〉BIT-> 换页处理
的过程

注意几个函数

BOOL InitDDraw(void)
  //初始化函数这个基本可以照抄


void Flip(void)
//换页

void FreeDDraw( void )
//将初始化的对象清空掉

我其实也忘记当初做这个A10girl的做法了,回看代码,有一种含糊不清的感觉。不过,让我们一同来分析函数理清里面的思路,Let's go
壹:
InitDDraw(void)
在初始化里,许多的标志填充我们可以从手册了查到其作用,我们也不必深究它,我们只想让画面动起来。

初始化,必须创建一个主页面和一个离屏页面。我们可以理解为放电影中 主页面
是电影屏幕,就是一块白布;离屏页面就是投射进去的画面,认准它了:
&lpDDSBack//它是出效果的关键

至于地图页面,火焰页面,我已经改成为背景[活动],前景[静止],可以理解为在后台待命的演员,一旦表演就会出现在台上。

//那个BA11D.bmp麻烦改成BA11A.bmp ,或者你想要的图。可以不管back.bmp 这是在test的时候用过的,整个程序我就只用了lpDDSFlame,在其中切割出想要的大小


贰:
void DrawMap(void )//绘制背景地图

这里要注意的是切割出来的图块必须符合可用原则,比如它不能大于“装载器”预先的大小
//&backrect 大小  这里统一了是128*128的块

        GetRect(&srect, 120,352,128,128);//从lpDDSFlame(120,352)位置开始截取 128*128的大小,当然这一行代码表达不了这么多内容
配合往后的几行就完成的图块截取,放置离屏页面的过程。

void  DrawEyes(void)
//也是如此,看到没有该死的创建离屏页面不能大于窗口尺寸

接下来的延时,更新火焰状态 请删掉

叁:
void Flip(void)// 虽然离屏页面有图了,而且不止一个,我们得把它翻出来
[投射到屏幕上]lpDDSFront-〉

&backrect//至今是一个迷 它起到什么作用呢?
对比void FlipKEYSRC(void):void Flip(void)

等等void FlipKEYSRC(void)只是绘制离屏页面  [如果在图片中那是纯绿的地方]它在覆盖背景,不然背景存在什么东西 ,你刚写完的字符、窗口、还是...会很难看的

回看这几行(配合 Flip(void))
        GetClientRect(hWnd, &rect);
                forewidth=rect.right-rect.left;       
                foreheight=rect.bottom-rect.top;
                GetRect(&backrect, 0, 0, forewidth, foreheight);
得到窗口的大小从某位置开始清空页面[这里是(0,0)] ,翻转出来的图块也在某位置开始显示[这里是(0,0)],开始不懂的时候,与鼠标位置老有偏差。

最后 看一看循环过程

                //更新画面
                       
                                FlipKEYSRC();//绿背景
                                 DrawMap();//美莎[移动]
                                  DrawEyes();//美莎身体
                               
                        Flip();//换页

明白换页过程了么?
                初始化-〉创建页面-〉BIT-> 换页处理

directdraw 也就这些内容,前田 稔很丧气的说

如果上面的内容看不懂 只有先从前田 稔的傻瓜学习法开始了,请找燕尘。
       




不知道现在有没有人在学习DirectDraw,我可是很辛苦,在各种压力下入门的。
如果有人原意学,我将把自己学习的过程写作教程。供大家参考[也就是说,不一定适合你]

我是使用老王的A10_战机 源程序进行学习的,没有得到老王的同意,将不能公开源码[可我一直没能和老王联系上]

我的题目是:A10_美女 ]DirectDraw[ 作成

你首先要 掌握 C++ windows编程 要非常熟识,[一知半解的话,就象我,很难有所收效]
因此,拥有以下参考书是必需的

书        名:Programming Windows程式开发设计指南(.chm)
原  作  者:Charles Petzold
译        者:余孟学

DirectDraw 中文手册.chm [老王等译(不全)]
DirectX中文手册.doc [也是老王翻译,{我找到的缺乏第十章以后的}而且!!有点问题{我拿着它几年不能入门}]


电脑游戏自己编.doc (纸书&碟)彭博 [这本书不是入门用的,但可以检测自己掌握了多少知识,并且有一些关键代码。有指导作用]

3D游戏从头编.chm 金点时空 [作者是谁?折腾完DirectDraw 就该折腾D3D了]

还有各式C++参考书资料 可是我一本书也找不到,将就用谭浩强的C语言。

下面,就由我来拆解A10代码。



35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-1-25 08:25:00 | 显示全部楼层

Re:无聊发一个

继续
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 08:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表