示例#1
0
/**
   Handle game over event
*/
static void _gameOver(NinjaState *state) {
  bool win = (state->p1Score == 2);

  if (win) {
    setAllLeds(0, 255, 0);
  } else {
    setAllLeds(255, 0, 0);
  }

  int16_t xp = 0;

  char buffer[32];

  if (win) {
    xp += 15;
    int16_t bonus = 6 * (state->p2Level - ANXGetLevel());
    if (bonus < 0) bonus = 0;
    xp += bonus;
    sprintf(buffer, "Victory!\n%d XP", xp);
  } else {
    xp += state->p1Score * 5;
    sprintf(buffer, "Fail :(\n%d XP", xp);
  }

  //Give them credit
  xp = max(0, xp);
  addExperience(xp);

  statusDialog(buffer);
  safeDisplay();
  safeWaitForButton();

  ledsOff();
}
// ---------------------------------------------------------------------------------------------------- //
// Public
// ---------------------------------------------------------------------------------------------------- //
ParkingShield::ParkingShield(void) : sevenSeg(sevensegment_pins)
{
    setupOutput();
    setupInput();

    setAllLeds(false);
}
// ---------------------------------------------------------------------------------------------------- //
// Public
// ---------------------------------------------------------------------------------------------------- //
ParkingShield::ParkingShield(void) : sevenSeg(sevensegment_pins),
            buttonS1(Device::ANALOG_PIN_0), buttonS2(Device::ANALOG_PIN_1)
{
    setupOutput();
    setupInput();

    setAllLeds(false);
}
示例#4
0
void setupCreditsNames()
{
  clearFrame(); 
  updateDisplay();

  setAllLeds(false);
  
  currentLetterOfName = 0;
  currentName = 0;
  currentNameOffset = 0;
  currentDelay = DELAY_AFTER_LETTER;
}
示例#5
0
void iterateCreditsNames() 
{
  static boolean nameFinished = false;
  
  byte numLettersOfCurrentName = pgm_read_byte(numLettersByName+currentName);
  
  if (nameFinished) 
  {
    nameFinished = false;
    setAllLeds(false);
  }

  if (currentName < NUM_NAMES)
  {
    if (currentLetterOfName < numLettersOfCurrentName*2) // There are 2 bytes (row, column) per letter
    {
      byte row = pgm_read_byte(letters + currentNameOffset + currentLetterOfName);
      byte col = pgm_read_byte(letters + currentNameOffset + currentLetterOfName + 1);

      setLed(row, col, true);

      currentLetterOfName = currentLetterOfName + 2;
      
      currentDelay = DELAY_AFTER_LETTER;
    }
    else // Finished a name
    {
      nameFinished = true;
      
      currentLetterOfName = 0;
      currentNameOffset += numLettersOfCurrentName*2;
      currentName++;

      currentDelay = DELAY_AFTER_NAME;
    }
  } 
  else // Finished, reset
  {
    setupCreditsNames();
  }
}
示例#6
0
void servotest ( void ) {

	while(1) {

		setAllLeds(0);

		// Escape
		if(SW_2){
			while(SW_2){

			}
			return;
		}

		setMotorLeftPower(power, FORWARD);
		setMotorRightPower(power, FORWARD);

		// Neutral position
		setAllLeds(14);
		turn(100, 1500, 300);

		setAllLeds(12);
		turn(100, 1750, 300);

		setAllLeds(10);
		turn(100, 2000, 300);

		setAllLeds(8);
		turn(100, 1250, 300);

		setAllLeds(6);
		turn(100, 1000, 300);

		setAllLeds(4);
		turn(100, 800, 300);
	}

	return;
}