예전부터 해고보 싶던것중 하나
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 |
---|
댓글