Code:
void getInput(void)
{
pacman.oldx = pacman.x;
pacman.oldy = pacman.y;
if(key[KEY_UP] && pacman.y > 0)
{ // && level[pacman.y-1][pacman.x] != 1
pacman.y--; pacman.sprNum = PACMAN4_BMP;
pacman.direction = UP;
}
else if(key[KEY_DOWN] && pacman.y < 14)
{ // && level[pacman.y+1][pacman.x] != 1
pacman.y++;
pacman.sprNum = PACMAN1_BMP;
pacman.direction = DOWN;
}
else if(key[KEY_LEFT] && pacman.x > 0)
{ // && level[pacman.y][pacman.x-1] != 1
pacman.x--;
pacman.sprNum = PACMAN3_BMP;
pacman.direction = LEFT;
}
else if(key[KEY_RIGHT] && pacman.x < 19)
{ //&& level[pacman.y][pacman.x+1] != 1
pacman.x++;
pacman.sprNum = PACMAN2_BMP;
pacman.direction = RIGHT;
}
else if(key[KEY_PRTSCR])
{
savescreen();
}
else if(key[KEY_M])
{
if(music == 1)
{ music = 0;
midi_pause();
}
else
{ music = 1;
midi_resume();
}
}
else if(key[KEY_ESC])
{
gui_bg_color = 255;
gui_fg_color = 0;
play_sample(sound[SOUND5_WAV].dat,255,128,1000,FALSE);
if(alert("Are you sure", "you want to", "Quit?","&Yes","&No",'y','n') == 1)
quit = 1;
}
checkCollision();
level[pacman.y][pacman.x] = 0;
levelScent[pacman.oldy][pacman.oldx] = pacman.direction;
}
void drawscreen(void)
{
int i;
clear_to_color(buffer,0);
acquire_screen();
drawBackground();
drawLevel();
masked_blit(graphic[pacman.sprNum].dat,buffer,0,0,pacman.x*32,pacman.y*32,32,32);
for(i = 0; i < 3; i++)
{
blit(graphic[BGBLOCK_BMP].dat,buffer,0,0,ghosts[i].x*32,ghosts[i].y*32,32,32);
masked_blit(graphic[ghosts[i].sprNum].dat,buffer,0,0,ghosts[i].x*32,ghosts[i].y*32,32,32); // blue ghost
}
// textprintf(buffer,font,1,1,15,"x:%d y:%d dots:%d pacman.flee: %d",pacman.x,pacman.y, dots, pacman.flee);
// textprintf(buffer,font,1,1,15,"super_pill_timer:%d pacman.flee: %d",super_pill_timer, pacman.flee);
textprintf(buffer,font,1,1,15,"music:%d",music);
textprintf(buffer,font,290,1,9,"Lives:%d",pacman.lives);
textprintf(buffer,font,290,11,9,"Score:%d",pacman.score);
textprintf(buffer,font,290,21,9,"Level:%d",levelNum);
blit(buffer,screen,0,0,0,0,640,480);
release_screen();
}
/*****************************************************************************/
void drawLevel(void)
{
int i,j;
for(i = 0; i < 20; i++)
{
for(j = 0; j < 15;j++)
{
switch(level[j][i])
{
case 1 : blit(graphic[BLOCK_BMP].dat,buffer,0,0,i*32,j*32,32,32);
break;
case 3 : masked_blit(graphic[DOT_BMP].dat,buffer,0,0,i*32,j*32,32,32);
break;
case 4 : masked_blit(graphic[bonus.sprNum].dat,buffer,0,0,i*32,j*32,32,32);
break;
case 8 : masked_blit(graphic[BONUS4_BMP].dat,buffer,0,0,i*32,j*32,32,32);
break;
}
}
}
}
/*****************************************************************************/
void drawBackground(void)
{
int i,j;
for(i = 0; i < 20; i++)
{
for(j = 0; j < 15;j++)
{
if(level[j][i] != 1)
blit(graphic[BGBLOCK_BMP].dat,buffer,0,0,i*32,j*32,32,32);
}
}
}