블로그 이미지

카테고리

Total (16)
Study (11)
Project (1)
Like (1)
Info (3)
Total
Today
Yesterday

달력

« » 2025.5
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

공지사항

최근에 올라온 글

 

main.c

output.bin

직선의 방정식을 이용하여 LCD에 선 그리기

1. 식 



2. 설명
   X의 증가량에 따른 Y의 증가량, 즉 기울기를 이용해서 코딩을 했습니다. 두 점의 좌표를 받아 for문을 이용해 X 좌표에 따른 Y좌표를 위의 식을 이용해 구한 뒤 점을 하나씩 찍어줌
   double을 사용한 이유는 int를 사용하면 소수점이 전부 0으로 손실되는 문제를 해결하기 위함.


3. 코드
void GetLine_BaseFrame(double GetX, double GetY, double GetX2, double GetY2, unsigned short color)
{
 double X, Y;
 double M = (GetY2-GetY)/(GetX2-GetX); // 기울기

 for ( X = GetX; X<=GetX2; X++ )
 {
  Y = M * (X-GetX) + GetY; // 직선의 방정식 식
  Put_PixelBaseFrame(X,Y,color);
 }
}
int main(void)
{
 vinit();
 GPIO_init();
 lcd_init();
 Clear_BaseFrame(0xffff); //화면 클리어
 GetLine_BaseFrame(200,500, 600, 100,0xf800);
}


4. 결과



Posted by whfod
, |

 


- PXA270 보드와 연결된 LCD를 활용한 뒤집힌 카드 짝 맞추기 게임이며, 카드의 개수(4x4, 6x6, 8x8)에 따라 3가지 레벨로 구성됨.

- PC에서 하이퍼터미널을 통해 보드와 UART 통신을 하며, 키보드의 방향키, 스페이스로 게임의 키 조작이 이루어짐.

- 게임완료 시 랭킹을 등록함(이 때는 키보드 영문으로 이름 설정)

- PXA270 보드에는 OS가 설치되어 있지 않아 PXA270 매뉴얼을 참고하여 직접 레지스터들을 설정함.

- 미리 여러 버퍼에 메뉴화면, 게임화면을 그려두고 전환하는 방식을 사용하여 로딩 시간을 최소화하였으며, 로딩 메시지와 랭킹 등록 메시지는 오버레이 버퍼를 사용하여 베이스 버퍼 위에 겹쳐 보이게 구현함. 타이머를 사용해 게임 진행 시간을 알 수 있으며, 랭킹 등록 시 빠른 순서대로 정렬됨.



acumen270.zip

output.bin




 

Posted by whfod
, |