【C언어】크리스마스 트리를 커맨드 라인으로

13814 단어 C
아무래도, drumath입니다. 백화점이나 상가에서는 이미 크리스마스 준비가 시작되고 있네요. 아니, 또 크리보치라든지 말을 하지 않을까라고 계절입니다. 학생이라서 그렇게 초조해요.

크리스마스 트리



그런데 커맨드 라인에 크리스마스 트리를 그리고 싶다는 것을 생각한 것입니다. 나무의 모습으로는

¥
₩₩
₩₩₩
₩₩₩₩₩
₩₩
₩₩₩
₩₩₩₩₩
₩₩₩₩₩₩₩₩
₩₩₩
₩₩₩₩₩
₩₩₩₩₩₩₩₩
₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩
  ]
  ]
""""""
이런 느낌의 나무를 선 대상으로 만드는 코드를 그립니다. (덧붙여서 기분으로 피보나치 수열이 되어 있습니다.)

코드



코드는 이런 느낌입니다.

tree.c
#include "tree.h"

int main()
{
    color_change(0x0e);
    printf("%35s\n","*\0" );
    color_change(0x02);
    leaves_2();
    color_change(0x04);
    miki();
    color_change(0x0b);
    printf("Happy,Christmas!!\n");
    color_change(0x0f);

    return 0;
}

tree.h
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

#define ARRAY_MAX 35
#define LEEFF "\\"
#define DECO1 "*"
#define DECO2 "?"
#define DECO3 "&"
#define SEED 25

void pri_deco1();
void pri_deco2();
void pri_deco3();

void leaves_2()
{
    int a=1,b=2,tmp=0;
    int i,j,k;
    int x,y,z;

    srand((unsigned)time(NULL));

    printf("%35s\n",LEEFF);
    for(k=0;k<4;k++){
        x=a;
        y=b;
        for(i=0;i<5;i++){
            for(j=0;j<34-a;j++){
                printf(" ");
            }
            for(j=0;j<a;j++){
                if ((rand()%15)==0) {
                    pri_deco1();
                } else if((rand()%SEED)==1){
                    pri_deco2();
                } else if((rand()%SEED)==2){
                    pri_deco3();
                }else{
                    printf(LEEFF);
                }
            }
            printf(LEEFF);
            for(j=0;j<a;j++){
                if ((rand()%15)==0) {
                    pri_deco1();
                } else if((rand()%SEED)==1){
                    pri_deco2();
                } else if((rand()%SEED)==2){
                    pri_deco3();
                }else{
                    printf(LEEFF);
                }
            }
            printf("\n");
            tmp=a+b;
            a=b;
            b=tmp;
        }
        a=y;
        b=x+y;
        tmp=0;
    }
}

void miki()
{
    int i=0;
    for(i=0;i<5;i++){
        printf("%35s","|       \0" );
        printf("%7s\n","|" );
    }
    printf("%35s","-------\0" );
    printf("%s\n","-------\0" );
}
void color_change(char col)
{

  SetConsoleTextAttribute(
    GetStdHandle(STD_OUTPUT_HANDLE),
    FOREGROUND_INTENSITY | col );
}
void pri_deco1()
{
    color_change(0x0d);
    printf(DECO1);
    color_change(0x02);
}
void pri_deco2()
{
    color_change(0x0b);
    printf(DECO2);
    color_change(0x02);
}
void pri_deco3()
{
    color_change(0x0e);
    printf(DECO3);
    color_change(0x02);
}

이 코드를 실행하면 ↓


미토, 크리스마스 트리가 완성되었습니다.
이 코드는 난수로 장식을 출력하고 있기 때문에 장식의 위치가 매번 바뀌는 것도 재미 중 하나입니다 w

봐 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기