Example #1
0
void lvlOutro(Game *game, Level *level, Controller *userInput) {
	char title[50];
	char score[50];
	char livesLeft[50];
	char hitRatioPercent[50];
	char print = FALSE;
	float hitRatio = (float)level->hits/(float)level->numberOfFires;
	playMusic(theme2,TRUE);
	game->score *= hitRatio;
	
	
	sprintf(title, "LEVEL %d PERFORMANCE", game->levelNum);
	sprintf(score, 		"Score: 		%d", game->score);
	sprintf(livesLeft, 	"Remaining lives: %d", level->player.lives);
	sprintf(hitRatioPercent, "Hit and Miss Ratio: %.2lf%%", hitRatio*100);
		
	while(!userInput->start) {
		// wait for start button
		lcd_fillScreen(BLACK);
		lcd_putString( 50, 50, (unsigned char *)title );
		lcd_putString(50, 100, (unsigned char *)score);
		lcd_putString(50, 110, (unsigned char *)livesLeft);
		lcd_putString(50, 120, (unsigned char *)hitRatioPercent);

		if(game->seed%10 == 0) {
			print = !print;
		}
		if(print) {
			lcd_putString(50, 300, "Press START to continue...");
		}
		game->seed++;
		pollController(userInput);
		memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
	}
}
Example #2
0
void lvlIntro(Game *game, Level *level) {
	
	char levelNumber[50];
	int row,col,xPos, j = 0;
	sprintf(levelNumber, "LEVEL %d", game->levelNum);
	playMusic(intro, FALSE);
	
	// Draw stars, increasing length (speeding up)
	for ( j = 0; j < 30; j++ ) {
		
		lcd_fillScreen(BLACK);
		
		for (row = level->stars.y; row < DISPLAY_HEIGHT; row += STAR_SPACING_HEIGHT) { 
			for (col = level->stars.x; col < DISPLAY_WIDTH; col++) { 
				if (xPos%STAR_SPACING_WIDTH == 0) { 
					vLine(col,row, row + j, WHITE); 
				} 
				xPos++; 
			}
		}
		xPos=0; // reset xPos
		
		lcd_putString(100, 50, (unsigned char *)levelNumber);
		drawShip(level->player.currPos.x, -3*j + INIT_SHIP_POS_Y, level->player.type);
		memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
	}		
	
	lcd_fillScreen(WHITE);
	playMusic(RainPizz,FALSE);
	memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
	mdelay(150);
	// Draw stars, decreasing length (slowing down)
	
	for ( j = 15; j > 0; j-- ) {
		
		lcd_fillScreen(BLACK);
		
		for (row = level->stars.y; row < DISPLAY_HEIGHT; row += STAR_SPACING_HEIGHT) { 
			for (col = level->stars.x; col < DISPLAY_WIDTH; col++) { 
				if (xPos%STAR_SPACING_WIDTH == /*(row%2)*/ 0) { 
					vLine(col,row, row + j, WHITE); 
				} 
				xPos++; 
			}
		}
		xPos=0; // reset xPos
		
		lcd_putString(100, 50, (unsigned char *)levelNumber);
		drawShip(level->player.currPos.x, level->player.currPos.y - j*j, level->player.type);
		memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
		mdelay(100);
	}
}
Example #3
0
void pauseLevel (Level *level, Controller *levelInput) {
	
	// draw stuff
	pauseMenu();
	pollController(levelInput);
	
	// debounce 
	while (levelInput->start) {
		//block
		pollController(levelInput);
	}
	
	// wait for start button press
	while ((!levelInput->start) && (level->levelOver != SKIP_LEVEL)) {
		//block
		pollController(levelInput);
		if (levelInput->a) { // doesn't actually skip level yet
			lcd_putString(50, 80, "Skipping level");
			memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
			level->levelOver = SKIP_LEVEL;
		}
	}
	
	mdelay(500);
	
}
Example #4
0
void credits (Controller *userInput) {
	
	int i = DISPLAY_HEIGHT;
	playTheme();
	pollController(userInput);
	
	while((!userInput->x) && (i+70 > 0)) {
		lcd_fillScreen(BLACK);
		lcd_putString(DISPLAY_WIDTH/2-20, i, "CREDITS");
		lcd_putString(20, i + 30,    "Shanush and James -- Team Atari");
		lcd_putString(20, i + 50, "           Victor -- Example Project");
		memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
		pollController(userInput);
		i-=2;
	}
	
	stopMusic();
	mdelay(5000);
}
Example #5
0
void drawGameInfo(Game *game, Level *level) {
	int i;
	char score[100];
	sprintf(score, "Score: %d  Level: %d", game->score, game->levelNum);
	lcd_putString(0,0, (unsigned char *)score);
		
	for (i = 0; i < level->player.lives; i++) {
		lcd_BMP( DISPLAY_WIDTH, 0, -1*(i+1), -1,Heart, TRUE, FALSE);
	}
	
}
Example #6
0
void gameOverScreen(Game *game, Level *level, Controller *userInput) {
	char extraMarks[50];
	
	
	lcd_fillScreen(BLACK);
	lcd_putString(95, 100, (unsigned char *)"GAMEOVER");
	lcd_putString(20, 200, (unsigned char *)"Insert 1 extra mark(s) for");
	lcd_putString(20, 210, (unsigned char *)"extra lives?");
	lcd_putString(20, 235, (unsigned char *)"-- Y (yes) / B (no)");
	memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
	pollController(userInput);
	while(!(userInput->y || userInput->b)) {
		pollController(userInput);
	}
	if(userInput->y) {
		level->levelOver = MARKS_INSERTED;
		game->extraMarks++;
		sprintf(extraMarks, "You have inserted %d extra", game->extraMarks);
		lcd_putString(20, 260, (unsigned char *)extraMarks);
		lcd_putString(20, 270, "mark(s) in total!");
		memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
		//mdelay(2000);
	}

}
Example #7
0
//LCD section is 0x1C
void instrCall_LCD(char instruction, char* datain, char dataLength)
{
  switch (instruction)
  {
  case LCD_INIT:
    {
      lcd_init();
      break;
    }
  case LCD_WRITE:
    {
      lcd_putString(datain, dataLength);
      break;
    }
  case LCD_CLEAR:
    {
      lcd_clear();
      break;
    }
  }
}
Example #8
0
int titleScreen (Controller *userInput, int highestScore, int *numberOfLives, char *shipType)  {
	char print = TRUE;
	Position star;
	int seed = 1;
	int i = 0;
	char score[50];
	
	unsigned short *universianArray[SPLASH_FRAMES];
	universianArray[0] = Universian1;
	universianArray[1] = Universian2;
	universianArray[2] = Universian3;
	universianArray[3] = Universian4;
  universianArray[4] = Universian5;
	universianArray[5] = Universian6;
	
	lcd_fillScreen(BLACK);
	
	memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
	
	star.x = 0;
	star.y = 0;
	
	mdelay(300);
	playTheme();
		
	for (i = 0; i < SPLASH_FRAMES; i++) {
		drawBackground(&star);
		lcd_BMP(DISPLAY_WIDTH/2, SPLASH_HEIGHT, -(0.5), -(0.5), universianArray[i], TRUE, FALSE);
		
		memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
		
		mdelay(SPLASH_DELAY);
	}
	
	mdelay(1000);
	
	
	sprintf(score, "Highest Score: %9d", highestScore);
	
	while(!userInput->start) {
		// wait for start button
		drawBackground(&star);
		drawShip(INIT_SHIP_POS_X, INIT_SHIP_POS_Y, DEFAULT_SHIP_TYPE);
		lcd_BMP(DISPLAY_WIDTH/2, SPLASH_HEIGHT, -(0.5), -(0.5), Universian6, TRUE, FALSE);
		if(seed%BLINK_RATE == 0) {
			print = !print;
		}
		if(print) {
			lcd_putString(50, 300, "Press START to continue...");
			//lcd_putString(50, SPLASH_HEIGHT+27, "Press START to continue...");
			//lcd_putString(50, 300, "Press START to continue...");
		}
		lcd_putString(50, SPLASH_HEIGHT+37, (unsigned char *)score);
		lcd_putString(50, SPLASH_HEIGHT+55, "         Made by");
		lcd_putString(50, SPLASH_HEIGHT+65, "    James Slack-smith");
		lcd_putString(50, SPLASH_HEIGHT+75, "Shanush Prema Thasarathan");
		seed++;
		pollController(userInput);
		memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
		/*
		if (userInput->select) {
			selectMenu(userInput, numberOfLives, shipType);
		}
		*/
		mdelay(100);
		pollController(userInput);
		
	}
	stopMusic();
	mdelay(500);
	
	
	return seed;
}
Example #9
0
void selectMenu (Controller *userInput, int *numberOfLives, char *shipType) {
	
	int i = 0;
	int seed = 1;
	int print = TRUE;
	
	pollController(userInput);
	
	do {
		lcd_fillScreen(BLACK);
		if (userInput->left && *numberOfLives > 3) {
			(*numberOfLives)--;
		} else if (userInput->right && *numberOfLives < 5) {
			(*numberOfLives)++;
		} else if (userInput->left_shoulder) {
			*shipType = NUMBER_OF_SHIPS;
		} else if (userInput->right_shoulder) {
			*shipType = 1;
		}
		
		lcd_putString(LEFT_ALIGN, TOP_ITEM, "NUMBER OF LIVES");
		for (i = 0; i < *numberOfLives; i++) {
			lcd_BMP( LEFT_ALIGN, TOP_ITEM+15, 1*(i+1), 0,Heart, TRUE, FALSE);
		}
		lcd_putString(LEFT_ALIGN, TOP_ITEM+34, "Right and left to increase and");
		lcd_putString(LEFT_ALIGN, TOP_ITEM+44, "decrease lives");
		
		
		lcd_putString(LEFT_ALIGN, TOP_ITEM+60, "Ship sprite");
		switch (*shipType) {
			case 1:
				lcd_BMP(DISPLAY_WIDTH/2, TOP_ITEM+90, -(0.5), -(0.5), ship1, TRUE, TRUE);
				break;
			default:
				lcd_BMP(DISPLAY_WIDTH/2, TOP_ITEM+90, -(0.5), -(0.5), ship2, TRUE, FALSE);
				break;
		}
		
		lcd_putString(LEFT_ALIGN, TOP_ITEM+110, "Left and Right shoulder to ");
		lcd_putString(LEFT_ALIGN, TOP_ITEM+120, "change ship");
		
		// Controls
		lcd_putString(LEFT_ALIGN, CONTROL_LIST, 	 "------------------------------");
		lcd_putString(LEFT_ALIGN, CONTROL_LIST+10, "Game Controls");
		
		lcd_putString(LEFT_ALIGN, CONTROL_LIST+30, "A     - fire 1");
		lcd_putString(LEFT_ALIGN, CONTROL_LIST+40, "B     - fire 2");
		lcd_putString(LEFT_ALIGN, CONTROL_LIST+50, "D PAD - ship movement");
		lcd_putString(LEFT_ALIGN, CONTROL_LIST+60, "START - pause");
		
		
		if(seed%BLINK_RATE == 0) {
			print = !print;
		}
		if(print) {
			lcd_putString(50, 300, "Press START to continue...");
			//lcd_putString(50, SPLASH_HEIGHT+27, "Press START to continue..."); 
			//lcd_putString(50, 300, "Press START to continue...");
		}
		
		seed++;
		
		memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
		pollController(userInput);
		
		mdelay(50);
		
	} while (userInput->start == FALSE);
}
Example #10
0
void pauseMenu (void) {
	lcd_fillScreen(BLACK);
	lcd_putString(50,50,"Level paused");
	lcd_putString(50, 70, "Skip Level: A");
	memcpy((char*)LCD_FRAME_BUFFER,(char*)LCD_TEMP_BUFFER, 153600); // write temp buffer to fram buffer
}