버그 해결을 위한 모든 질문을 던져
0 votes
202 views

만약에 적 오브젝트가 100개가 있습니다.

적 오브젝트는 hp, mp, speed 등을 가지고 있고 이러한 값들을 함수로 바꾸려고 합니다

 

1. 각각 함수로 이용해서 바꾸기

void ChangeHp(float hp) // hp, mp, speed 등 각각 함수를 가지고 있습니다

    for ( 오브젝트 수만큼 ) 

         enemy.hp = hp;

 

이런식으로 바꿀수 있을텐데 이런 경우는

hp, mp값이 동시에 바뀌는 경우에 반복을 hp 100번, mp 100번 을 돌아야되서 비효율적으로 생각됩니다

 

2. 데이터를 묶어서 한번에 대입

void ChangeData(EnemyData data)

    for ( 오브젝트 수만큼 ) 

    {

          enemy.hp = data.hp;

          enemy.mp = data.mp;

           ...

    }

 

이런경우로 데이터를 클래스로 묶어서 한번에 대입하는 경우가 있습니다

함수를 하나만 만들면 되기때문에 편하고 반복은 100번만 돌면 되지만

각각의 데이터를 전부 대입해야 되기때문에 애매하다고 생각됩니다만...

 

고수분들은 어떻게 사용하시나요?

asked (18 point) , 202 views

1 답변

+1 vote
고수는 아니고 업계에서 보면, 그리고 언어적인 면에서 봤을 때 초짜입니다만,

 

저는 1번으로 사용합니다만,

대신에 변수 안에서 오브젝트수만큼 돌지 않고, 오브젝트 수만큼 함수를 호출합니다.

그리고 단순 대입할 경우에는 함수자체를 인라인 형태로 만드시면 어차피 함수호출에 소모되는 비용이 그리 커지지는 않는걸로 알고 있습니다. 그 안에서 뭔가 계산을 한다면 계산식에 따라 달라지겠지만,

모든 함수는 무조건 0.001초 안에는 끝나게 만들면 됩니다.(단순 계산으로 천번 호출하면 1초긴 하지만, 프린트문 천번 호출한다고 1초 넘지는 않잖아요. 그런 의미입니다)

아무튼 저 같은 경우는 현재의 컴퓨팅 시스템을 신뢰하기에 겨우 100개 정도를 호출하는데 드는 비용에 대해 생각할정도는 아니라고 생각해서 1번 형태로 사용합니다.
answered (22 point)
답변 감사합니다!

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

221 질문
346 answers
356 댓글
375 users