5.2 애니메이션 Page 283 ~ 295
화살표 키 이용 문자 이동 화살표 키를 이용하여 이동 방향 결정 키를 누를때 이동 do{ gotoxy(x, y); printf(“”); key=getch(); system(“cls”); move_arrow_key(key, &x, &y, X_MAX, Y_MAX); }while(key != 27); //esc 키 입력까지
화살표 키 이용 문자 이동 화살표 키를 이용하여 이동 방향 결정 키의 방향에 따른 지속적 이동 do{ gotoxy(x, y); printf(“”); key=getch(); move_arrow_key(key, &x, &y, X_MAX, Y_MAX); goto(x, y); Sleep(50); system(“cls”); }while(!kbhit()); }while(key != 27); //esc 키 입력까지
[예제 526]화살표키 이용 문자이동
[예제 526]화살표키 이용 문자이동 #include <stdio.h> #include <conio.h> #include <windows.h> #define X_MAX 79 //가로(열)방향의 최대값 #define Y_MAX 24 //세로(행)방향의 최대값 void move_arrow_key(char chr, int *x, int *y, int x_b, int y_b); void gotoxy(int x, int y); int main(void) { char key; int x=10, y=5; do { gotoxy(x, y); printf("□"); key=getch(); move_arrow_key(key, &x, &y, X_MAX, Y_MAX); Sleep(50); system("cls"); } while(!kbhit()); //키를 눌렀는지 확인 }while(key!=27); return 0; }
[예제 526]화살표키 이용 문자이동 void move_arrow_key(char key, int *x1, int *y1, int x_b, int y_b) { switch(key) { case 72: //위쪽(상) 방향의 화살표 키 입력 *y1=*y1-1; if (*y1<1) *y1=1; //y좌표의 최소값 break; case 75: //왼쪽(좌) 방향의 화살표 키 입력 *x1=*x1-1; if (*x1<1) *x1=1; //x좌표의 최소값 case 77: //오른쪽(우) 방향의 화살표 키 입력 *x1=*x1+1; if (*x1>x_b) *x1=x_b; //x좌표의 최대값 case 80: //아래쪽(하) 방향의 화살표 키 입력 *y1=*y1+1; if (*y1>y_b) *y1=y_b; //y좌표의 최대값 default: return; }
[예제 526]화살표키 이용 문자이동 void gotoxy(int x, int y) { COORD Pos = {x - 1, y - 1}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos); }
정사각형 크기 제어 화살표 키(왼쪽, 오른쪽)를 이용 최초크기 10으로 가정, 1size 20 키의 방향에 따른 지속적 크기 변경 do { draw_square(square_size); key=getch(); system("cls"); if (key==75) draw_square(square_size--); if (key==77) draw_square(square_size++); if (square_size<1) square_size=1; if (square_size>20) square_size=20; printf("size=%d",square_size); } while(!kbhit()); } while(key!=27);
[예제 527]화살표 키 활용 정사각형 크기 조절
#include <stdio.h> #include <conio.h> #include <stdlib.h> void draw_square(int size); int main(void) { int square_size=10; char key; printf("사각형의 크기를 연속적으로 조절하는 animation\n\n"); printf("좌측방향 화살 표키는 사각형 크기감소,\n"); printf("우측방향 화살 표키는 사각형 크기증가\n"); printf("animation처리 중에 아무키나 누르면 종료합니다,\n\n"); printf("아무키나 누르면 시작합니다. \n"); getch(); system("cls"); do { draw_square(square_size); key=getch(); if (key==75) draw_square(square_size--); if (key==77) draw_square(square_size++); if (square_size<1) square_size=1; if (square_size>20) square_size=20; printf("size=%d",square_size); } while(!kbhit()); } while(key!=27); return 0; }
void draw_square(int size) { int i, j; unsigned char a=0xa6; unsigned char b[7]; for(i=1;i<7;i++) b[i]=0xa0+i; printf("%c%c",a, b[3]); for(i=0;i<size;i++) printf("%c%c", a, b[1]); printf("%c%c", a, b[4]); printf("\n"); for(i=0;i<size;i++) { printf("%c%c", a, b[2]); for(j=0;j<size;j++) printf(" "); printf("%c%c",a, b[2]); } printf("%c%c", a, b[6]); printf("%c%c", a, b[5]); 0xa3 0xa1 0xa4 ┌ ─ .... ┐ 0xa2│ .... │0xa2 . . └ ─ .... ┘ 0xa6 0xa1 0xa5
임의 크기 정사각형 좌우 이동 정사각형 크기 입력받아 연속 좌우이동 초기상태 오른쪽 20 이동상태 gotoxy(1, 1); gotoxy(1, i); gotoxy(20, i); gotoxy(1, y); gotoxy(20, y);
[예제 528]임의 크기 정사각형 좌우 이동
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <windows.h> void draw_square_xy(int size, int x, int y); void gotoxy(int x, int y); int main(void) { int move=1, x=1, size; printf("사각형이 좌우로 움직이는 animation\n"); printf("실행 중에 아무키나 누르면 종료.\n\n"); printf("사각형의 크기를 입력하고 Enter(최대 20)"); scanf("%d", &size); printf("아무키나 누르면 시작합니다. \n"); getch(); do { x+=move; if (x>50-size) //정사각형의 크기에 따라 오른쪽 끝 x좌표 계산 move=-1; if (x<3) //정사각형의 왼쪽 끝 좌표 move=1; system("cls"); draw_square_xy(size, x, 1); } while(!kbhit()); return 0; }
0xa3 0xa1 0xa4 ┌ ─ .... ┐ 0xa2│ .... │0xa2 . . └ ─ .... ┘ 0xa6 0xa1 0xa5 void draw_square_xy(int size, int x, int y) { int i, j; unsigned char a=0xa6; unsigned char b[7]; for(i=1;i<7;i++) b[i]=0xa0+i; gotoxy(x, y); printf("%c%c",a, b[3]); for(i=0;i<size;i++) printf("%c%c", a, b[1]); printf("%c%c", a, b[4]); for(i=0;i<size;i++) { gotoxy(x, y+i+1); printf("%c%c", a, b[2]); for(j=0;j<size;j++) printf(“ "); printf("%c%c",a, b[2]); } printf("%c%c", a, b[6]); printf("%c%c", a, b[5]);
void gotoxy(int x, int y) { COORD Pos = {x - 1, y - 1}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos); }
임의 크기 정사각형 상하 이동 정사각형 크기 입력받아 연속 상하이동 초기상태 아래쪽 10 이동상태 gotoxy(1, 1); gotoxy(1, i); gotoxy(1, y); gotoxy(1, i+10); gotoxy(1, y+10);
[예제 529]임의 크기 정사각형 상하 이동
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <windows.h> void draw_square_xy(int size, int x, int y); void gotoxy(int x, int y); int main(void) { int move=1, x=1, size; printf("사각형이 상하로 움직이는 animation\n"); printf("실행 중에 아무키나 누르면 종료.\n\n"); printf("사각형의 크기를 입력하고 Enter(최대 20)"); scanf("%d", &size); printf("아무키나 누르면 시작합니다. \n"); getch(); do { y+=move; if (y>23-size) //정사각형의 크기에 따라 아래 끝 좌표 계산 move=-1; if (y<3) //정사각형의 시작 y좌표 move=1; system("cls"); draw_square_xy(size, 1, y); //[함수 5.2.1] 참고 } while(!kbhit()); return 0; }
0xa3 0xa1 0xa4 ┌ ─ .... ┐ 0xa2│ .... │0xa2 . . └ ─ .... ┘ 0xa6 0xa1 0xa5 void draw_square_xy(int size, int x, int y) { int i, j; unsigned char a=0xa6; unsigned char b[7]; for(i=1;i<7;i++) b[i]=0xa0+i; gotoxy(x, y); printf("%c%c",a, b[3]); for(i=0;i<size;i++) printf("%c%c", a, b[1]); printf("%c%c", a, b[4]); for(i=0;i<size;i++) { gotoxy(x, y+i+1); printf("%c%c", a, b[2]); for(j=0;j<size;j++) printf(“ "); printf("%c%c",a, b[2]); } printf("%c%c", a, b[6]); printf("%c%c", a, b[5]);
void gotoxy(int x, int y) { COORD Pos = {x - 1, y - 1}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos); }
[Report 503] 상하좌우 화살표 키를 이용하여 임의의 크기를 갖는 정사각형을 이동