소연의_개발일지
article thumbnail

(4.5) 학습일지

 

개발 진행 및 완료상황. 무엇을 더 하면 좋을지

오늘은 식목일을 기념하여 나무를 심는 특별한 과제를 내 주셨다.

그래서 저녁 먹기 전까지 완성하였고, 개인적으로 욕심이 생겨 몇 가지 기능을 추가했다.

나무를 자라게 하는 부분을 printf로 일일히 해서 if문으로 보여주게 만들었는데 다른 사람들은 for문으로 보여주는 방식을 사용했다. 이렇게 하면 훨씬 코드를 줄일 수 있을 것 같다. 시간이 된다면 이렇게도 수정해 봐야겠다.(과연)

 

오늘의 문제

조건문과 제어문 그리고 반복문을 이용해 나무를 심고 키워 봅시다.

- 숫자키 1번을 누르면 물을 준다.

- 숫자키 2번을 누르면 비료를 준다.

- 숫자키 3번을 누르면 사랑을 준다.

- 숫자키 4번을 누르면 관심을 준다.

- 숫자키 5번을 누르면 햇빛을 쐬어준다.

- 숫자키 6번을 누르면 식물약을 투어햔다.

→ 병충해에 노출이 안되어 있는 데 6번을 누르면 즉시사망

숫자키를 누를 때마다 랜덤으로 병충해에 노출되어 시들 시들 하게 합니다.

1~5번키를 누를때 마다 나무가 랜덤으로 화면에 자라는 모습이 노출되어야 합니다.

1~5번으로 인한 나무 자라는 수치는 각자 알아서 설정합니다.

 


작성한 순서도

 

 

순서도 첫번째

왼쪽에 있는 규칙이 자체적으로 추가한 규칙입니다.

1. 물 3번 이상 -> 시들시들. 햇빛 2번 받아야 해결. 물3과 햇빛2가 같이 상쇄됨. 물4되면 죽음

2. 사랑 5번 이상 받으면 사랑에 지침. -> 성장 느려짐 or 성장 x

3. 관심 5번 이상 받으면 -> 성장점수 확률 높아짐

4. 햇빛 3번 이상 -> 시들시들. 물 2번 먹어야 해결. 1번과 같이 햇빛 3과 물 2가 상쇄됨. 햇빛 4면 죽음

5. 병충해 변수가 1 이상이면 나무를 표시하지 않고 병충해를 없애라고 알려줌. 병충해 3번이상인데 식물약 안주면 죽음

6. 10%의 확률로 성장포인트 대신 애정포인트를 얻음. 애정포인트에 따라 결과가 달라짐

7. 식물약을 5번 이상 먹으면 약중독으로 죽음

8. 31일(한달)안에 나무를 키워내야 함. 아니면 태풍으로 나무가 사라짐.

 

draw.io로 그린 2차 순서도

 

 

의사코드

#include <stdio.h>
int main()
{
    // 변수 지정
    // 1) 나무 심기 변수
    // 2) 병충해 변수
    // 3) 식물약 변수

    // 나무 심기 설명
    // 규칙 설명(병충해)

    // 6가지 조건 띄워주기
    /*내맘대로 조건
    1. 물을 주면 성장률이 +1 된다. but
    1-1. 3번 이상 주면 시들시들하게 된다. -> 햇빛 2번을 쫴어야 시들시들이 0 됨
    2. 비료를 주면 성장률이 + 2씩 된다.
    3. 사랑을 주면 성장률이 + 3씩 된다. -> 사랑을 5번 주면 성장하지 않음. 사랑에 살짝 지침
    4. 관심을 주면 성장률이 + 3씩 된다. -> 관심을 5번 이상 주면 관종나무가 되어 성장이 빨라짐. 5이상이면 성장률이 20%증가(3.6점씩 증가함)
    5. 햇빛을 주면 성장률이 + 1씩 된다.
    5-1. 햇빛을 3번 이상 주면 시들시들하게된다. -> 물 2번을 줘야 시들시들이 0 됨*/

    // 유저 선택
    // 랜덤으로 병충해 점수 주기(20% 확률로)
    // 6 선택시 식물약 투여 -> 병충해 변수 0 됨

    // 병충해 점수가 0인가?
    // 0이면 나무 심기
    // 1 이상이면 나무가 시들시들 하다고 알려줌 + 식물약 변수를 써야 한다고 알려줌

    // 나무 성장
    // 나무 성장한 모습 보여줌

    // 다 자랐는지 확인
    // 다 자랐으면? -> 나무와 함께 행복하게 잘 살았습니다.
    // 다 자라지 않았으면? -> 6가지 조건으로 회귀

    retrun 0;
}
 

 


작성한 코드(스압주의)

 

코드1

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    // 변수 지정
    int get_tree;              // 나무 기를지 결정
    int tree_love_point = 0;   // 나무 애정 포인트. 애정 포인트가 5가 될 때마다 결과가 달라짐
    char test;                 // 엔터 누르면 넘어가게 하기 위한 부분
    int user_choice;           // 유저의 선택
    int user_conviction;       // 유저의 확신(정말 선택할지 물음)
    int water = 0;             // 물(물 3번이상 먹으면 시들시들. 햇빛 2번 받아야 해결. 아니면 4번부터 죽음) --> 구현예정
    int plant_food;            // 비료 (뭔가 기능 추가를 위한 함수)
    int love = 0;              // 사랑(사랑이 5 이상이면 사랑에 질려서 성장확률이 낮아짐)
    int care = 0;              // 관심(관심이 5 이상이면 관종모묙이 되어서 성장확률이 높아짐)
    int sunshine = 0;          // 햇빛(햇빛 3번 이상 받으면 시들시들. 물 2번 먹어야 해결 아니면 죽음) --> 구현예정
    int tree_growth = 0;       // 나무 성장
    int pets_and_diseases = 0; // 병충해(병충해 변수가 1 이상이면 식물약 알림. 3 초과하면 죽음  )
    int medicine = 0;          // 식물약(약 5번 이상 먹으면 약의존증으로 죽음)
    int random_number;         // 랜덤 숫자
    int day = 0;               // 날짜(한달 안에 나무를 키워야 함)

    printf("|==========================나무, 나무를 심자!===========================|\n");
    printf("|\t\t\t\t\t\t\t\t\t|\n");
    printf("| 누군가는 내일 죽는다고 해도 한 그루의 나무를 심겠다 라고 했다죠....\t|\n");
    printf("| 당신도 애착나무 한 그루정도는 키워봐야 하지 않을까요?\t\t\t|\n");
    printf("| 마침 당신의 이웃이 새로 왔다며 어린 묘묙 한 그루를 주었습니다.\t|\n");
    printf("| 어린 묘목이 당신을 바라보는 것 같습니다...키우기를 선택할까요?\t|\n");
    printf("|\t\t\t\t\t\t\t\t\t|\n");
    printf("|=======================================================================|\n");
    printf("|\t\t\t\t\t\t\t\t\t|\n");
    printf("|\t\t 1:그래 내가 아니면 누가 키워!\t\t\t\t|\n");
    printf("|\t\t 2:나 식물 못키우는데.. 다른사람에게 준다.\t\t|\n");
    printf("|\t\t\t\t\t\t\t\t\t|\n");
    printf("|=======================================================================|\n");
    printf("당신의 선택은..? : ");
    scanf("%d", &get_tree);
    system("clear");
    if (get_tree == 1)
    {
        printf("=============================================================================\n");
        printf("              잘 생각하셨습니다!! 어린 묘묙이 기뻐하는 것 같습니다. \n");
        printf("                        애정 포인트가 1 증가합니다!!\n\n");
        tree_love_point++;
        printf("=============================================================================\n");
        printf("                나무를 잘 키우기 위해 힌트를 드리겠습니다.\n");
        printf("\t\t\t\t\t\t\t\t\t\t\n");
        printf("물, 비료, 사랑, 관심, 햇빛, 그리고 식물약을 적절히 주면서 키워야 합니다.\n");
        printf("물을 너무 많이 주거나 햇빛을 강하게 쬐어주면 시들게 됩니다..\n");
        printf("그리고 랜덤으로 병충해가 등장합니다. 식물약을 주면 병충해를 없앨 수 있습니다.\n");
        printf("하지만 병충해가 없는데 식물약을 주면 죽는다는 것을 기억하세요!\n");
        printf("애정포인트를 키우기 위해 노력해 보세요. 당신의 선택에 따라 결과가 달라집니다.\n");
        printf("한달이 지나면 태풍이 온다고 하는데...그때까지 키우지 못하면 사라질지도 모릅니다.\n");
        printf("규칙을 잘 읽었다면.. 이제 키우러 가보도록 합시다.\n");
        printf("\n");
        printf("엔터(enter)를 눌러주세요!\n");
        scanf("%c", &test);
        getchar();
        system("clear");
 

코드2

        for (int i = 0; i < 31; i++)
        {
            srand((unsigned)time(NULL)); // 랜덤값  for문 돌 때마다 바뀌게 여기에 넣어줌
            random_number = rand() % 100 + 1;
            day++; // whie문이 돌 때마다 날짜가 늘어남
            printf("%d일차 아침이 밝았습니다!\n", day);
            printf("묘묙의 상태를 봐야겠습니다...\n");
            printf("엔터를 눌러 창가로 이동하세요.\n");
            scanf("%c", &test);
            system("clear");
            printf("--------------------------------------------------------------\n");
            printf("                         오늘은 %d일\n", day);
            printf("                 현재 나무 성장 정도: %d/13\n", tree_growth);
            printf("                      병충해 상태: %d/3\n", pets_and_diseases);
            printf(" 물은 %d번, 햇빛은 %d번, 사랑은 %d번, 관심은 %d번 받았습니다.\n", water, sunshine, love, care);
            printf("--------------------------------------------------------------\n");

            printf("묘묙에게 어떤걸 줄까요?\n");
            if (pets_and_diseases > 0)
            {
                printf("병충해에 걸려 있습니다.. 식물약을 투여해 주세요!\n");
            }
            if (pets_and_diseases == 0)
            {
                if (tree_growth <= 0) // 0
                {
                    printf("아직 묘묙의 영혼만 존재합니다.\n");
                }
                else if (tree_growth == 1) // 1
                {
                    printf("  ______/____\\____\n"); // 1
                    printf("묘묙의 뿌리가 자라는 것 같습니다...\n");
                }
                else if (tree_growth == 2) // 2
                {
                    printf("         |  |\n");       // 2
                    printf("  ______/____\\____\n"); // 1
                    printf("묘묙의 뿌리가 좀 더 자라난 것 같습니다...\n");
                }
                else if (tree_growth == 3) // 3
                {
                    printf("         |  |\n");       // 3
                    printf("         |  |\n");       // 2
                    printf("  ______/____\\____\n"); // 1
                    printf("우습게도 이 나무는 그루터기부터 자랍니다...");
                }
                else if (tree_growth == 4) // 4
                {
                    printf("         | D|\n");       // 4
                    printf("         |  |\n");       // 3
                    printf("         |  |\n");       // 2
                    printf("  ______/____\\____\n"); // 1
                    printf("나무의 모양이 점점 잡혀갑니다...\n");
                }
                else if (tree_growth == 5) // 5
                {
                    printf("         |  |\n");       // 5
                    printf("         | D|\n");       // 4
                    printf("         |  |\n");       // 3
                    printf("         |  |\n");       // 2
                    printf("  ______/____\\____\n"); // 1
                    printf("나무 큰 줄기가 자라고 있습니다..!");
                }
                else if (tree_growth == 6) // 6
                {
                    printf("         |   /\n");      // 6
                    printf("         |  |\n");       // 5
                    printf("         | D|\n");       // 4
                    printf("         |  |\n");       // 3
                    printf("         |  |\n");       // 2
                    printf("  ______/____\\____\n"); // 1
                    printf("나무가지들이 자라나기 시작하는 것 같습니다...\n");
                }
                else if (tree_growth == 7) // 7
                {
                    printf("        \\  \\/ /\n");   // 7
                    printf("         |   /\n");      // 6
                    printf("         |  |\n");       // 5
                    printf("         | D|\n");       // 4
                    printf("         |  |\n");       // 3
                    printf("         |  |\n");       // 2
                    printf("  ______/____\\____\n"); // 1
                    printf("나무 줄기가 더 자라나고 있습니다...\n");
                    printf("절반 정도 자라난 것 같습니다.\n");
                }
                else if (tree_growth == 8) // 8
                {
                    printf("    ooo\\oo\\  /o/o\n"); // 8
                    printf("        \\  \\/ /\n");   // 7
                    printf("         |   /\n");      // 6
                    printf("         |  |\n");       // 5
                    printf("         | D|\n");       // 4
                    printf("         |  |\n");       // 3
                    printf("         |  |\n");       // 2
                    printf("  ______/____\\____\n"); // 1
                    printf("나무에 열매가 맺히기 시작합니다...\n");
                }
 
                else if (tree_growth == 9) // 9
                {
                    printf("  oxo xooxoooo o ooo\n"); // 9
                    printf("    ooo\\oo\\  /o/o\n");  // 8
                    printf("        \\  \\/ /\n");    // 7
                    printf("         |   /\n");       // 6
                    printf("         |  |\n");        // 5
                    printf("         | D|\n");        // 4
                    printf("         |  |\n");        // 3
                    printf("         |  |\n");        // 2
                    printf("  ______/____\\____\n");  // 1
                    printf("나무에 나뭇잎이 돋아나기 시작합니다...\n");
                }
                else if (tree_growth == 10) // 10
                {
                    printf(" oxo o oxoxo  xoxxoxo\n"); // 10
                    printf("  oxo xooxoooo o ooo\n");  // 9
                    printf("    ooo\\oo\\  /o/o\n");   // 8
                    printf("        \\  \\/ /\n");     // 7
                    printf("         |   /\n");        // 6
                    printf("         |  |\n");         // 5
                    printf("         | D|\n");         // 4
                    printf("         |  |\n");         // 3
                    printf("         |  |\n");         // 2
                    printf("  ______/____\\____\n");   // 1
                    printf("나뭇잎이 더욱 풍성하게 자라납니다..\n");
                }
                else if (tree_growth == 11) // 11
                {

                    printf(" oooo xxoxoo ooo ooox\n"); // 11
                    printf(" oxo o oxoxo  xoxxoxo\n"); // 10
                    printf("  oxo xooxoooo o ooo\n");  // 9
                    printf("    ooo\\oo\\  /o/o\n");   // 8
                    printf("        \\  \\/ /\n");     // 7
                    printf("         |   /\n");        // 6
                    printf("         |  |\n");         // 5
                    printf("         | D|\n");         // 4
                    printf("         |  |\n");         // 3
                    printf("         |  |\n");         // 2
                    printf("  ______/____\\____\n");   // 1
                    printf("벌써 한여름인가요? 나뭇잎이 풍성하네요...\n");
                }
                else if (tree_growth == 12) // 12
                {
                    printf("  ooxoxo oo  oxoxooo\n");  // 12
                    printf(" oooo xxoxoo ooo ooox\n"); // 11
                    printf(" oxo o oxoxo  xoxxoxo\n"); // 10
                    printf("  oxo xooxoooo o ooo\n");  // 9
                    printf("    ooo\\oo\\  /o/o\n");   // 8
                    printf("        \\  \\/ /\n");     // 7
                    printf("         |   /\n");        // 6
                    printf("         |  |\n");         // 5
                    printf("         | D|\n");         // 4
                    printf("         |  |\n");         // 3
                    printf("         |  |\n");         // 2
                    printf("  ______/____\\____\n");   // 1
                    printf("묘묙에서 어엿한 나무로 성장했습니다...\n");
                    printf("다음 턴에서는 완연한 성장을 기대해도 될 것 같습니다!\n");
                }
                else if (tree_growth == 13) // 13
                {
                    printf("    oxoxoo    ooxoo\n");   // 13
                    printf("  ooxoxo oo  oxoxooo\n");  // 12
                    printf(" oooo xxoxoo ooo ooox\n"); // 11
                    printf(" oxo o oxoxo  xoxxoxo\n"); // 10
                    printf("  oxo xooxoooo o ooo\n");  // 9
                    printf("    ooo\\oo\\  /o/o\n");   // 8
                    printf("        \\  \\/ /\n");     // 7
                    printf("         |   /\n");        // 6
                    printf("         |  |\n");         // 5
                    printf("         | D|\n");         // 4
                    printf("         |  |\n");         // 3
                    printf("         |  |\n");         // 2
                    printf("  ______/____\\____\n");   // 1
                    printf("나무가 온전히 자라났습니다!\n");
                }
            }
            printf("\n");
            // 6가지 조건 띄워주기
            printf("|==========OPTION=========|\n");
            printf("| 1. 물주기               |\n");
            printf("| 2. 비료 주기            |\n");
            printf("| 3. 사랑 주기            |\n");
            printf("| 4. 관심 주기            |\n");
            printf("| 5. 햇빛 주기            |\n");
            printf("| 6. 식물약 투여          |\n");
            printf("|=========================|\n");
 
            if (user_choice == 1)
            {

                water++;
                if (water >= 3)
                {
                    printf("다음 턴에는 햇빛을 쬐게 해줘야 할 것 같습니다...\n");
                    printf("묘묙이 물을 많이 먹어 말랑말랑 합니다.. 뿌리가 썩을지도 모릅니다.\n");
                    if (sunshine >= 2)
                    {
                        printf("물을 많이 먹었지만 햇살을 받아 살아났습니다!\n");
                        printf("물과 햇살이 2씩 상쇄됩니다.\n");
                        sunshine = sunshine - 2;
                        water = water - 2;
                    }
                }
                if (random_number <= 20)
                {
                    pets_and_diseases++;
                    printf("병충해에 걸렸습니다...\n");
                    printf("식물약을 줘야 할 것 같습니다.\n");
                }
                else if (random_number >= 21 && random_number < 40)
                {
                    printf("묘묙에 물을 주었지만 아쉽게도 성장은 일어나지 않았습니다.\n");
                }
                else if (random_number >= 41 && random_number < 70)
                {
                    tree_growth++;
                    printf("묘묙이 물을 마시면서 기지개를 핍니다...\n");
                    printf("1만큼 성장합니다!\n");
                }
                else if (random_number >= 71 && random_number == 90)
                {
                    tree_growth += 2;
                    printf("묘묙이 물을 마시면서 기뻐합니다...\n");
                    printf("2만큼 성장합니다!\n");
                }
                else if (random_number >= 91 && random_number <= 100)
                {
                    tree_love_point++;
                    printf("물을 마셨지만 변화가 없어 보입니다...\n");
                    printf("하지만 애정포인트가 1 증가합니다\n");
                }
            }
            if (user_choice == 2)
            {

                if (random_number <= 20)
                {
                    pets_and_diseases++;
                    printf("병충해에 걸렸습니다...\n");
                    printf("식물약을 줘야 할 것 같습니다.\n");
                }
                else if (random_number >= 21 && random_number < 40)
                {
                    printf("묘묙에 비료를 주었지만 아쉽게도 성장은 일어나지 않았습니다.\n");
                }
                else if (random_number >= 41 && random_number < 70)
                {
                    tree_growth++;
                    printf("묘묙이 비료를 먹으면서 하품을 합니다...\n");
                    printf("1만큼 성장합니다!\n");
                }
                else if (random_number >= 71 && random_number == 90)
                {
                    tree_growth += 2;
                    printf("묘묙이 비료를 먹으면서 기뻐합니다...\n");
                    printf("2만큼 성장합니다!\n");
                }
                else if (random_number >= 91 && random_number <= 100)
                {
                    tree_love_point++;
                    printf("비료를 주었지만 변화가 없어 보입니다...\n");
                    printf("하지만 애정포인트가 1 증가합니다!\n");
                }
            }
 
            if (user_choice == 3)
            {
                love++;
                // 사랑이 5 이상일 경우 사랑에 질려 성장률 느려짐
                if (love >= 5)
                {
                    printf("사랑이 너무 넘쳐나서 나무가 사랑에 지쳤습니다.");
                    printf("성장이 느려집니다...");
                    random_number = rand() % 70 + 10;
                }

                if (random_number <= 20)
                {
                    pets_and_diseases++;
                    printf("병충해에 걸렸습니다...\n");
                    printf("식물약을 줘야 할 것 같습니다.\n");
                }
                else if (random_number >= 21 && random_number < 40)
                {
                    printf("묘묙에 사랑을 주었지만 모른 척 합니다... 성장은 일어나지 않았습니다.\n");
                }
                else if (random_number >= 41 && random_number < 70)
                {
                    tree_growth++;
                    printf("묘묙이 사랑을 받으며 행복해합니다...\n");
                    printf("1만큼 성장합니다!\n");
                }
                else if (random_number >= 71 && random_number == 90)
                {
                    tree_growth += 2;
                    printf("묘묙이 사랑을 느끼며 황홀해합니다...\n");
                    printf("2만큼 성장합니다!\n");
                }
                else if (random_number >= 91 && random_number <= 100)
                {
                    tree_love_point++;
                    printf("사랑을 주었지만 변화가 없어 보입니다...\n");
                    printf("하지만 당신에 대한 애정포인트가 1 증가합니다!\n");
                }
            }
            if (user_choice == 4)
            {

                care++;
                if (care >= 5)
                {
                    printf("관심을 많이받아 묘묙의 가지가 살랑대는 것 같이 느껴집니다.\n");
                    printf("성장 확률이 높아집니다!!\n");
                    random_number = rand() % 61 + 40; // 관심 높으면 확률 높이기
                }
                if (random_number <= 20)
                {
                    pets_and_diseases++;
                    printf("병충해에 걸렸습니다...\n");
                    printf("식물약을 줘야 할 것 같습니다.\n");
                }
                else if (random_number >= 21 && random_number < 40)
                {
                    printf("묘묙이 당신의 관심을 모른척합니다... 아쉽게도 성장은 일어나지 않았습니다.\n");
                }
                else if (random_number >= 41 && random_number < 70)
                {
                    tree_growth++;
                    printf("묘묙이 관심을 받고 미소를 짓는 것 같습니다...\n");
                    printf("1만큼 성장합니다!\n");
                }
                else if (random_number >= 71 && random_number == 90)
                {
                    tree_growth += 2;
                    printf("묘묙이 관심을 받고 행복해합니다...\n");
                    printf("2만큼 성장합니다!\n");
                }
                else if (random_number >= 91 && random_number <= 100)
                {
                    tree_love_point++;
                    printf("관심을 주었지만 변화가 없어 보입니다...\n");
                    printf("하지만 애정포인트가 1 증가합니다!\n");
                }
            }
            if (user_choice == 5)
            {

                sunshine++;
                if (sunshine >= 3)
                {
                    printf("다음 턴에는 물을 줘야할 것 같습니다...햇빛 세기가 강합니다.\n");
                    printf("묘묙의 상태가 조금 안좋은 것 같습니다...\n");
                    if (water >= 2)
                    {
                        printf("햇살이 강했지만 물을 주어서 다행입니다.\n");
                        printf("물과 햇살이 2씩 상쇄됩니다.\n");
                        sunshine -= 2;
                        water -= 2;
                    }
                }
                if (random_number <= 20)
                {
                    pets_and_diseases++;
                    printf("햇빛을 충분히 받지 못했는지..병충해에 걸렸습니다...\n");
                    printf("식물약을 줘야 할 것 같습니다.\n");
                }
                else if (random_number >= 21 && random_number < 40)
                {
                    printf("묘묙에 햇빛을 주었지만 아쉽게도 성장은 일어나지 않았습니다.\n");
                }
                else if (random_number >= 41 && random_number < 70)
                {
                    tree_growth++;
                    printf("묘묙이 햇빛을 받으면서 스트레칭을 합니다...\n");
                    printf("1만큼 성장합니다!\n");
                }
                else if (random_number >= 71 && random_number == 90)
                {
                    tree_growth += 2;
                    printf("묘묙이 햇빛을 느끼면서 콧노래를 붑니다...\n");
                    printf("2만큼 성장합니다!\n");
                }
                else if (random_number >= 91 && random_number <= 100)
                {
                    tree_love_point++;
                    printf("햇빛을 주었지만 변화가 없어 보입니다...\n");
                    printf("하지만 애정포인트가 1 증가합니다\n");
                }
            }
 
            if (user_choice == 6)
            {
                if (pets_and_diseases == 0)
                {
                    printf("병충해가 걸리지 않았는데 식물약을 주고 말았습니다!\n");
                    printf("나무는 사망했습니다....\n");
                    return 0;
                }
                pets_and_diseases = 0;
                medicine++;
                if (medicine == 5)
                {
                    printf("묘목이 약을 너무 많이 먹어 약에 중독되었습니다.\n");
                    printf("이제 약 없이 살 수 없는 몸이 되었습니다.\n");
                    printf("나무병원으로 이송합니다...이제 다시는 묘묙을 볼 수 없습니다.\n");
                    return 0;
                }
                else
                {
                    tree_love_point++;
                    printf("식물약을 주었습니다! 병충해가 깨끗하게 나았습니다.\n");
                    printf("식물이 감사함을 느낍니다. 애정이 1 증가합니다!\n");
                    printf("\n");
                    printf("하지만 약에만 너무 의존하는것도 좋지 않습니다..\n");
                    printf("이 점을 꼭 명심해 주세요...\n\n");
                }
            }
            //
            if (tree_growth == 13)
            {
                printf("%d번째 날 저녁.. 어떤 소리가 들려 창가에 나가보니..\n", day);
                printf("묘묙이 다 자랐습니다! 떨어진 것은 사과였습니다.\n");
                printf("묘묙이 행복하다는 듯 미소 짓는 것 같습니다..\n");
                printf("당신은 사과나무 한 그루를 키워냈습니다.\n");
                if (tree_love_point <= 3)
                {
                    printf("나무 밑에서 사과 한개를 주웠습니다. 귀엽습니다.");
                }
                if (tree_love_point <= 5)
                {
                    printf("나무 밑에서 사과 다섯개를 주웠습니다. 나무의 사랑이 은은히 느껴집니다...");
                }
                if (tree_love_point <= 7)
                {
                    printf("나무 밑에 사과가 가득합니다. 나무의 사랑이 가득 느껴집니다...");
                    printf("나무가 4월 5일은 식목일이라고 말해주는 것 같습니다.\n");
                }
                return 0;
            }
            if (pets_and_diseases >= 3 && user_choice != 6)
            { // 병충해가 3 이상인데 식물약 안주면 나무가 말라죽음
                printf("나무가 시름시름..말라갑니다.\n");
                printf("병충해를 관리하지 못했습니다.\n");
                printf("키우기 종료!");
                return 0;
            }
            if (tree_growth < 13)
            {
                printf("아직 묘묙을 성장시키려면 인내심이 필요해 보입니다...\n");
                printf("엔터를 눌러 침실로 이동합니다. 인내심은 잠에서 나오는 법!\n");
                scanf("%c", &test);
                getchar();
                system("clear");
            }
            random_number = rand() % 100 + 1; // 랜덤값 초기화
        }
        if (day >= 31)
        {
            printf("아뿔싸... 태풍이 와서 나무가 사라져 버렸습니다...\n");
            printf("허망한 마음을 감출 수 없습니다.\n");
            printf("눈물을 머금고 묘묙을 보내주겠습니다.");
            printf("%2f만큼 자라났던 나무가 벌써 보고싶습니다.\n", (double)tree_growth / 13 * 100);
            return 0;
        }
    }
    else if (get_tree == 2)
    {
        printf("어린 묘묙이 당신의 선택을 기억합니다...\n");
        printf("게임 종료!\n");
        // 종료
    }

    // 6가지 조건 띄워주기
    /*내맘대로 조건(일단 다 0, 1, 2 중 하나로 설정하고, 0은 안 자람, 1은 1만큼 자람, 2는 2만큼 자람, 3은 병충해)
    1. 물을 3번 이상 주면 시들시들하게 된다. -> 햇빛 2번을 쫴어야 시들시들이 0 됨
    2. 사랑을 5번 주면 성장하지 않음. 사랑에 살짝 지침
    4. 관심을 5번 이상 주면 관종나무가 되어 성장률이 높아짐.
    5. 햇빛을 3번 이상 주면 시들시들하게된다. -> 물 2번을 줘야 시들시들이 0 됨*/

    // 유저 선택
    // 랜덤으로 병충해 점수 주기(20% 확률로)
    // 6 선택시 식물약 투여 -> 병충해 변수 0 됨

    // 병충해 점수가 0인가?
    // 0이면 나무 심기
    // 1 이상이면 나무가 시들시들 하다고 알려줌 + 식물약 변수를 써야 한다고 알려줌

    // 나무 성장
    // 나무 성장한 모습 보여줌

    // 다 자랐는지 확인
    // 다 자랐으면? -> 나무와 함께 행복하게 잘 살았습니다.
    // 다 자라지 않았으면? -> 6가지 조건으로 회귀

    return 0;
}
 

 

업무, 개발 중 발생한 이슈/고민 또는 이를 해결한 내용

 

1. 나무 성장률이 증가하지 않는 문제

-> 나무 성장률을 올리는 변수들이 초기값 0으로 설정 안했기 때문

 

2. 성장 확률 높히기

나는 1부터 100까지 랜덤 숫자를 추출해

1~20: 병충해, 21~41: 성장포인트 0점, 41~70: 성장포인트 1점, 71~90: 성장포인트 2점, 91~100: 애정포인트 1점을 주는 식으로 만들었다.

그래서 이 값의 범위만 바꿔주는 식으로 바꿔서 rand() % 61 + 40으로 바꿔줬다.

% 61을 취하는 이유는 0부터 60까지의 값이 랜덤하게 생성될 수 있게 하고,

여기에 40을 더하면 40부터 100까지의 값이 생성된다!

 

3. 난수값이 고정된 문제

srand() 함수를 main() 함수의 시작 부분에서 호출하고,

rand() 함수로 생성한 난수를 for 루프 안에서 random_number 변수에 저장함으로써 해결. 당연히 for밖에서 지정하면 고정되는데 멍충. 코드가 기니까 너무 헷갈린다. 빨리 함수쓰게 해주세요!!!

 

4. 보여지는 부분이 자꾸 잘리는 문제


 

코드 구현 사진

 

 

처음에 등장하는 코드. 당연히 1번을 선택해야 합니다.
왜냐면 묘묙이 기억하기 때문
1을 누르면 나무 키우기 소개와 규칙을 알려줍니다.
창가로 이동하겠습니다.

for문으로 31일만에 나무를 다 키우게 조건을 걸어놓았습니다.

for문 시작. 사용자는 6가지 중 하나를 선택할 수 있습니다.
만약 병충해 상태가 0인데 식물약을 투여하면
그대로 사망합니다.

나무가 죽었는데 저런 표현이 맞는지 모르겠지만 암튼.. 게임이 끝납니다.

식물약을 주면 병충해가 낫지만

약을 5번 먹으면 약중독으로 죽기에 경고해 줍니다.

물을 줘 봤습니다. 아쉽게 성장은 일어나지 않았습니다.
물을 계속 주니까 경고를 줍니다.
이번에는 햇빛을 줘 봤습니다. 30%의 확률로 1만큼 성장했습니다.
1만큼 성장하니 뿌리가 자랍니다.
20%의 확률로 사랑을 느끼면서 자라납니다.
이런식으로 계속 상태창 확인이 가능합니다.
여기는 조금 더 고민해볼 내용 같습니다.. sleep 함수를 써서 정말 게임처럼 만들어 보고 싶거든요~
병충해에 걸려 있으면 나무를 안 보여줍니다.
햇빛을 5이상 받았는데 물을 안주면 말라 병충해에 걸립니다. 햇빛적으면 -> 병충해 가 인과관계가 맞는지 모르겠는데 일단 죽게 만들었습니다.
관심을 5번 이상 주면 성장 확률이 오릅니다.
여기에 사과나무 그림을 추가하면 더 좋았을 것 같습니다..
이건 한달동안 나무를 못 키웠을 때 나오는 상태창입니다.

한달 후면 여름인 세계관이라서 비가오면 뿌리를 다 내리지 못한 묘묙은 날아가 버립니다.(....)

저 숫자는 성장률인데, f앞에 .(점)을 안 찍어줘서 저리 표시되었습니다... 수정해야 함.

 

오늘 새로 배운 내용

없음


참고할 만한 레퍼런스 등

없음


 

특이사항(아이디어 메모 등)

반 사람들이 3중 for문을 구현해 나무를 기둥부터 출력하는 광경을 목격했다(...)

정말 대단해..... 나도 언젠가 저정도는 아니어도 흉내는 낼 수 있겠지..?

일단 내가 해야 할 것부터 하자.

 

 

 

회고

내가 생각한 기능을 생각날 때마다 추가하다 보니 순서도가 꼬인것을 느꼈다.

아무리 새로 추가하고 싶은 기능이 생겨도 머리에 힘줘 참자. 일단 로직을 다 짠 후에 추가하던지 하자.

그리고 오늘은 의사코드가 엉성해서 반복문 넣는 부분에서 시간을 많이 썼다. 자세하게 작성할 것!

그리고 디자인적인 부분에 너무 집착하지 말고 나중에 하나씩 추가하자.

어제 만든 턴제 게임에서는 디자인을 포기하니까 순서도-로직 짜는 부분이 아주 원활했는데 오늘은 그 반대였다. 자유도가 높으니 뭔갈 더 추가하려는 욕심이 커졌다.. 그리고 계속 순서도로 돌아오는 나자신을 발견하게 되었다.

결국 완성은 해냈지만 뭔가 해내지 못한 것같은 이 기분ㅠ 내일 오전에 가서 수정해야겠다.

 

 

 

해야 할 것

 

나무 병충해 나올 확률 너프하기

엔딩 나오면 나무 나오게 하기 (포인트에 따라 다른 느낌으로!)

디자인적인 부분 더 구상하기

햇빛 물 먹을때 if문 밖에 빼서 사용자에게 미리 경고주기

unsleep함수 넣어서 더 게임처럼 만들기

나무 이미지 이중for문으로 트리 만들어서 나무 성장률만큼 출력하기

그리고 아직도 못하고 있는 파이썬 공부ㅎ

체력 챙기기

 

 

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!