void Splash() {

	lcd_init();
	
	struct animStep anim[16];
	char name[3];

	lcd_set_char(0,(unsigned char*)Aini0);
	lcd_set_char(1,(unsigned char*)Aini1);
	lcd_set_char(2,(unsigned char*)Aini2);
	lcd_set_char(3,(unsigned char*)Aini3);
	lcd_set_char(4,(unsigned char*)Aini4);
	lcd_set_char(5,(unsigned char*)Aini5);
	lcd_set_char(6,(unsigned char*)Aini6);
	lcd_set_char(7,(unsigned char*)Aini7);

	int animLength = 13; 
	int i;
	
	anim[0]  = createStep(6,8,2);
	anim[1]  = createStep(6,8,2);
	anim[2]  = createStep(0,8,2);
	anim[3]  = createStep(1,8,2);
	anim[4]  = createStep(2,8,2);
	anim[5]  = createStep(3,8,2);
	anim[6]  = createStep(4,9,2);
	anim[7]  = createStep(3,10,2);
	anim[8]  = createStep(4,11,2);
	anim[9]  = createStep(3,12,2);
	anim[10] = createStep(1,12,2);
	anim[11] = createStep(0,12,2);
	anim[12] = createStep(7,12,2);

	name[0] = 'D';
	name[1] = 'L';
	name[2] = 'L';


	for(i = 0; i < animLength; i++) {
		if(i == 6) {
			lcd_gotoxy(i+2,2);
			_lcd_write_byte(5,1);
		}
		else if(i > 6 && i < 10) {
			lcd_gotoxy(i+2,2);
			_lcd_write_byte(6,1);
			lcd_gotoxy(i+2,1);
			_lcd_write_byte(name[i-7],1);
		}
		lcd_gotoxy(anim[i].posx,anim[i].posy);
		_lcd_write_byte(anim[i].sprite,1);
		_delay_ms(100);
	}

	_delay_ms(1000);
	lcd_clear();


}
int Draw(object* obj, int start) {
	// make empty array of tiles
	unsigned char screen[20][4][8];
	int a,b,c;
	for(a = 0; a < 20; a++)
		for(b = 0; b < 4; b++)
			for(c = 0; c < 8; c++)
				screen[a][b][c] = 0;

	//calculate pixels to be drawn
	int y,x;
	for(y = 0; y < obj->h; y++) {
		for(x = 0; x < obj->w; x++) {
			screen[(obj->y + y)/CHARH][(obj->x + x)/CHARW][(obj->x + x)%CHARW] |= (1<<((SCREEN_HEIGHT-1-(obj->y + y))%CHARH));
		}
	}

	// generate sprites and draw
	int spriteNum = start;
	for(y = obj->y-(obj->y%CHARH); y < obj->y+obj->h; y+= CHARH) {
		for(x = obj->x-(obj->x%CHARW); x < obj->x+obj->w; x+= CHARW) {
			if(spriteNum < 7) {
				lcd_set_char(spriteNum,(unsigned char*)screen[y/CHARH][x/CHARW]);
				lcd_gotoxy(y/CHARH, x/CHARW);
				_lcd_write_byte(spriteNum++,1);
			}
		}
	}
	return spriteNum;
		
}
Ejemplo n.º 3
0
/** Write a data byte */
void lcd_write(uint8_t bb)
{
	if (_addrtype == TEXT) {
		if (bb == '\r') {
			// CR
			_pos.x = 0;
			lcd_xy(_pos.x, _pos.y);
			return;
		}

		if (bb == '\n') {
			// LF
			_pos.y++;
			lcd_xy(_pos.x, _pos.y);
			return;
		}

		_pos.x++;
	}

	_lcd_wait_bf();
	pin_high(LCD_RS);  // select data register
	_lcd_write_byte(bb);  // send data byte
}
Ejemplo n.º 4
0
/** Write a data byte */
void lcd_write_data(uint8_t bb)
{
	_lcd_wait_bf();
	pin_up(LCD_RS);  // select data register
	_lcd_write_byte(bb);  // send data byte
}
Ejemplo n.º 5
0
/** Write an instruction byte */
void lcd_write_command(uint8_t bb)
{
	_lcd_wait_bf();
	pin_down(LCD_RS);  // select instruction register
	_lcd_write_byte(bb);    // send instruction byte
}
void Breakout() {

	int i,j;
	int points = 0;
	DDRB = 0xFF;
	PORTB = points;

	object bricks[4][3];
	for(i = 0; i < 4; i++) {
		for(j = 0; j < 3; j++) {
			bricks[i][j].x = i;
			bricks[i][j].y = j+YCHARS-3;
			bricks[i][j].w = CHARW;
			bricks[i][j].h = CHARH;
			bricks[i][j].visible = true;
		}
	}
	// Draw bricks
	for(i = 0; i < 4; i++) {
		for(j = 0; j < 3; j++) {
			lcd_gotoxy(bricks[i][j].y,bricks[i][j].x);
			_lcd_write_byte(BRICK,1);
		}
	}
	
	object player = {12,9,7,1,1};
	object ball   = {15,10,1,1,1};
	int ballDX, ballDY;
	ballDY = 1;
	ballDX = 1;
	bool hit = true;
	bool changed = true;
	int oldXSquare = ball.x/CHARW, oldYSquare = ball.y/CHARH;
	while(1) {
		// if left pressed
		if(is_pressed(3) && player.x > 0) {
			// if player pad leaving a screen character
			if((player.x+player.w)%CHARW == 1) {
				//overwrite with blank
				lcd_gotoxy((player.y+player.h-1)/CHARH, (player.x+player.w)/CHARW);
				_lcd_write_byte(TRANSPARENT,1);
			}
			changed = true;
			player.x--;
		}
		//if right pressed
		if(is_pressed(4) && player.x + player.w < SCREEN_WIDTH) {
			// if player pad leaving a screen character
			if(player.x%CHARW == CHARW-1) {
				//overwrite with blank
				lcd_gotoxy(player.y/CHARH, player.x/CHARW);
				_lcd_write_byte(TRANSPARENT,1);
			}
			changed = true;
			player.x++;
		}

		
		ball.y += ballDY;
		if(ball.y == player.y) {
			ball.x += ballDX;
			if(ball.x >= player.x && ball.x <= player.x+player.w) {
				ballDY *= -1;
				ball.y += ballDY*2;
			}
		}
		else {
			if(ball.y/CHARH > YCHARS-4  ) {
				if(bricks[ball.x/CHARW][YCHARS-(ball.y/CHARH)-1].visible == true) {
					bricks[ball.x/CHARW][YCHARS-(ball.y/CHARH)-1].visible = false;
					lcd_gotoxy(ball.y/CHARH, ball.x/CHARW);
					_lcd_write_byte(TRANSPARENT,1);
					ballDY *= -1;
					ball.y += ballDY;
					points++;
					PORTB = points;
				}
			}

			ball.x += ballDX;
			if(ball.y/CHARH > YCHARS-4  ) {
				if(bricks[ball.x/CHARW][YCHARS-(ball.y/CHARH)-1].visible == true) {
					bricks[ball.x/CHARW][YCHARS-(ball.y/CHARH)-1].visible = false;
					lcd_gotoxy(ball.y/CHARH, ball.x/CHARW);
					_lcd_write_byte(TRANSPARENT,1);
					ballDX *= -1;
					ball.x += ballDX;
					points++;
					PORTB = points;
				}	
			}
		}

		if(ball.y == SCREEN_HEIGHT-1)
			ballDY *= -1;
		if(ball.x == 0 || ball.x == SCREEN_WIDTH-1)
			ballDX *= -1;

		if(changed) {
			Draw(&player, 1);
		}
		

		//DRAW BALL
		if(ball.x/CHARW != oldXSquare || ball.y/CHARH != oldYSquare) {
			//Clear ball position //TODO: if leaving CG square
			lcd_gotoxy(oldYSquare,oldXSquare);
			_lcd_write_byte(TRANSPARENT,1);
			oldXSquare = ball.x/CHARW;
			oldYSquare = ball.y/CHARH;
		}
		
		if(player.y/CHARH == oldYSquare && player.x/CHARW == oldXSquare)
			;//Draw(&ball, 1);
		else if(player.y/CHARH == oldYSquare && (player.x+player.w)/CHARW == oldXSquare)
			;//Draw(&ball, 2);
		else
			Draw(&ball, 0);

		if(ball.y <= 0) {
			_delay_ms(1000);
			lcd_clear();
			lcd_gotoxy(6,2);
			lcd_puts("You Lost");
			_delay_ms(3000);
			lcd_clear();
			break;
		}
		else if(points == 12) {
			_delay_ms(1000);
			lcd_clear();
			lcd_gotoxy(6,1);
			lcd_puts("You Won!");
			_delay_ms(3000);
			lcd_clear();
			break;
		}

		//do timeing
		_delay_ms(100);
		changed = hit = false;
	}

}
Ejemplo n.º 7
0
//----------------------------------------------------------------------------------------
//
//		 Zapis danych do wy�wietlacza LCD
//
//----------------------------------------------------------------------------------------
void lcd_write_data(uint8_t data)
{
	SET_RS;
	_lcd_write_byte(data);
}
Ejemplo n.º 8
0
//----------------------------------------------------------------------------------------
//
//		 Zapis komendy do wy�wietlacza LCD
//
//----------------------------------------------------------------------------------------
void lcd_write_cmd(uint8_t cmd)
{
	CLR_RS;
	_lcd_write_byte(cmd);
}