1 / 11

Bricks Game : gotoxy () 를 이용한 화면제어

Bricks Game : gotoxy () 를 이용한 화면제어. 문법 : 오로지 비교와 반복 자료구조 : int , char, 그나마 배열 , 포인 터 약간 . 함수 : gotoxy ( ), Sleep( ), GetAsyncKeyState ( ) .. 등. Gotyxy ( int x, int y) : 커서를 옮기는 기능. 콘솔의 기본 사이즈는 80*25. void gotoxy ( int x,int y ) {

gabby
Download Presentation

Bricks Game : gotoxy () 를 이용한 화면제어

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bricks Game: gotoxy()를 이용한 화면제어 문법 : 오로지 비교와 반복 자료구조 : int, char, 그나마 배열, 포인터 약간.함수 : gotoxy( ), Sleep( ), GetAsyncKeyState( ) .. 등

  2. Gotyxy(intx, int y) : 커서를 옮기는 기능 • 콘솔의 기본 사이즈는 80*25. • void gotoxy(intx,int y) • { • // 기본은 좌측상단의 첫 값은 (0,0)부터 시작, 우측하단은(79,24) • // (1,1)~ (80,25)로 사용하고 싶다면, 아래와 같이 (x-1), (y-1) 의 형태로 사용해도 됩니다. • COORD Pos = {x-1,y-1}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos); • }

  3. print_box( ) & print_dot( ) • // 해당 위치에 문자(char)출력하기, • void print_dot(int x, inty,charch) • { • gotoxy(x,y); • printf("%c",ch); • } //화면에테두리 그리기 print_box(intx, int y, char ch){ int i, j; for ( i = MIN_X; i <=MAX_X; i++ ){ for ( j = MIN_Y; j <=MAX_Y; j++ ) if (i == MIN_X || i == MAX_X || j == MAX_Y || j == MIN_Y ){ gotoxy(i , j); printf(“%c”,ch); } } }

  4. #define을 활용하세요 //값은 여러분이 알아서 #define MIN_X 2 #define MIN_Y 1 #define MAX_X 75 #define MAX_Y 20 #define delay(n) Sleep(n)

  5. 필요한함수들. gotoxy(int x, int y) : 커서의 위치 이동 GetAsyncKeyState(LEFT) : key 감지 API, LEFTkey가 눌려졌는가? system(“cls”) : 화면을 지우는 DOS명령어 cls를 호출한다. //더 찾아보도록 하세요. 도스모드 관련 제어 함수들 확장키의 입력에 관하여 setColor( ) getColor( )등

  6. 화면에 ‘*’를 출력하고 자취를 지워공이 튀는 듯하게 만들어 봅니다. 만들기전에 반드시좌표값의 이동상황을 그려볼 것!. 그리고 나서 좌표값을 나타내는 변수들을 제어하세요. 혼자 힘으로 해보고 더 좋은 방법을 찾아보세요 int main{ int x, y, xv, yv ; x=y=10; //시작 위치 xv=yv=1; //방향전환을 위한 값 while(1) { //delete_bar(x, y, bar_x); print_dot(x,y,' '); if(x <= MIN_X || x >= MAX_X) xv *= -1; if(y <= MIN_Y || y >= MAX_Y) yv*= -1; x += xv; y += yv; print_dot(x,y,'*'); delay(50); } return 0; }

  7. 자 이제, 화면에 bar ‘_______’ 를추가합니다. Voidprint_bar(int x, char *s,intsize) { } 의형태도 좋습니다. void print_bar(intx, ) { gotoxy(x, 17); // bar가 표시될 위치 printf("-------"); } void delete_bar(int x, int y, int bar_x) { inti; print_dot(x, y, ' '); for(i = bar_x ; i < bar_x+7 ; i++) //저위의 bar size가 7이므로. print_dot(i, 17, ' '); }

  8. 확장키 입력을 위한 define #define LEFT VK_LEFT #define RIGHT VK_RIGHT #define UP VK_UP #define DOWN VK_DOWN #define ESCAPE VK_ESCAPE void print_bar(int x) { gotoxy(x, 17); printf("-------"); } void delete_bar(int x, int y, int bar_x) { inti; print_dot(x, y, ' '); for(i = bar_x ; i < bar_x+7 ; i++) print_dot(i, 17, ' '); }

  9. int main( ) { (중략) x=y=10; //시작 위치 xv=yv=1; //방향전환을 위한 값 intbar_x = 17; //bar의 위치 while(1) • { • delete_bar(x, y, bar_x); • if(x <= MIN_X || x >= MAX_X) xv *= -1; • if(y <= MIN_Y || y >= MAX_Y) yv *= -1; • //bar에 닿았을 때도 방향을 바꾸게 하기 위해서if( (y == bar_x&& (x >= bar_x && x <= bar_x+ 7))) yv *= -1; • if(GetAsyncKeyState(LEFT) ) bar_x--; • if(GetAsyncKeyState(RIGHT)) bar_x++; • if(GetAsyncKeyState(ESCAPE)) { • system("cls"); • gotoxy(25,10); • system("종료합니다."); • break; • } • x += xv; • y += yv; • print_dot(x,y,'*'); • print_bar(bar_x); • delay(50); • } • return 0; } Bar를 추가하여 함께 이동시키는 주요 코드 • int main( int x, y, xv, yv ; x=y=10; //시작 위치 xv=yv=1; //방향전환을 위한 값 while(1) { //delete_bar(x, y, bar_x); print_dot(x,y,' '); if(x <= MIN_X || x >= MAX_X) xv *= -1; if(y <= MIN_Y || y >= MAX_Y) yv *= -1; x += xv; y += yv; print_dot(x,y,'*'); delay(50); } • return 0; • }

  10. Space를 누르면 위쪽으로 총알이 발사되게 ? • Space 키가 눌려졌는지 검사하는 부분 추가 • 총알이 발사되는 (것 처럼 보이는) 함수 작성합니다. • Shoot(int x, int y, char c) • X는 Bar의 중간위치 y는 bar의 초기위치를 인자로 받아. • c를 출력하도록 하세요 • Y위 위치가 Min_y보다 작을 때까지 반복.

  11. 나머지는 응용해보도록 하세요 Color 기능 벽돌추가 아이템 Sound 등

More Related