본문 바로가기
게임개발

프로그래밍 기초 - 연산자

by seung_318 2021. 10. 22.

프로그래밍을 하기에 앞서 기초인 연산자(Operator)에 대해 알아보도록 하자.

연산자란 ? 상수, 변수값을 연산해주는 기호를 뜻한다. 

 

사칙 연산자

사용 방법은 다음과 같다.

int level;
float strength = 15.5f;
int exp = 1500;

exp = 1500 + 300;
exp = exp - 10;
// +, -를 사용하여 직접 더할 수도 있고 뺄 수도 있다.
level = exp / 500;
// 레벨당 경험치 500
strength = level * 3.5f;
// 힘은 레벨에 비례해서 3.5만큼 증가한다.

int nextExp = 500 - (exp % 500);
// %는 몫이 아닌 나머지를 출력한다.
// 이런식으로 경험치 500당 레벨 1로 다음 레벨을 위한 남은 경험치가 되겠다.

이런식으로 사칙연산을 이용해

경험치, 레벨, 힘을 만들어보았다.

출력 방법과 결과는 다음과 같다.

Debug.Log("플레이어의 총 경험치는 ?");
Debug.Log(exp);
Debug.Log("플레이어의 레벨은 ?");
Debug.Log(level);
Debug.Log("플레이어의 힘은 ?");
Debug.Log(strength);
Debug.Log("다음 레벨까지 남은 경험치는 ?");
Debug.Log(nextExp);

/*
출력 결과는 다음과 같다.

플레이어의 총 경험치는 ?
1790
플레이어의 레벨은 ?
3
플레이어의 힘은 ?
10.5
다음 레벨까지 남은 경험치는 ?
210
*/

 

문자열에 대한 연산자

게임을 하다 보면 이런식으로 닉네임 앞에 타이틀이 붙는 것을 자주 볼 수 있다.

타이틀을 넣는 방법은 간단하다.

string playerName = "이기자부대찌개";
string title = "[스나이퍼]";
Debug.Log("플레이어 닉네임");
Debug.Log(title + " " + playerName);
// 문자열과 문자열 사이에 +를 사용하여 쓰면 된다.

결과는 다음과 같다.

비교 연산자

비교 연산자를 이용해 레벨이 최대인지 알아보자.

level = 3;
bool isFullLevel = false;

int fullLevel = 99;
ifFullLevel = level == fullLevel;
// 서로 같음을 배교할 때는 ==을 사용하면 된다.
// 반대로 같지 않을 때는 !=을 사용하면 된다.
// 출력 결과는 다음과 같다.
Debug.Log("플레이어는 만렙입니까 ?" + isFullLevel);
// 현재 플레이어의 레벨은 3이므로 false가 출력된다.

그러면 다른 비교 연산자를 사용해 레벨 5가 넘으면 튜토리얼을 끝내는 코드도 작성해보자.

level = 3;
bool isFullLevel = false;

int fullLevel = 99;
ifFullLevel = level == fullLevel;
Debug.Log("플레이어는 만렙입니까 ?" + isFullLevel);
// 출력 : false

bool isEndTutorial = level > 5;
Debug.Log("튜토리얼이 끝났나요 ? " + isEndTutorial);
// 현재 레벨과 5를 비교해서 현재 레벨이 5보다 크면 True값을 출력한다.

부등호는 다음과 같이 4가의 형태로 사용할 수 있다.

>(초과)                       예) A > B            A 가 B보다 크다.

<(미만)                      예) A < B             A 가 B보다 작다.

>=(이상)                   예) A >= B          A 가 B보다 크거나 같다.

<=(이하)                   예) A <= B          A 가 B보다 작거나 같다. 

 

논리 연산자

그렇다면 AND와 OR을 사용해서도 나타내보자.

&& (AND)   : 두 값이 모두 true일 때만 true 출력                   예) A && B          A와 B 모두 참일 경우에만 참

|| (OR)   :  두 값 중 하나라도 true이면 true 출력                     예) A || B          A와 B 모두 거짓일 경우에만 거짓

int health = 30;
int mana = 25;
bool isBadCondition = health <= 50 && mana <= 20;
Debug.Log("플레이어의 상태가 나쁩니까 ? " + isBadCondition);
/* 
 코드를 해석하면 다음과 같다.
 생명은 50 이하 이면서 마나가 20 이하입니까 ?
 두 값이 모두 참일 때만 true를 출력하니
 생명은 50보다 작지만 마나는 20보다 크기 때문에 
 결과는 false가 출력된다.
 */
 
// || (OR) 연산자를 사용하여 재작성하면 다음과 같다.
 
int health = 30;
int mana = 25;
bool isBadCondition = health <= 50 || mana <= 20;
Debug.Log("플레이어의 상태가 나쁩니까 ? " + isBadCondition);
/*
코드를 해석하면 다음과 같다.
생명이 50 이하 이거나 마나가 20 이하 안가요 ?
두 값중 하나라도 true이면 true를 출력하기 때문에
결과는 true가 출력된다.
*/

 

삼항 연산자

?   A   :   Btrue일 때 A,  false일 때 B 출력

삼항 연산자는 여태 써왔던 연산자들과 달리 넣어줘야 할 값 또는 변수가 3개가 된다.

사용법은 다음과 같다.

bool isBadCondition = true;
string condition = isBadCondition ? "나쁨" : "좋음";
Debug.Log("플레이어의 상태가 나쁩니까 ? " + condition);
// : 앞에는 true 값일 때 나올 수 있는 값을 넣고
// : 뒤에는 false 값일 때 나올 수 있는 값을 넣는다.
/*
즉 ? 앞에 있는 값이 true이면 : 앞에 있는거, false이면 : 뒤에 있는거를 출력한다.
*/
// condition이 true값이기 때문에 결과는 나쁨이 출력된다.

 

참고 : 유튜브 골드메탈

'게임개발' 카테고리의 다른 글

프로그래밍 기초 - 함수  (0) 2021.11.03
프로그래밍 기초 - 반복문  (0) 2021.11.02
프로그래밍 기초 - 조건문  (0) 2021.10.28
프로그래밍 기초 - 변수  (0) 2021.10.21
[Unity] 기본 세팅 & 도구 소개  (0) 2021.10.20

댓글