spritecollection.cpp

来自「Source code (C++) of the Icebloxx game f」· C++ 代码 · 共 186 行

CPP
186
字号
/*
 * Copyright (C) 2002 Robert Ernst <robert.ernst@linux-solutions.at>
 *
 * This file may be distributed and/or modified under the terms of the
 * GNU General Public License version 2 as published by the Free Software
 * Foundation and appearing in the file LICENSE.GPL included in the
 * packaging of this file.
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 * See COPYING for GPL licensing information.
 *
 */

#include "SpriteCollection.h"
#include <eikenv.h>
#include <icebloxx.mbg>

SpriteCollection::SpriteCollection()
{
	CEikonEnv* env = CEikonEnv::Static();
	TInt loop;
	for(loop=0;loop<8;loop++)
	{
		m_block[loop]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxBlock1+loop));
	}

	for(loop=0;loop<8;loop++)
	{
		m_block_coin[loop]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxBlock_coin1+loop));
	}

	m_coin[0]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxCoin));
	m_coin[1]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxCoinmask));

	for(loop=0;loop<8;loop++)
	{
		m_dead[loop]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxDead1+loop));
	}

	for(loop=0;loop<5;loop++)
	{
		m_flame[loop][0]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxFlame1+loop));
		m_flame[loop][1]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxFlame1mask+loop));
	}

	m_happy_penguin=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxHappy_penguin));
	m_intro =static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxIntro));

	m_live =static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxLive));
	m_penguin = static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPenguin));
	for(loop=0;loop<3;loop++)
	{
		m_penguin_up[loop]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPenguin_up1+loop));
		m_penguin_down[loop]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPenguin_down1+loop));
		m_penguin_left[loop]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPenguin_left1+loop));
		m_penguin_right[loop]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPenguin_right1+loop));
	}

	m_points[0][0]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPoints1));
	m_points[1][0]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPoints2));
	m_points[0][1]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPoints1mask));
	m_points[1][1]=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxPoints2mask));

	m_wall=static_cast<QPixmap*>(env->CreateBitmapL(_L("*"),EMbmIcebloxxWall));
}

SpriteCollection::~SpriteCollection()
{
	TInt loop;
	for(loop=0;loop<8;loop++)
	{
		delete m_block[loop];
		delete m_block_coin[loop];
		delete m_dead[loop];
	}


	delete m_coin[0];
	delete m_coin[1];
	
	for(loop=0;loop<5;loop++)
	{
		delete m_flame[loop][0];
		delete m_flame[loop][1];

	}
	delete m_happy_penguin;
	delete m_intro;
	
	delete m_live;
	delete m_penguin;
	
	for(loop=0;loop<3;loop++)
	{
		delete m_penguin_up[loop];
		delete m_penguin_down[loop];
		delete m_penguin_left[loop];
		delete m_penguin_right[loop];
		}

	delete m_points[0][0];
	delete m_points[1][0];
	delete m_points[0][1];
	delete m_points[1][1];

	delete m_wall;
}

void SpriteCollection::drawBlock(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_block[state]);
}

void SpriteCollection::drawBlockCoin(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_block_coin[state]);
}

void SpriteCollection::drawCoin(QPainter &painter, int x, int y)
{
    painter.drawPixmapMask((KMajorPart*x)/KDividor, y, m_coin[0],m_coin[1]);
}

void SpriteCollection::drawDead(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_dead[state]);
}

void SpriteCollection::drawFlame(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmapMask((KMajorPart*x)/KDividor, y, m_flame[(state > 4) ? 8 - state : state][0],m_flame[(state > 4) ? 8 - state : state][1]);
}

void SpriteCollection::drawHappyPenguin(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, state ? m_happy_penguin : m_penguin);
}

void SpriteCollection::drawIntro(QPainter &painter, int x, int y)
{
    painter.drawPixmap(x, y, m_intro);
}

void SpriteCollection::drawLive(QPainter &painter, int x, int y)
{
    painter.drawPixmap(x, y, m_live);
}

void SpriteCollection::drawPenguin(QPainter &painter, int x, int y)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_penguin);
}

void SpriteCollection::drawPenguinUp(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_penguin_up[(state > 2) ? 4 - state : state]);
}

void SpriteCollection::drawPenguinDown(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_penguin_down[(state > 2) ? 4 - state : state]);
}

void SpriteCollection::drawPenguinLeft(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_penguin_left[(state > 2) ? 4 - state : state]);
}

void SpriteCollection::drawPenguinRight(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_penguin_right[(state > 2) ? 4 - state : state]);
}

void SpriteCollection::drawPoints(QPainter &painter, int x, int y, int state)
{
    painter.drawPixmapMask((KMajorPart*x)/KDividor, y, m_points[state][0],m_points[state][1]);
}

void SpriteCollection::drawWall(QPainter &painter, int x, int y)
{
    painter.drawPixmap((KMajorPart*x)/KDividor, y, m_wall);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?