내일배움캠프 26일차, 27일차 TIL : 개인과제 완성

woollim·2024년 11월 6일
1

내일배움캠프TIL

목록 보기
29/36
post-thumbnail

■ 학습 개요

오늘 계획

  • 동적 환경 조사
  • 점프대 : JumpPlatform(하양색 직사각형)
  • 아이템 데이터 : ItemData
  • 아이템 사용 : 강의 아이템 + 호박 아이템(사용시 이동속도 10초간 +10 상승)
  • [도전] 추가 UI : 시계, 스태미나(공격, 자원수집, 점프시 소모)
  • [도전] 3인칭 시점 : V키를 눌러서 시점변화
  • [도전] 움직이는 플랫폼 구현 : MovingPlatform(타고서 강을 건널 수 있음)
  • [도전] 벽타기 및 매달리기 : 벽을 보고 가까이서서 W, D키 입력시 벽을 오르 내립니다. 벽에 붙어있을때는 벽을 보도록 시야가 조절됩니다. 다른 곳을 보면 떨어집니다.
  • [도전] 다양한 아이템 구현 : 호박 아이템(사용시 이동속도 10초간 +10 상승)
  • [도전] 장비 장착 : 활 (장비시 이속 10 증가)
  • [도전] 레이저 트랩 : LaserTrap (닿으면 즉사합니다)
  • [도전] 상호작용 가능한 오브젝트 표시(모닥불, 참나무, 플랫폼, 암벽)
  • [도전] 플랫폼발사기 : RocketPlatform (올라가면 5초뒤 앞으로 발사됩니다)
  • [도전] 발전된 AI : 상호작용 Object들에 NavMeshObstacle 추가, NavMeshAgent.CalculatePath()로 이동 물가 오브젝트를 만나면 경로 변경
  • [추가] NPC에 MusicZone을 부착하여 근접하면 BGM 소리가 점점 커지도록 했습니다.

학습 회고

  • 시간이 촉박해서 기능구현을 우선적으로 만들었다. 기능만 있기 때문에 게임같지 않아서 아쉽다. 다음에는 시간분배를 제대로 해서 기획에도 투자를 해볼 예정이다.


■ 매일매일 알고리즘 6~8일차 (하)

○ 대소문자 바꿔서 출력하기

#include <iostream>
#include <string>

using namespace std;

int main(void) {
    string str;
    cin >> str;

    for (int i = 0; i < str.length(); i++)
    {
        if (isupper(str[i]))
        {
            str[i] = tolower(str[i]);
        }
        else if (islower(str[i]))
        {
            str[i] = toupper(str[i]);
        }
    }

    cout << str;
    return 0;
}
  • 다른 사람 풀이
#include <iostream>
#include <string>

using namespace std;

int main(void)
{
    string str;
    cin >> str;
    for (auto c : str)
    {
        if ('a' <= c && c <= 'z')
            c -= 'a' - 'A';
        else
            c += 'a' - 'A';
        cout << c;
    }
    return 0;
}

○ 문자 반복 출력하기

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, int n) {
    string answer = "";

    for (int i = 0; i < my_string.length(); i++)
    {
        for (int j = 0; j < n; j++)
        {
            answer += my_string[i];
        }
    }
    return answer;
}

○ 약수 구하기

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n) {
    vector<int> answer;
    int temp = 0;

    do
    {
        temp++;
        if (n % temp == 0)
            answer.push_back(temp);
    } while (temp != n);
    return answer;
}


■ 매일매일 알고리즘 6~8일차 (중)

○ 바탕화면 정리

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<string> wallpaper) {
    vector<int> answer = { 50, 50, 0, 0 };
    // 0 : minX, 1 : minY
    // 2 : maxX, 3 : maxY

    for (int i = 0; i < wallpaper.size(); i++)
    {
        for (int j = 0; j < wallpaper[i].length(); j++)
        {
            if (wallpaper[i][j] == '#')
            {
                if (i <= answer[0])
                    answer[0] = i;
                if (i >= answer[2])
                    answer[2] = i;

                if (j <= answer[1])
                    answer[1] = j;
                if (j >= answer[3])
                    answer[3] = j;
            }
        }
    }
    answer[2]++;
    answer[3]++;
    return answer;
}

0개의 댓글