GameRes游资网

 找回密码
 立即注册
12下一页
返回列表
查看: 4108|回复: 16

战略三国的图片

[复制链接]
发表于 2005-8-19 13:12:00 | 显示全部楼层 |阅读模式
游戏程序
平台类型:  
程序设计:  
编程语言:  
引擎/SDK:  

图片是很粗糙,原因有两个:一是缺少美工;二是我目前比较重视游戏的内核,而不重视画面.
相关附件以后会在本贴编辑上
发表于 2005-8-19 13:25:00 | 显示全部楼层

Re:战略三国的图片

能给点更详细地介绍吗?
 楼主| 发表于 2005-8-19 13:31:00 | 显示全部楼层

Re: Re:战略三国的图片

sandy_zc_1: Re:战略三国的图片

能给点更详细地介绍吗?

给个文档下载地址,里面应该介绍的很详细了.
http://www.downfans.net/sanguo/dispbbs.asp?boardID=2&ID=137&page=1
发表于 2005-8-19 13:57:00 | 显示全部楼层

Re:战略三国的图片

昨天晚上大概看了下你的代码,没看懂。
不过总体感觉写的有些乱,你那些类模块就用a,b,c,d...来做名字我实在看不懂
建议所有的变量名/函数/过程/文件名都应该有意义,以相应的英文缩写命名,否则用汉语拼音

不敢相信你的程序写大不会出问题,这是我的感觉。

最好在程序中进行注释,否则你写到后面你将不记得前面写的东西是什么,有什么作用。



发表于 2005-8-19 14:00:00 | 显示全部楼层

Re:战略三国的图片

所有的代码进行相应的缩进格式化,并在程序中相应位置尽可能多的注释,而不是另外的地方写,这样做你也方便,别人看了代码后就不会不知所云。
 楼主| 发表于 2005-8-19 14:08:00 | 显示全部楼层

Re: Re:战略三国的图片

yinxiaodan: Re:战略三国的图片

昨天晚上大概看了下你的代码,没看懂。
不过总体感觉写的有些乱,你那些类模块就用a,b,c,d...来做名字我实...

如果是类的成员,在定义处加上相应的注释倒是可以,但是类的方法呢?如果在相应的函数名旁边加注释,恐怕查询不方便吧.
发表于 2005-8-19 14:38:00 | 显示全部楼层

Re:战略三国的图片

没有编译过的代码

void _Alpha16Blend( WORD * pwSrc, WORD * pwDes, int nSize, DWORD dwColorKey )
{
        DWORD dwAlpha = ((dwColorKey&0xFF000000)>>24);
        DWORD dwMask = ((((((dwColorKey&0xFF0000)>>16)<<5)>>8)<<11)|(((((dwColorKey&0xFF00)>>8)<<6)>>8)<<5)|(((dwColorKey&0xFF)<<5)>>8));
        // dwMask = 0xCCCC;

        WORD * t1 = &pwSrc[nSize-2];
        WORD * t2 = &pwDes[nSize-2];

        int nLoop = nSize / 2; // 2个WORD
        __asm
        {
                emms
                push esi
                push edi
                mov  esi, dword ptr pwSrc
                mov  edi, dword ptr pwDes
                xor  ecx, ecx

                movd  mm1, dwAlpha
                movq  mm0, mm1
                psllq mm0, 32
                por   mm0, mm1 // mm0存放2个Alpha值

loopFlag:

                pxor      mm3, mm3
               
                movd      mm1, [esi]
                punpcklwd mm1, mm3
                movd      mm2, [edi]
                punpcklwd mm2, mm3

                movd      mm4, dwMask // ColorKey的Mask
                movq      mm3, mm4
                psllq     mm3, 32
                por       mm3, mm4

                pcmpeqd   mm3, mm2 // 跟目标颜色值比较,如果相同mm3=1,否则mm3=0
                pandn     mm3, mm2 // 这样,如果目标颜色跟ColorKey相同mm3应该是0,否则原值
                movq      mm2, mm3 // (((Src & ColorKey) * Alpha) >> 8) + Des  - ((Des * Alpha) >> 8)


                movq      mm4, MASK_RED // 红色 mm3 = MASK_RED
                pand      mm4, mm2 // mm4 = Src(5位)
                pslld     mm4, 3   // mm4 = Src(8位) Red * 256 / 32 = ((Red << 8) >> 5)

                pmullw    mm4, mm0
                psrld     mm4, 8   // mm4 = ((Src & ColorKey) >> 8)

                movq      mm5, mm3
                pand      mm5, mm1  // mm5 = Des

                movq      mm6, mm5  // mm6 = Des
                pmullw    mm6, mm0
                psrld     mm6, 8    // mm6 = ((Des * Alpha) >> 8)

                psubusb   mm5, mm6  // mm5 = mm5 - mm6
                paddusb   mm4, mm6  // mm4 = mm4 + mm5


                movq      mm5, MASK_GREEN  // 绿色 mm3 = MASK_GREEN
                pand      mm5, mm2 // mm5 = Src
                psrld     mm5, 2   // 移至低8位,然后5位转换为8位 mm5 = Src(8位) Green * 256 / 32 = (((Green >> 5) << 8) >> 5)

                pmullw    mm5, mm0
                psrld     mm5, 8   // mm5 = ((Src & ColorKey) >> 8)

                movq      mm6, mm3
                pand      mm6, mm1  // mm6 = Des

                movq      mm7, mm6  // mm7 = Des
                pmullw    mm7, mm0
                psrld     mm7, 8    // mm7 = ((Des * Alpha) >> 8)

                psubusb   mm6, mm7  // mm6 = mm6 - mm7
                paddusb   mm5, mm7  // mm5 = mm5 + mm6


                movq      mm6, MASK_BLUE // 蓝色 mm3 = MASK_BLUE
                pand      mm6, mm2 // mm6 = Src
                psrld     mm6, 8   // 移至低8位,然后5位转换为8位  mm6 = Src(8位) Blue * 256 / 32 = (((Blue >> 11) << 8) >> 5)

                pmullw    mm6, mm0
                psrld     mm6, 8   // mm6 = ((Src & ColorKey) >> 8)

                movq      mm7, mm3
                pand      mm7, mm1  // mm7 = Des

                movq      mm3, mm6  // mm3 = Des
                pmullw    mm3, mm0
                psrld     mm3, 8    // mm3 = ((Des * Alpha) >> 8)

                psubusb   mm7, mm7  // mm7 = mm7 - mm3
                paddusb   mm6, mm7  // mm6 = mm6 + mm7

               
                movq      mm3, MASK_BLUE // 蓝色 mm3 = MASK_BLUE
                psllq     mm6, 11   // mm4,mm5,mm6分别存储红绿蓝色分量
                pand      mm6, mm3

                movq      mm3, MASK_GREEN // 绿色 mm3 = MASK_BLUE
                psllq     mm5, 5
                pand      mm5, mm3

                movq      mm3, MASK_RED // 红色 mm3 = MASK_RED
                pand      mm4, mm3

                por       mm4, mm5
                por       mm4, mm6

                cmp  ecx, nLoop
                jz   jmpFlag

                inc  ecx
                add  esi, 32
                add  edi, 32

                cmp  ecx, nLoop
                jnz  loopFlag

                mov  esi, dword ptr t1
                mov  edi, dword ptr t2
                jmp  loopFlag

jmpFlag:

                pop  edi
                pop  esi
                emms
        }
}
 楼主| 发表于 2005-8-19 14:51:00 | 显示全部楼层

Re: Re:战略三国的图片

bigbook2000: Re:战略三国的图片

没有编译过的代码

void _Alpha16Blend( WORD * pwSrc, WORD * pwDes, int nSize, DWORD dwColorKey )
{...

要说明什么
发表于 2005-8-19 15:25:00 | 显示全部楼层

Re:战略三国的图片

灌水
发表于 2005-8-19 15:46:00 | 显示全部楼层

Re:战略三国的图片

楼主贴的图是游戏画面吗??我看不明白。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|稿件投递|广告合作|关于本站|GameRes游资网 ( 闽ICP备05005107-1 )

GMT+8, 2018-11-13 06:19

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