I'm making a Falldown clone for the Prizm.
I've already made it randomly generate rows of blocks, next I'll have to add the ball and collision detection.
Download


Download
void main(void) {
Bdisp_EnableColor(1);
int lostGame;
int takeScreenShot;
int key;
int exit;
int Timer_createNewRow;
while (1) {
lostGame = 0;
takeScreenShot = 0;
key = 0;
exit = 0;
Timer_createNewRow = 0;
while (!exit)
{
Bdisp_AllClr_VRAM();
Timer_createNewRow++;
if (Timer_createNewRow >= TIMER_CREATE_NEW_ROW)
{
generateBlocks();
Timer_createNewRow = 0;
}
updateRows();
displayBlocks();
updateBallYPosition();
key = GetKeyNB();
switch (key)
{
case KEY_PRGM_LEFT:
XPosition-=BALL_MOVEMENT_INTERVAL;
if (checkCollision())
{
XPosition+=BALL_MOVEMENT_INTERVAL;
break;
}
if (XPosition < 0)
XPosition = 0;
currentBallFrame++;
if (currentBallFrame == 5)
currentBallFrame = 1;
if (XPosition < 0)
XPosition = 0;
break;
case KEY_PRGM_RIGHT:
XPosition+=BALL_MOVEMENT_INTERVAL;
if (checkCollision())
{
XPosition-=BALL_MOVEMENT_INTERVAL;
break;
}
if (XPosition > LCD_MAX_WIDTH-BALL_WIDTH)
XPosition = LCD_MAX_WIDTH-BALL_WIDTH;
currentBallFrame--;
if (currentBallFrame == 0)
currentBallFrame = 4;
if (XPosition > LCD_MAX_WIDTH)
XPosition = LCD_MAX_WIDTH;
break;
case KEY_PRGM_F6:
takeScreenShot = 1;
case KEY_PRGM_SHIFT:
exit = 1;
break;
}
if (YPosition > LCD_MAX_HEIGHT-BALL_HEIGHT)
YPosition = LCD_MAX_HEIGHT-BALL_HEIGHT;
if (YPosition <= 0)
{
exit = 1;
lostGame = 1;
}
char* ballToDraw;
if (currentBallFrame == 1)
ballToDraw = ball_f1;
else if (currentBallFrame == 2)
ballToDraw = ball_f2;
else if (currentBallFrame == 3)
ballToDraw = ball_f3;
else if (currentBallFrame == 4)
ballToDraw = ball_f4;
CopySpriteMasked(ballToDraw, XPosition, YPosition+7, BALL_WIDTH, BALL_HEIGHT, COLOR_WHITE); //draws the ball
Bdisp_PutDisp_DD();
score+=50;
if (takeScreenShot == 1)
{
key = 0;
GetKey(&key);
}
}
if (lostGame)
{
key = 0;
while (key !=KEY_PRGM_F3){
Bdisp_AllClr_VRAM();
char* s = " You lost!";
PrintXY(1,1,s,TEXT_MODE_NORMAL,TEXT_COLOR_RED);
char* s2 = " Score:";
PrintXY(1,2,s2,TEXT_MODE_NORMAL,TEXT_COLOR_BLUE);
char t[12];
itoa(score, t+2);
PrintXY(9,2,t,TEXT_MODE_NORMAL,TEXT_COLOR_PURPLE);
char* s3 = " [F3] to play again";
PrintXY(1,3,s3,TEXT_MODE_NORMAL,TEXT_COLOR_BLACK);
GetKey(&key);
}
Bdisp_AllClr_VRAM();
Bdisp_PutDisp_DD();
}
}
return;
}
Advertisement