이 글을 보고 있는 당신이 피니엔진에서 패스워드 시스템을 만든다고 생각해보자.
예를 들어서 게임 초반에 무의미한 숫자 배열을 짧게 보여주고 후반부에 그 숫자 배열이 무엇이었는지 요구하는 시스템이다.
만약 나라면, 랜덤을 이용하여 값을 만들고 그걸 저장변수($)로 만든 후 묵혀놓고 후반부에 입력필드로 값을 받은 후 조건절로 확인할 것이다.
그럼 아래의 코드를 확인해보자.
위는 코드이며 아래는 실행 창이다.
왼쪽 상단에 랜덤으로 정해진 패스워드가 표시되니 플레이어는 화면 중앙에 배치된 '무엇을 입력할까요?'를 눌러 2081을 입력하면 코드에 맞게 오른쪽 위에 '정답입니다.'가 나와야 정상이다.
아니, 과연 그럴까?
![]() |
패스워드가 다른 건 상관하지 말자. |
그렇지 않다.
분명히 왼쪽 상단과 왼쪽 하단에 표시된 패스워드와 입력 값은 일치한다.
하지만 피니엔진은 '정답입니다.'를 산출하지 않았다.
똑같아 보이는 두 글자는 다른 것이란 뜻이다.
피니엔진엔 두 가지 자료형이 있다.
문자열과 숫자이다.
피니엔진에서 숫자는 그대로 인식하나 문자열은 ""가 붙어야 한다.
위 사진에서 k3는 에러가 난다.
문자를 넣고 싶으면 ""를 이용해야 한다.
위에 있던 예제가 에러가 난 이유는 아래 예제를 이용해 설명 가능하다.
k1은 문자열이며 k2는 숫자이다.
둘을 텍스트로 출력하면 분명히 같아 보이나 본질은 차이가 난다. 담겨 있는 그릇이 다르기 때문이다.
인간이 보면 엄청 쪼잔해 보이지만 엄연히 다른 것이다.
다시 첫 번째 예제를 보자.
생각을 해보면 랜덤 매크로는 숫자로 값을 받지만 입력필드는 문자열로 값을 받는 것이라 추측할 수 있고 이는 타입체크 매크로를 통해 확인 가능하다.
즉 자료형이 다르기 때문에 에러를 뱉어낸 것이었다.
자. 이제 원인을 찾았다.
해결할 일만 남았다.
피니엔진에서는 다행히 이를 해결할 방법이 존재한다. 바로 '행변환'이다.
이로써 깔끔하게 해결 가능하다.
솔직히 말해서 컴퓨터 언어를 어느 정도 공부한 사람이라면 에러의 원인이 어디에 있는지 바로 알아차릴 수 있는 에러였다. 하지만 공부한 적이 없던 상태로 피니엔진에 바로 뛰어든 사람이라면 '시방 이게 왜 에러가 떠'라는 생각을 했을 원인불명의 에러였을 것이다.
이 글이 도움이 되었길 바라며 글을 마친다.
댓글 없음:
댓글 쓰기