-
[플밍] 프로그래밍 switch문 질문.2012.08.02 AM 01:06
루리웹에 은근히 플밍 고수들 많으신거 같은데 도와주세요~
일단 언어는 c++인데 대부분 switch문은 비슷하니 상관 없을듯.
제가 하고자 하는게
키를 누르면 -> 그 키에 관한 bool값이 1이 되서 -> 캐릭터가 그것을 받아들이고 움직여야 하는데요.
키를 누르는 것을 확인할 때 스위치 문을 썼더니 상수가 아니라고 난리칩니다.
상수쓰면 상관 없긴 하는데, 나중에 옵션을 이용해서 조작키를 바꿀거라서 가능하면 변수가 먹히도록 하고싶어요.
제가 설명을 못해서 걍 코드 첨부.
//문제없는거
inline void keyDown(SDLKey i)
{
switch (i)
{
case SDLK_RIGHT : -nput.ri[0] = 1; break;
case SDLK_LEFT : -nput.le[0] = 1; break;
case SDLK_UP : -nput.up[0] = 1; break;
case SDLK_DOWN : -nput.dn[0] = 1; break;
}
}
좌측의 SDLK_~~은 SDL라이브러리에 정의된 상수입니다. 특정 키를 누르면 -nput내부의 대응키가 1로 바뀜.
//문제있는거
inline void keyDown(SDLKey i)
{
switch (i)
{
case -nputoption.ri[0] : -nput.ri[0] = 1; break;
case -nputoption.le[0] : -nput.le[0] = 1; break;
case -nputoption.up[0] : -nput.up[0] = 1; break;
case -nputoption.dn[0] : -nput.dn[0] = 1; break;
}
}
좌측의 -nputoption은 미리 지정해 놓은 키 값인데요, 이걸 나중에 옵션에서 변화시킬거라서 변수입니다.
근데 switch문은 상수만 먹어요. 즉 안됩니다.
이부분을 '빠르게' 어떻게 비슷하게 구현할 수 있을까요?
격투게임 만들거라서 시간이 굉장히 중요합니다;;
능력자분들 부탁드려요~
댓글 : 15 개
- 쏘류
- 2012/08/02 AM 01:15
if-else 쓰셈 ...
- 피오오오오오오오오오오오오오
- 2012/08/02 AM 01:16
변수로는 안되요 상수여만합니다.
- 피오오오오오오오오오오오오오
- 2012/08/02 AM 01:17
스위치문에서는 조건문안의 값이 정확하게 나와야 되는데 결과값이 변수이면 컴파일러가 못알아 먹어요
- 폭주초딩다낚아
- 2012/08/02 AM 01:17
쏘류//
최소한 사용하는 키가 abcdef 하고 up down left right select start 12개에다
2인용하면 2배인 24개인걸요;
매 프레임마다 확인하면 느릴 거 같은데;
최소한 사용하는 키가 abcdef 하고 up down left right select start 12개에다
2인용하면 2배인 24개인걸요;
매 프레임마다 확인하면 느릴 거 같은데;
- 쏘류
- 2012/08/02 AM 01:18
컴파일러느님이 알아서 다 해줌요
switch 쓰나 if-else 1000개 쓰나 결과물은 똑같음요
switch 쓰나 if-else 1000개 쓰나 결과물은 똑같음요
- V1046
- 2012/08/02 AM 01:20
쏘류님말씀에 격히동감.....
- 폭주초딩다낚아
- 2012/08/02 AM 01:20
쏘류// ?! 컴파일러느님은 대단하군요. 해보겠습니다.
- WhiteShadow
- 2012/08/02 AM 01:21
const int로 쓰시면 되지 않나요?
머... 그러면 -nputoption.ri[0] 값을 수정하지 못한다는 문제점이 있지만^^;
그게 아니면 if문이 답일듯 하네요
머... 그러면 -nputoption.ri[0] 값을 수정하지 못한다는 문제점이 있지만^^;
그게 아니면 if문이 답일듯 하네요
- 폭주초딩다낚아
- 2012/08/02 AM 01:21
if( ) { }
else if ( ) { }
else if ( ) { }
...
else{ }
이거 말하시는거죠?
else if ( ) { }
else if ( ) { }
...
else{ }
이거 말하시는거죠?
- 서울산업대학
- 2012/08/02 AM 01:21
switch문이나 if문이나 거기서 거기..
- 쏘류
- 2012/08/02 AM 01:21
ㅇㅇ
- 폭주초딩다낚아
- 2012/08/02 AM 01:26
생각보다 답변이 빠르네요 ㄷㄷ
- 날씨가 우중충
- 2012/08/02 AM 01:28
요즘 컴파일러들은 알아서 척척척...
하지만 콘솔게임쪽 같은걸 개발하실려면 컴파일러의 특성이 다 다르니 유의 하시길.
하지만 콘솔게임쪽 같은걸 개발하실려면 컴파일러의 특성이 다 다르니 유의 하시길.
- 폭주초딩다낚아
- 2012/08/02 AM 01:37
도와주신 분들 모두 감사합니다~
완성되면 한번 루리웹 올려볼게요.
완성되면 한번 루리웹 올려볼게요.
- 레이지군
- 2012/08/02 AM 01:39
문항 자체가 i 값이 무엇인가? 라는 건데
i 값을 변수랑 비교할 필요가 있나요?
일단 i값을 변수에 저장한 값과 같은지 비교를 하고
나머지 처리를 하시는게 나을듯 합니다.
ex>-nputoption.ri[0] 이 SDLK_RIGHT 일때
switch(i)
{
case SDLK_RIGHT :
-nput.ri[0] = 1;
//-nputoption.ri[0]을 변화시킨다면
if(i == -nputoption.ri[0])
-nputoption.ri[0] = SDLK_LEFT;
break;
.
.
.
.
i 값을 변수랑 비교할 필요가 있나요?
일단 i값을 변수에 저장한 값과 같은지 비교를 하고
나머지 처리를 하시는게 나을듯 합니다.
ex>-nputoption.ri[0] 이 SDLK_RIGHT 일때
switch(i)
{
case SDLK_RIGHT :
-nput.ri[0] = 1;
//-nputoption.ri[0]을 변화시킨다면
if(i == -nputoption.ri[0])
-nputoption.ri[0] = SDLK_LEFT;
break;
.
.
.
.
user error : Error. B.