■ 학습 개요
○ 오늘 계획
- 동적 환경 조사
- 점프대 : 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;
}