다운로드 링크가 정상적으로 보이지 않는 경우 애드블록을 해제해 주세요.
본문 바로가기
  • 혜음우리말화연구소
잘 사용하지 않는 카테고리/c++ 공략하기

간단한 UI 그리기 루틴

by WindowsTiger 2018. 2. 3.


예전부터 해고보 싶던것중 하나

CUI(console user interface)를 재현해보는것

그냥 오늘 갑자기 오랜만에 생각나서 10분 투자해서 이정도 만들어봄

나중에 해더로 만들어서 DOS/V에 사용하는게 목표이기에 플렛폼에 종속적인 함수는 분리해서 따로 함수로 만듦

이정도면 엄마도 허락하지 않을까

이거 계속 해보면 WinAPI도 이해될듯 원리는



#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <Windows.h>

#include <time.h>

#include <math.h>




#define BLACK 0

#define DARK_BLUE 1

#define DARK_GREEN 2

#define DARK_SKY 3

#define DARK_RED 4

#define DARK_PUPPLE 5

#define DARK_YELLOW 6

#define GRAY 7

#define DARK_GRAY 8

#define BLUE 9

#define GREEN 10

#define SKY 11

#define RED 12

#define PUPPLE 13

#define YELLOW 14

#define WHITE 15


#define TMAXWIDTH 118

#define TMAXHEIGHT 25

void disablecursor(void)

{

CONSOLE_CURSOR_INFO cur;

GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cur);

cur.bVisible=0;

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cur);

}


void enablecursor(void)

{

CONSOLE_CURSOR_INFO cur;

GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cur);

cur.bVisible=1;

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cur);

}



void setcolor(int background, int text) /*색깔 함수*/

{

SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), background*16+text);

}


void poscursor(int x, int y) /*커서이동 함수 부분*/

{

 COORD XY = {x, y};

 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), XY);

}


void drawbox(int color, int x1, int y1, int x2, int y2)

{

for(int i=x1;i<=x2+2;i++)

{

for(int j=y1;j<=y2+1;j++)

{

poscursor(i,j);

setcolor(color,color);

if(i==x2+1&&j!=y1||i==x2+2&&j!=y1||j==y2+1&&i!=x1)

setcolor(BLACK,BLACK);

else if(i==x2+1||i==x2+2||j==y2+1)

continue;

printf(" ");

}

}

poscursor(0,0);

}


void debugscreen(void)

{

poscursor(0,0);

for(int i=0;i<=TMAXHEIGHT;i++)

{

for(int j=0;j<=TMAXWIDTH;j++)

{

if((i+j)%2==1)

setcolor(GRAY,WHITE);

else

setcolor(WHITE,BLACK);

printf(" ");

}

printf("\n");

}

}


int main(int argc, char** argv) {

debugscreen();

drawbox(BLUE,2,4,48,16);

drawbox(RED,6,8,60,12);

drawbox(GREEN,0,4,6,8);

setcolor(WHITE,BLACK);

return 0;

}

'잘 사용하지 않는 카테고리 > c++ 공략하기' 카테고리의 다른 글

c언어 bomblink 1  (1) 2015.06.20

댓글