worldint
mathengi
worldint
전체 방문자
오늘
어제
  • 분류 전체보기 (152)
    • infra, cloud (4)
      • aws (4)
    • TIL,WIL(일간,주간 회고) (57)
    • 컴퓨터 공학 (5)
      • 정보통신 (3)
      • 컴퓨터 구조 (2)
    • Math (1)
      • linear algebra (0)
      • 명제와 집합 (1)
    • Operating System (8)
      • Linux Ubuntu (1)
    • programming (66)
      • c , c++ (9)
      • c# (0)
      • java (2)
      • javascript (14)
      • Python (4)
      • github (1)
      • programing terms (12)
      • html, css (2)
      • docker (3)
      • algorithm_datastructure (5)
      • database (11)
      • flutter(dart) (2)
    • 항해99 부트캠프 (7)
      • 사전교육 (7)
    • 보안관련 (1)

블로그 메뉴

    공지사항

    인기 글

    태그

    • AWS
    • Javascript
    • db데드락
    • EC2
    • MONGOOSE
    • MongoDB
    • docker
    • 디비데드락
    • NoSQL
    • Blue/Green
    • nodejs
    • ec2 #코드디플로이 #리눅스
    • NVM
    • flutter #provider #error
    • node
    • ci/cd
    • CloudFront

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    worldint

    mathengi

    [테트리스개발] 테두리 그리기
    programming/c , c++

    [테트리스개발] 테두리 그리기

    2021. 7. 4. 21:16

    [테트리스개발] 에서는 테트리스 개발하면서 배워간것들을 기록하는 테그입니다

     

    ※유의 사항

    콘솔창에 테두리를 그리기위해서 사용한 '┌', '─', '┐' 이러한 문자들의 칸수가 원하는 갯수가 안나온다

    처음 ┌ 에 "─" 이것을 넣을 때는 추가되지만 마지막"┐"을 넣으면 겹쳐진다.

    예를들어 마우스 커서로 선택했을때 5칸의 가로선을 하고싶다면

    ┌ =1개, ─ =4개 ,  ┐=1개

    이런식으로 6개의 문자가 필요하다.

    #include <stdio.h>
    #include <Windows.h>
    
    void setCursor(int x, int y) {
    	COORD pos = { x,y };
    	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
    }
    
    int main(void) {
    
    
    	int x= 0;
    	int y = 3;
    	int i = 0;
    
    	setCursor(x, y);
    	printf("┌");
    
    	for (i = 0; i < 4; i++) {
    		printf("─");
    	}
    
    	printf("┐");
        return 0;
        }

    위 코드를 실행하면 콘솔창에 아래와같이 나온다.

    저 하얀 부분이 마우스로 선택한 "─" 이 문자 하나의 크기이다

    for문으로 4번 반복되었지만 앞의 ┌과 뒤의 ┐이것으로 총 6개의 가로선이 생겨야될줄알았지만

    가로선은 5개가 생겼다, 뒤에 ㄱ 문자가 겹쳐진것같다.

    확인 해본 결과

    "─"이 문자를 한개 출력하면 마우스 커서 한칸이 아닌 두칸을 차지한다.

    하지만 두개부터는 4칸이아닌 3칸을 차지한다.

    아래는 "─"이 문자 두개출력한것과 한개 출력한것을 비교한것

    보면 길이가 두배가 아닌 1.5배이다.

     

     

    "┌" 이것은 두칸인데 뒤족한칸은 다음 선문자와 겹쳐진다

    "─" 이것은 두칸이고 뒤쪽한칸은 다음 선문자와 겹쳐진다

    "┐" 이건은 두칸이고 앞의한칸은 이전 선문자와 겹쳐진다

     

    다음은 세로선

    #include<stdio.h>
    #include<Windows.h>
    
    int main(void) {
    
    
    	int x= 1;
    	int y = 3;
    	int i = 0;
    
    	setCursor(x, y);
    	printf("┌");
    
    	for (i = 0; i < 2; i++) {
    		printf("─");
    	}
    	x = 1;
    	y = 4;
    	printf("┐");
    	setCursor(x, y);
    	printf("│");
    	
    	y = 5;
    	setCursor(x, y);
    	printf("│");
        
        return 0;
        }

    위와같이 세로선을 2번 출력해보면

    세로로는 겹쳐지지않고 세로마우스커서는 가로마우스커서의 2배정도로 확인된다.

     

    'programming > c , c++' 카테고리의 다른 글

    [테트리스개발] 콘솔창의 종료문구가 게임보드 중간에 낀 현상  (0) 2021.07.12
    [테트리스개발]c언어 난수생성  (0) 2021.07.12
    [테트리스개발]BOOL WINAPI 반환타입  (0) 2021.07.11
    (c언어) 변수에 대하여 알아야할것  (0) 2021.05.14
    tpyedef 키워드로 구조체만들기  (0) 2021.05.12
      'programming/c , c++' 카테고리의 다른 글
      • [테트리스개발]c언어 난수생성
      • [테트리스개발]BOOL WINAPI 반환타입
      • (c언어) 변수에 대하여 알아야할것
      • tpyedef 키워드로 구조체만들기
      worldint
      worldint
      공부한 내용들, 트러블 슈팅 용 블로그

      티스토리툴바