Example #1
0
/*****************************************************************************
 *
 * Description:
 *    Implements a menu
 *    
 ****************************************************************************/
tU8
drawMenu(tMenu newMenu)
{
  tU8 anyKey;
  
  menu = newMenu;
  
  //draw boarder
  lcdRect(menu.xPos, menu.yPos, menu.xLen, menu.yLen, menu.borderColor);
  lcdRect(menu.xPos+1, menu.yPos+16, menu.xLen-2, menu.yLen-17, menu.bgColor);
  
  //write header text
  lcdGotoxy(menu.headerTextXpos,menu.yPos+1);
  lcdColor(menu.borderColor,menu.headerColor);
  lcdPuts(menu.pHeaderText);
  
  //write choices
  cursor = menu.initialChoice;
  drawMenuCursor();
  
  //dummy call just to reset previous key strokes
  checkKey();

  while(1)
  {
    anyKey = checkKey();
    
    if (anyKey != KEY_NOTHING)
    {
      //select specific function
      if (anyKey == KEY_CENTER)
      {
        return cursor;
      }
      
      else if (anyKey == KEY_UP)
      {
        if (cursor > 0)
          cursor--;
        else
          cursor = menu.noOfChoices - 1;
        drawMenuCursor();
      }
      
      else if (anyKey == KEY_DOWN)
      {
        if (cursor < menu.noOfChoices - 1)
          cursor++;
        else
          cursor = 0;
        drawMenuCursor();
      }
    }
    else
      osSleep(1);
  }
}
Example #2
0
/*****************************************************************************
 *
 * Description:
 *    Draw/refresh game board
 *
 ****************************************************************************/
static void
drawGame(void)
{
  tS32 i,j;

  for (i=1; i<=BOARD_WIDTH; i++)
    for (j=1; j<=BOARD_HEIGHT; j++)
      if(board[i-1][j-1] != 0)
        lcdRectBrd(30+(i*6), 10+(j*6), 6, 6, 209,50,5);
      else
        lcdRect(30+(i*6), 10+(j*6), 6, 6, 0);
}
Example #3
0
/*****************************************************************************
 *
 * Description:
 *    Draw game background and game board, initialize all variables
 *
 ****************************************************************************/
static void
setupGame (tBool drawBoard)
{
  tS32 i,j;

  //initialize random generator and reset score
  srand(ms);
  score = 0;

#ifdef INCLUDE_EXAMPLE_GAME_BACKGROUND
  //draw background picture
  lcdIcon(0, 0, 130, 130, _brickWall_130x130c[2], _brickWall_130x130c[3], &_brickWall_130x130c[4]);
#endif

  //draw game board
  if (drawBoard == TRUE)
  {
    lcdColor(1, 0xe0);
    lcdGotoxy(16, 116);
    lcdPuts(" Score:   0 ");

    lcdRect(34, 14, 64, 100, 3);
    lcdRect(36, 16, 60, 96, 0);
  }

  //initialise game board
  for (i=0; i<BOARD_WIDTH; i++)
    for (j=0; j<BOARD_HEIGHT; j++)
      board[i][j] = 0;

  currFigure = rand() % NUM_OF_FIGURE;
  currXpos  = 3;
  currYpos  = 0;
  insertFigure(currFigure, currXpos, currYpos);

  lastUpdate = ms;
}
Example #4
0
File: 1100.c Project: eaglevis/AVR
void demo()
{
	lcdCls();
	for (uint8_t i = 0x20; i <= 128; ++i)
	{
		lcdChar(i, LCD_XOR);
	}

	lcdUpdate();
	_delay_ms(2000);

	lcdStrPos (3,11);
	lcdStr_P(PSTR("Free string"), LCD_WHITE);
	lcdStrPos (22,37);
	lcdStr_P(PSTR("positioning"), LCD_WHITE);
	lcdUpdate();
	_delay_ms(3000);

	lcdCls();
	lcdStr_P(PSTR("Lines, rectangles, circles."), LCD_BLACK);
	lcdUpdate();
	_delay_ms(1000);
	lcdNewLine();
	lcdStr_P(PSTR("Filled or unfilled."), LCD_BLACK);
	lcdUpdate();
	_delay_ms(1000);
	lcdNewLine();
	lcdStr_P(PSTR("Solid or XORed filling, text."), LCD_BLACK);
	lcdUpdate();
	_delay_ms(5000);


	lcdRect(0, 0, LCD_Y_RES, LCD_X_RES, LCD_BLACK, LCD_FILL_BLACK);

	lcdStrPos(36,0);

	lcdStr_P(PSTR("MENU"), LCD_XOR);


	lcdRect(5,7,LCD_Y_RES-8, LCD_X_RES-10,LCD_WHITE, LCD_FILL_WHITE );

	for (int i = 1; i < 8; ++i)
	{
		lcdStrPos(10, i*8);
		lcdInt(i, LCD_BLACK);
		lcdStr_P(PSTR(". Sample"), LCD_BLACK);
		lcdLine(5,8*i-1,LCD_X_RES-10, LCD_HORIZ, LCD_BLACK);
	}

	lcdUpdate();

	_delay_ms(2000);


	lcdCircle(LCD_X_RES/2,LCD_Y_RES/2,30, LCD_XOR, LCD_FILL_XOR);
	lcdUpdate();
	_delay_ms(2000);
	lcdBresenhamLine(0, 0, LCD_X_RES-1, LCD_Y_RES-1, LCD_XOR);
	lcdUpdate();
	_delay_ms(2000);
	lcdBresenhamLine(0, LCD_Y_RES-1, LCD_X_RES-1, 0, LCD_XOR);
	lcdUpdate();
	_delay_ms(5000);

	lcdCls();
	lcdStr_P(PSTR("Per-pixel horizontal fill speed test in:"), LCD_BLACK);lcdUpdate();lcdNewLine();
	_delay_ms(1000);
	lcdStr_P(PSTR("3..."), LCD_BLACK);lcdUpdate();
	_delay_ms(1000);
	lcdStr_P(PSTR("2..."), LCD_BLACK);lcdUpdate();
	_delay_ms(1000);
	lcdStr_P(PSTR("1..."), LCD_BLACK);lcdUpdate();
	_delay_ms(1000);


	for (uint8_t x = 0; x < LCD_X_RES; ++x)
	{
		for (uint8_t y = 0; y < LCD_Y_RES; ++y)
		{

			lcdPixel(x,y,LCD_PIXEL_XOR);
			lcdUpdate();
		}
	}
	_delay_ms(1000);
	lcdNewLine();
	lcdStr_P(PSTR("Vertical in:"), LCD_XOR);lcdUpdate();lcdNewLine();
	_delay_ms(1000);
	lcdStr_P(PSTR("3..."), LCD_XOR);lcdUpdate();
	_delay_ms(1000);
	lcdStr_P(PSTR("2..."), LCD_XOR);lcdUpdate();
	_delay_ms(1000);
	lcdStr_P(PSTR("1..."), LCD_XOR);lcdUpdate();
	_delay_ms(1000);

	for (uint8_t y = 0; y < LCD_Y_RES; ++y)
	{
		for (uint8_t x = 0; x < LCD_X_RES; ++x)
		{

			lcdPixel(x,y,LCD_PIXEL_XOR);
			lcdUpdate();
		}
	}
	_delay_ms(2000);
	lcdCls();
	lcdStr_P(PSTR("Every pixel was filled with it's XORed value and updated."), LCD_XOR);lcdUpdate();
	_delay_ms(5000);
	lcdCls();
	lcdStr_P(PSTR("That's it!"), LCD_XOR);
	lcdNewLine();
	lcdStr_P(PSTR("Thanks!"), LCD_XOR);lcdUpdate();

	_delay_ms(5000);
}