PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2012/10/10 09:56:16
Name 제로스
Subject 더블버퍼링 질문입니다..
C언어로 시계프로그램을 만들었는데 1/100초씩 Tick받아서 갱신해주는 거라 깜빡임이 너무 심하네요..

그래서 알아봤더니 더블버퍼링을 쓰면 된다고 하시는데 한번도 들어보거나 본적이 없어서 어떻게 써야할지 난감하네요..

검색을하고 공부하려고 해도 api를 몰라서 공부하고 쓰기엔 시간이 너무 촉박해서 염치없이 질문올립니다..

#include <stdio.h>
#include <Windows.h>
#include <tchar.h>
#include <stdlib.h>

void PrintConsoleScreen(const int nCurView, HANDLE hConsoleBuf[2], LPCTSTR lpCharacter, COORD dwWriteCoord);
void UpdateScreen(int *nCurView, HANDLE hConsoleBuf[2]);

void DrawRectangle(){
        char Mark[21][4] = { "☆","★","○","●","◎","◇","◆","□","■","△","▲","▽","▼","◈","▣","♤","♠","♡","♥","♧","♣"};
        int x,y;
        system("cls");
        for(y=0; y<20; y++){
                for(x=0; x<30; x++){
                        printf("%s", Mark[rand()%21]);
                }
                printf("\n");
        }
}

void DrawRectangleBuffering(int *nCurView, HANDLE hConsoleBuf[2]){
        COORD pos = {0, 0};
        int x,y;

        LPCTSTR Mark[21] = { _T("☆"),_T("★"),_T("○"),_T("●"),_T("◎"),_T("◇"),_T("◆"),_T("□"),_T("■"),_T("△"),_T("▲"),_T("▽"),_T("▼"),_T("◈"),_T("▣"),_T("♤"),_T("♠"),_T("♡"),_T("♥"),_T("♧"),_T("♣")};

        for(y=0; y<20; y++){
                pos.Y = y;
                for(x=0; x<30; x++){
                        pos.X = 2*x;
                        PrintConsoleScreen(*nCurView, hConsoleBuf, Mark[rand()%21],  pos);
                }
        }
        UpdateScreen(nCurView, hConsoleBuf);
}

int main(int argc, const char *argv[]){
        HANDLE hConsoleBuf[2];
        int nCurView=0;
        int i=0;
        hConsoleBuf[0] = CreateConsoleScreenBuffer(GENERIC_READ|GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
        hConsoleBuf[1] = CreateConsoleScreenBuffer(GENERIC_READ|GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
        while(i++<100){
                DrawRectangleBuffering(&nCurView, hConsoleBuf);
                //DrawRectangle();
                Sleep(100);
        }
        return 0;
}
void PrintConsoleScreen(const int nCurView, HANDLE hConsoleBuf[2], LPCTSTR lpCharacter, COORD dwWriteCoord)
{
        WriteConsoleOutputCharacter(hConsoleBuf[nCurView], lpCharacter, _tcslen(lpCharacter), dwWriteCoord, NULL);
}
void UpdateScreen(int *nCurView, HANDLE hConsoleBuf[2])
{
        SetConsoleActiveScreenBuffer(hConsoleBuf[*nCurView]);
        *nCurView = (*nCurView+1)%2;
}

인터넷에서 더블버퍼링이라고 올려진 코드를 찾아봤는데요 .. 위에 코드가 나오더라구요

제가 출력해주고 싶은건
char blockModel[10][5][4]=
{
    /* 첫 번째 블록
     ■■■■
     ■   ■
     ■   ■
     ■   ■
     ■■■■   */
        {
        {1, 1, 1, 1},
        {1, 0, 0, 1},
        {1, 0, 0, 1},
        {1, 0, 0, 1},
        {1, 1, 1, 1} },
        /* 두 번째 블록
                   ■
                   ■
                   ■
                   ■
                   ■   */
    {
        {0, 0, 0, 1},
        {0, 0, 0, 1},
        {0, 0, 0, 1},
        {0, 0, 0, 1},
        {0, 0, 0, 1} },  

이런식인데 저 코드를 어떻게 바꿔야 할까요? .. 제가 스스로해야하는데 이렇게 질문올려서 죄송합니다..

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
148762 이어폰 관리하는 요령이 있을까요? [3] 에릭노스먼1502 12/10/10 1502
148760 자본금 1억으로 자기 사업 하실 수 있다면 어떤거 하시고 싶으신가요? [21] WestSide2353 12/10/10 2353
148759 안드로이드 어플 초보자 질문 좀 드릴께요. 황신강림1752 12/10/10 1752
148757 [lol] 와드 타고 널뛰기 [9] PoeticWolf2845 12/10/10 2845
148756 matlab을 이용한 선형대수(linear algebra) 문제 풀이 [2] yjy3087 12/10/10 3087
148755 면도기 추천 좀 부탁드립니다 [9] SiveRiuS1759 12/10/10 1759
148753 [lol]오리아나랑 잭스 질문있습니다 [14] 기성용2366 12/10/10 2366
148752 더블버퍼링 질문입니다.. [1] 제로스2526 12/10/10 2526
148751 엑셀 좀 잘 아시는분 [1] Necrosis1506 12/10/10 1506
148750 확정일자와 전입신고 관련 질문 [5] 메모박스8653 12/10/10 8653
148749 중급회계 자본문제 질문입니다. [2] aura1978 12/10/10 1978
148748 [lol]경거망동하지마 가 무슨 뜻인가요? [5] 불굴의토스4077 12/10/10 4077
148747 불면증으로 고생하시는(or 하셨던) 분들 조언좀 듣고 싶습니다. [11] 친절한 메딕씨1612 12/10/10 1612
148746 오픽 독학하려는데 교재추천 부탁드립니다 [3] EsPoRTSZZang1707 12/10/10 1707
148745 [컴터] 제멋대로 전원... [4] 탄야1617 12/10/10 1617
148744 [lol] 심해탈출을 위해 스카너를 보고있습니다 [15] 리니시아2159 12/10/10 2159
148743 뻘질문인데 현제 20대중에 스타 한번도 안해본사람이 있을까요?? [19] 정공법2114 12/10/10 2114
148741 디카... 똑딱이에 대해 급히 조언 구합니다~~!!! 총알인생1312 12/10/10 1312
148740 본인 이름 한자요 [17] 어...2623 12/10/10 2623
148739 이 신발이 청바지에 어울릴까요? [6] Security2195 12/10/10 2195
148738 주 1~2회하는 팝핀스쿨 알려주세요! 저그네버다��1573 12/10/10 1573
148737 속 메스꺼움 방지 약이나 음료 없나요? [3] 손연재2270 12/10/10 2270
148736 로코도코는 진짜 어느팀으로 가는걸까요? [34] 마빠이2590 12/10/10 2590
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로