atmega128, 도트매트릭스를 이용한 미로게임
본 자료는 10페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 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
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

atmega128, 도트매트릭스를 이용한 미로게임에 대한 보고서 자료입니다.

목차

알고리즘

작품개요

플로어차트

작품사진

소스

본문내용

에 줄에 벽이 없을 때
led_red_ball[dot_pos+1] = led_red_ball[dot_pos];//공 아래로
led_red_ball[dot_pos] = 0x0000;//전 상태 공(적색 LED) 꺼짐
dot_pos++; //다음 줄
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else if(di_x >= 600){//위로 기울일 때
if(dot_pos==0) led_red_ball[dot_pos] = led_red_ball[dot_pos];//라인 첫 줄
else{
led_blk = (~led_red_ball[dot_pos]) & led_green_map[dot_pos-1];
//윗 줄에 벽이 있는지 검사
if(led_blk == led_green_map[dot_pos-1]){ //윗 줄에 벽이 없을 때
led_red_ball[dot_pos-1] = led_red_ball[dot_pos];//공 위로
led_red_ball[dot_pos] = 0x0000;//전 상태 공(적색 LED) 꺼짐
dot_pos--;//윗 줄
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else led_red_ball[dot_pos] = led_red_ball[dot_pos];
if(di_y <= 400){//왼쪽으로 기울일 때
if(led_red_ball[dot_pos] == 0x8000) led_red_ball[dot_pos] = led_red_ball[dot_pos];
//라인 맨 왼쪽
else {
led_blk = (~led_red_ball[dot_pos]) & (led_green_map[dot_pos]>>1);
//왼쪽에 벽이 있는지 검사
if(led_blk ==(led_green_map[dot_pos]>>1)) {//왼쪽에 벽이 없을 때
led_red_ball[dot_pos] = led_red_ball[dot_pos]<<1;//공 왼쪽으로
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else if(di_y >= 600){//오른쪽으로 기울일 때
if(led_red_ball[dot_pos] == 0x0001) led_red_ball[dot_pos] = led_red_ball[dot_pos];
//라인 맨 오른쪽
else {
led_blk = (~led_red_ball[dot_pos]) & (led_green_map[dot_pos]<<1);
//오른쪽에 벽이 있는지 검사
if(led_blk ==(led_green_map[dot_pos]<<1)) {//오른쪽에 벽이 없을 때
led_red_ball[dot_pos] = led_red_ball[dot_pos]>>1;//공 dhfmsWHr으로
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else led_red_ball[dot_pos] = led_red_ball[dot_pos];
} led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
//--------------미로 게임 종료 설정-------------------------------------------------------
void game_over(void)
{
if(next_stage == stage){//한 스테이지에 머무를 때
if(cnt2 >= 20000) {//20초 경과
led_red[data_count] = led_red_die[data_count];//게임오버 출력 설정
led_green[data_count] = led_green_die[data_count]; //게임오버 출력 설정
if(di_x <= 300) {//아래로 기울일 때
cnt4++;//변환값 튀는 것 방지 위한 카운트 증가
if(cnt4 >= 2000){//변환값 300 이하에서 2초 후
mode = 0;//디지털 시계 모드 설정
cnt2 = 0;//스테이지 시간 클리어
cnt4 = 0;
} else {
mode = mode;
cnt2 = cnt2;
cnt4 = cnt4;
}
} else {
cnt2 = cnt2;
mode = mode;
}
} else {
cnt2++;
mode = mode;
}
} else {
next_stage = stage;//이전 스테이지 입력
cnt2 = 0; //스테이지 시간 클리어
mode = mode;
}
}
void cbi(char bit_n)
{
PORTB = PORTB & (~mask[bit_n]);//포트B 비트 클리어
}
void sbi(char bit_n)
{
PORTB = PORTB | mask[bit_n];//포트B 비트 셋
}
void sbi(char);
//----------- 타이머/카운트0 인터럽트 -------------------------------------------------
interrupt [TIM0_OVF] void time0(void)
{
TCCR0 = 0x04; //CLK/64 prescale
TCNT0 = 0x06; //1msec
//1/16us x 64 x (256 - 6) = 1,000us
if(sw1 == 0){ //sw1 = 0 일 때 시계 동작
if(cnt >= 1000){//1초일 때
cnt = 0;
sec = sec + 1;//sec증가
} else cnt++;
}
if(di_x > 400){ //위로 기울일 때
cursor_count++;
if(cursor_count>100) {//준비화면 설정
cursor_count=0;
if(cursor>=64) cursor=cursor;//준비화면 설정
else cursor++;
}
} else cursor = 0;
display();//도트매트릭스 구현 display 함수 호출
}
.
  • 가격25,000
  • 페이지수29페이지
  • 등록일2013.09.24
  • 저작시기2012.10
  • 파일형식한글(hwp)
  • 자료번호#881321
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니