C언어 세션 5일차
4-2. for문
조건식을 더 짧게 쓸 수 있음
for (초기식; 조건식; 증감식)
{
명령어1;
...
}
Ex)
int = 1; // 초기식
while (i < 5) 조건식
++i // 증감식
Ex040201) for문 [중요 샘플 코드]

Ex040205) 최소값
// Main.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <limit.h>
int main(void)
{
int i;
int input;
int Min = INT_MAX;
for (i = 0; i < 5; ++i)
{
scanf("%d , &Input")
if (Input < Min)
{
Min = Input;
}
}
printf("%d", Min);
return 0;
}
4-3. do-while문
조건식 검사 없이 1회 순회(do) 후에 조건식 검사 후 다음 순회 진행
do
{
명령어1;
...
} while (조건식)
Ex040301) do-while문
// Main.c
#include <stdio.h>
int main(void)
{
int i = 0, Boom = 5;
do
{
printf("%d...\n", i);
++i;
} while (i < Boom);
printf("BOOM!!!");
return 0;
}
4-4. 무한 반복문, break, continue
무한 반복문
for문보다는 while문으로 구현하는 경우가 많음
int i;
for (i = 1; 1; ++i) // 조건식을 1이 아닌 그냥 비워두어도 참으로 간주됩니다.
{
명령어1;
...
}
```
falsy와 while의 조건문
while (0) // 0은 true일까요 false일까요? → False
{
명령어1;
...
}
break
반복문이나 switch-case문에서 탈출 할 때 break 구문을 사용. 해당 스코프에서만 탈출
다중 반복문 전체를 다 탈출하는게 아님에 주의
while (1)
{
while (2)
{
break; // while (2) 반복문만 탈출됨.
}
}
continue
특정 부분을 반복하고싶을때 쓰면 됨
- 반복문에서 continue 구문을 만나면 해당 회차는 건너뛰고 다음 회차 진행
- 반복문을 아예 탈출하는 게 아닌 특정 순회 번째만 무시
- 특정 순회에서는 아무 일도 안하고 다음 순회로 가고 싶을 수 있기 때문
// if (i % 2 == 1)가 Ture여서 continue; 로 가면 다시 if문으로 올라옴
if (i % 2 == 1)
{
++i;
continue;
}
// Main.c
#include <stdio.h>
int main(void)
{
int i = 0;
while (1)
{
if (i % 2 == 1)
{
++i;
continue;
}
if (5 <= i)
{
break;
}
printf("%d ", i);
++i;
}
return 0;
}
4-5. 이중 반복문
순회 변수로 i, j, k, … 순으로 작성
int i, j;
for (i 초기식; i 조건식 ; i 증감식)
{
for (j 초기식; j 조건식 ; j 증감식)
{
명령어;
...
}
}
Ex040501) “천천히 읽기”와 이중 반복문 [중요 샘플 코드]


이중 반복문 꿀팁
1. 줄의 개수를 파악하고 줄 번호 매기기.
2. 각 줄의 칸 개수를 파악하고 칸 번호 매기기.
3. 각 칸의 출력을 적기.
5-1. 1차원 배열
배열
- 자료구조 중 가장 기초가 되는 자료구조
- 사용할 메모리 크기를 고정해서 선언하는 것이 특징
- 선언된 후에는 절대 그 크기를 변경 불가
- 정적인 자료구조
배열 호텔
// 선언 방법
자료형 배열명[배열크기];
// 자료형 변수명;
// 선언과 동시에 초기화 방법
자료형 배열명[배열크기] = { 값0, 값1, ..., 값(배열크기-1) };
// 자료형 호텔명[객실개수] = { 사람0, 사람1, ..., 사람(객실개수-1) };
// 자료형 변수명 = 값;
Ex050101) 배열 1 [중요 샘플 코드]


배열 관련 고찰
- 배열의 index는 항상 0부터 시작
- 대부분의 소스코드들은 0부터 시작하기 때문에 익숙해질 필요가 있음
5-2 : 2차원 배열
2차원 배열
// 선언 방법
자료형 배열명[배열크기1][배열크기2];
// 선언과 동시에 초기화 방법
자료형 배열명[줄개수][칸개수] = { { 값00, 값01, ..., 값0(칸개수-1)},
...
{ { 값(줄개수-1)0, 값(줄개수-1)1, ..., 값(줄개수-1)(칸개수-1) } };
// 자료형 호텔명[줄개수][칸개수] = { { 객실00, 객실01, ... , 객실0(칸개수-1)},
// ...
// { { 객실(줄개수-1)0, 객실(줄개수-1)1, ... , 객실(줄개수-1)(칸개수-1) } };
"%2d" → 2칸확보 후 적어라
Blueprint FPS 슈팅 게임 개발 5일차
아이템, 게임 모드, HUD & 완성
포션을 배치했을 때 NavMesh이 없어지는 경우

BP_Item_Health → Collision Presets를 Custom으로 설정
→ Collision Enabled → No Collision 으로 선택하면 없어질거임

총알 아이템 배치
BP_Item_Ammo 복붙 후
- 변수 HealAmount → AmmoAmount로 변경 ( 변수타입을 Integer / 나중에 바꾸는게 오류없어서 편함)
- AmmoAmount를 30으로 설정
- StaticMesh(외형) 변경
BP_FPSCharcrter → AddHealth 선택 후 복제 (로직이 거의 비슷함)
→ AddAmmo로 이름변경 후 type을 Integer로 변경

MIN 은 총알이 30발 넘지 않게끔 설정해줌
변수 BaseDamage 생성 후 25로 설정
변수 MaxHealth / BaseDamage 눈 표시 클릭
→ 레벨에 있는 개미들(인스턴스)의 체력을 각각 제어 가능

개미 하나만 크기도 키우고, 체력 300 , 공격력 80 으로 설정 가능

만들었던 인스턴스와 아이템 배치
- 플레이어는 2층 안전한 곳에 리스폰하게 만들었음.
- 바로 앞 적 하나를 바로 마주칠 수 있게 하였음. (튜토리얼 느낌)

- 처음 적을 처치, 혹은 폭발 공격을 당한 뒤, 앞으로 오게 되면 자연스럽게 아이템과 상호작용 할 수 있게 배치를 하였음.
- 1인칭 시점에서 최대한 넓게 맵을 둘러 볼 수 있게끔 아이템을 배치하였음.

- 특정 어두운 부분은 Point Light로 밝게 해주었음




게임모드 & 패키징
UI 폴더 안에서 User Interface → Widget Blueprint

Canvas Panel 배치 → Text 배치
버튼 → Is Variable 체크

Blueprints → GameMode 파일 생성
Blueprint Class → Game Mode Base 선택
이름은 BP_MainGameMode
변수 Main HUD → Object Reference → WBP Main HUD


Window → Place Acotrs / World Settings 체크

FPS_Character를 삭제 → Place Acotrs → Player 검색 후 레벨에 배치
World Settings
- GameMode Override → BP_MainGameMode선택
- Selected GameMode → Default Pawn Class를 BP_FPSCharacter로 변경


- Result 텍스트와 버튼 Detail → visibility 검색 후 → Collapsed
- 게임 끝난 후 다시 Visible로 선택하면 됨

BP_MainGamemode
UpdateRemainingTime 타입: Float
Inputs에 DeltaTime을 설정 / 타입: Float
남은 시간은 120 (2분) 으로 설정

이름 제대로 안바꾸면 Get Time 쳐도 절대 안나옴 ★★★★★



Event Tick → Update Remaining Time 연결

Format Text에 {Minutes}:{Seconds} 형식으로 넣기

0초 이하일 때 0으로 잘 고정된다면
변수 IsWin (boolean) 생성 → 승리 한 후에 다른 로직으로 인해서 게임이 다시 패배가 되거나 하는 것을 막기 위함

남은시간이 0이하일때 Result에 “게임 패배!” 문자열 등록하고 Result 보이게 설정

WBP_MainHUD → 버튼 클릭 → Events 에 On Clicked이 있었음;; (Graph 들어가서 검색해도 따로 안나옴)


Disable Input 노드로 게임 종료 후 플레이어가 움직이지 못하게 설정
Set Input Mode UI Only노드 및 Show Mouse Cursor노드를 연결
ㄴ UI를 클릭할 수 있게, 마우스 커서를 보여줌

'본 캠프 TIL' 카테고리의 다른 글
| 26.04.28 TIL / 따라치기 세션 (1) (0) | 2026.04.28 |
|---|---|
| 26.04.27 TIL / C언어 6-1 ~ 포인터, 구조체 간단설명 / UE5 미니 발표회 (0) | 2026.04.27 |
| 26.04.23 TIL / C언어 3-1 ~ 4-1 / UE5 Day4 (0) | 2026.04.23 |
| 26.04.22 TIL / C언어 1-9 ~ 2-3 / UE5 Day3 (0) | 2026.04.22 |
| 26.04.21 TIL / C언어 1-5 ~ 1-8 / UE5 Day2 (0) | 2026.04.21 |