Source Code (Use browser search to find items of interest.)
Class Index
ksnake'Level (./kdegames/ksnake/level.h:12)
class Level {
public:
Level (Board *);
void up();
void set(int l) { lev = l; }
int get() { return lev; }
void create(Img);
private:
Board *board;
QImage makeImage(char *);
void makeImageFromData(const uchar *buf);
void doNumber(int beginAt, const uchar *buf);
void initBoard(QImage );
void createRoom();
void createBanner();
int lev;
};
ksnake'Level::Level() (./kdegames/ksnake/level.cpp:17)
Level::Level(Board *b)
{
board = b;
create(Intro);
}
ksnake'Level::up() (./kdegames/ksnake/level.cpp:23)
void Level::up()
{
if (lev < leV->max())
lev++;
}
ksnake'Level::create() (./kdegames/ksnake/level.cpp:29)
void Level::create(Img img)
{
switch(img){
case Banner:
createBanner();
break;
case Room:
createRoom();
break;
case Intro:
makeImageFromData(intro_bits);
break;
case GameOver:
makeImageFromData(gameover_bits);
break;
}
}
ksnake'Level::createRoom() (./kdegames/ksnake/level.cpp:47)
void Level::createRoom()
{
QImage image = leV->getImage(lev);
initBoard(image);
}
ksnake'Level::makeImageFromData() (./kdegames/ksnake/level.cpp:53)
void Level::makeImageFromData(const uchar *buf)
{
QBitmap bitmap(35, 35, buf, TRUE);
QImage image = bitmap.convertToImage();
initBoard (image);
}
ksnake'Level::initBoard() (./kdegames/ksnake/level.cpp:60)
void Level::initBoard(QImage image)
{
int index = 0;
uchar *b;
for ( int y = 0;y < image.height();y++ ) {
b = image.scanLine(y);
for ( int x = 0;x < image.width();x++ ) {
if ( image.bitOrder() == QImage::BigEndian ) {
if (((*b >> (7 - (x & 7))) & 1) == 1)
board->set(index, brick);
else board->set(index, empty);
} else {
if (((*b >> (x & 7)) & 1) == 1)
board->set(index, brick);
else board->set(index, empty);
}
if ( (x & 7) == 7 )
b++;
index++;
}
}
}
ksnake'Level::createBanner() (./kdegames/ksnake/level.cpp:86)
void Level::createBanner()
{
makeImageFromData(level_bits);
QString num;
num.setNum(lev);
if(lev < 10) num.insert(0,'0');
QString left = num.left(1);
QString right = num.right(1);
doNumber ( 606, numbers[left.toInt()] );
doNumber ( 614, numbers[right.toInt()] );
}
ksnake'Level::doNumber() (./kdegames/ksnake/level.cpp:101)
void Level::doNumber(int beginAt, const uchar *buf)
{
QBitmap bitmap(7, 9, buf, TRUE);
QImage image = bitmap.convertToImage();
int index = beginAt;
uchar *b;
for ( int y = 0;y < image.height();y++ ) {
b = image.scanLine(y);
for ( int x = 0;x < image.width();x++ ) {
if ( image.bitOrder() == QImage::BigEndian ) {
if (((*b >> (7 - (x & 7))) & 1) == 1)
board->set(index, brick);
} else {
if (((*b >> (x & 7)) & 1) == 1)
board->set(index, brick);
}
if ( (x & 7) == 7 )
b++;
index++;
}
index += 28;
}
}