游戏开发论坛

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

看看我的程序哪里错了?

[复制链接]

15

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
发表于 2004-6-18 18:26:00 | 显示全部楼层 |阅读模式
为什么一运行就会退出呢?


class CGameMap
{
private:
  LP_DISPLAY                m_pDisplay;
  LP_BITMAPX                m_pBottomMap;
private:
  LP_BITMAPX                m_pTile;                        // 地图瓷砖
public:
  CGameMap(void);
  CGameMap( int x, int y, int MapID, LP_DISPLAY lp_display );
  ~CGameMap(void);
  LP_BITMAPX GetBottomMap( void );                        // 获取最底层地图
  bool SetDisplay( LP_DISPLAY lp_display );        // 设置绘图核心
  bool CreateMap( int x, int y, int MapID );
};



CGameMap::CGameMap( int x, int y, int MapID, LP_DISPLAY lp_display )
{
  m_pBottomMap        = NULL;
  m_pMiddleMap        = NULL;
  m_pTopMap        = NULL;

  if( SetDisplay( lp_display ) )
    CreateMap( x, y, MapID );
}


LP_BITMAPX CGameMap::GetBottomMap( void )
{
  if( m_pBottomMap == NULL )
    return m_pTile;
  else
    return m_pBottomMap;
}


bool CGameMap::SetDisplay( LP_DISPLAY lp_display )
{
  m_pDisplay = lp_display;

  if( m_pDisplay != NULL )
    return true;
  else
    return false;
}



bool CGameMap::CreateMap( int x, int y, int MapID )
{
  m_pTile = m_pDisplay->CreateBitmapFromJPG( "pic\\cover.jpg" );
  m_pDisplay->DrawBitmapMMX( 0, 0, m_pTile, m_pBottomMap );

  if( m_pDisplay == NULL )
    return false;
  else
    return true;
}


以下是调用代码:

CGameMap* m_pgmMap;

m_pgmMap=new CGameMap(0,0,0,g_pDisplay)
...
...

GetGraphics()->DrawBitmapMMX( 0, 0, m_pgmMap->GetBottomMap(), SCREENBUFFER );


可以把g_pDisplay当参数传递,在另一个类里调用吗?怎么才能运行成功呢?我的主要目的就是想在地图类里将地图画好,返回LP_BITMAPX,然后在主程序中将地图画出来。

15

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2004-6-19 10:25:00 | 显示全部楼层

Re:看看我的程序哪里错了?

如果在地图类里新建一个LP_DISPLAY,我想可以解决问题,只是感觉那样浪费资源,所以没有尝试。如何把g_pDisplay传递给其他类使用呢?

15

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2004-6-19 10:26:00 | 显示全部楼层

Re:看看我的程序哪里错了?

我把标题改了,为什么帖子列表的显示没有改呢?还是以前的标题。

15

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2004-6-19 20:47:00 | 显示全部楼层

Re:看看我的程序哪里错了?

问题解决了。是我在构造函数里没有将LP_BITMAPX的3个变量初始化,一直保持NULL。所以,DrawBitmapMMX的时候出错了。
将其改为
  m_pBottomMap = g_pDisplay->CreateBitmap(1024,768);
  m_pMiddleMap = g_pDisplay->CreateBitmap(1024,768);
  m_pTopMap = g_pDisplay->CreateBitmap(1024,768);
就好了.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-13 10:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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