游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1262|回复: 3

坦克大战的问题

[复制链接]

7

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2007-11-5 12:57:00 | 显示全部楼层 |阅读模式
我读了一个坦克大战的源代码,对于其中的地图技术不明白,每个方块都有一个mask,类似于m_map[row][col].mask &= ~flag这样的代码好多,根据我苦苦分析,知道这个mask至少有下面的功能:使每块砖不是一击就碎,而是一片片被击毁,。。。。。。
源码没多少注释,所以没闹明白怎么回事,希望有熟悉这方面的高手给讲一下其原理,
BOOL CPlane::GetSurface( int row, int col, RECT& rcTank, int a, int b)
{
        char obj = m_map[row][col].obj;
        if( obj == OBJ_NULL || obj == OBJ_TREE )
                return FALSE;
        else
                return TRUE;
       
        WORD mask = m_map[row][col].mask;
        WORD flag;
        for( int i = 0; i < 4; i ++ )
        {//1,3
                if( (i == a || i == b) ||
                        (a == -1 && b == -1) )
                {
                        RECT rc, temp;
                        rc.left = col * TILE_W + i % 2 * 16;
                        rc.right = rc.left + 16;
                        rc.top = row * TILE_H + i / 2 * 16;
                        rc.bottom = rc.top + 16;
                        switch( i )
                        {
                        case 0:
                                flag = 0xcc00;
                                break;
                        case 1:
                                flag = 0x3300;
                                break;
                        case 2:
                                flag = 0x00cc;
                                break;
                        case 3:
                                flag = 0x0033;
                        }
                        if( (mask & flag) && IntersectRect( &temp, &rcTank, &rc ) )
                                return TRUE;
                }
        }
        return FALSE;
}

附上一段代码,呵呵,好多位操作,不明白啊!

3

主题

32

帖子

36

积分

注册会员

Rank: 2

积分
36
发表于 2007-11-5 16:53:00 | 显示全部楼层

Re:坦克大战的问题

/ 一个tile分为16块, 根据子弹的等级决定打掉的块数

// 口口口口 编号 0  1  2  3
// 口口口口      4  5  6  7
// 口口口口      8  9  A  B
// 口口口口      C  D  E  F

mask &= ~flag是去掉某位

7

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2007-11-6 09:25:00 | 显示全部楼层

Re:坦克大战的问题

谢谢大哥啊!虽然是一句简单的提示!!!!!

7

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2007-11-6 09:29:00 | 显示全部楼层

Re:坦克大战的问题

怎么结贴呢?怎么给分?跟csdn不一样?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-19 03:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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