메뉴 건너뛰기

창조도시 기록보관소



 


이미 변수값을 픽쳐로 표시하는 강좌는 몇개가 있지만,


변수를 여러개 사용하는 방법이어서 변수두개로 표시하는 알고리즘 (?)을 짜봅시다


기본적으로 그림의표시는 표시할 번호(1~50인 그거) 가


변수로 지정이 되지않아서 약간의 노가다를 항상부담하셔야합니다.


 


또한 변수두개 (혹은 한개) 를 더 사용함으로써 노가다절감과 함께


픽쳐위치가 어긋난경우 (혹은 디자인이 바뀌어서 다른곳에 표시해야하는경우)


쉽게 바로잡을수있는 효과를 낼수있습니다.


 


등장할 변수


- 0001 : Disp X (표시할 위치, X좌표)


- 0002 : Disp Y (표시할 위치, Y좌표)


- 0003 : Disp Cal a (연산용 변수 1)


- 0004 : Disp Cal b (연산용 변수 2)


- 0005 : Exp (표시할 변수)


 


* 변수에는 반드시 이름을 붙여줍시다.


당신이 정말정말 천재라서


' 3년전이시간에 봤던 남자의 머리털갯수를 기억할수있다'


가 아니라면,


변수에 이름을 넣어 구분해주는건 정말 중요합니다.


예를 들어 오프닝때 키입력을 받으려고 변수 0001을 썼는데,


이 0001은 오프닝이외에는 쓰이지 않습니다.


그럼 당신은 이 0001을 다른곳에 다시 쓸수있는거죠.


(예를들어 당신이 쓸데없이 맨땅에 결정키를 누른횟수)


하지만 변수이름을 주지않아 이게 뭔지 모른다면 변수하나를 버리는셈입니다.


게임완성이후에 모두 지우더라도 (반드시 백업해둘것, 패치를위해)


꼭 설정해두세요.


 


◆변수의 조작 : [ 0001 : Disp X ] 대입 160


◆변수의 조작 : [ 0002 : Disp Y ] 대입 120


- 그림을 표시할 X, Y좌표를 정해줍니다. 기본적으로 (160,120)은 화면의 중심입니다.


(그러므로 320x240이 한화면의 크기)


◆변수의 조작 : [ 0003 : Disp Cal a ] 대입 변수 0005의 값


- 우선 연산용 변수에 표시할 변수 (여기서는 경험치로 하죠)를 대입합니다


◆변수의 조작 : [ 0003 : Disp Cal a ] 나눗셈 100000


- 그리고 100000으로 나눕니다. R2K류의 경우 소숫점은 버리므로 10만의 자리의 수가 구해집니다.


◆조건 분기 : 변수[0003]이 1


◆그림의 표시 : n , 숫자1 (V[0001],V[0002])


- n은 적당한 수로 해주세요. 참고로 R2K툴은 숫자가 높을수록 '화면의 위'에 있습니다.


즉, 1번과 3번의 픽쳐가 겹치면 3번이 위로옵니다. 그러므로 배경보다는 높은 숫자가 좋겠죠


또한 이미 픽쳐가 표시된 번호에 같은번호로 표시할경우 먼젓번의 픽쳐는 없어집니다. (당연한가?)


 :그 외의 경우


 ◆조건 분기 : 변수[0003]이 2


 ◆그림의 표시 : n , 숫자2 (V[0001],V[0002])





 :그 외의 경우


 ◆조건 분기 : 변수[0003]이 9


 ◆그림의 표시 : n , 숫자9 (V[0001],V[0002])


 :그 외의 경우


 ◆그림의 삭제 : n


 ◆변수의 조작 : [ 0001 : Disp X ] 감산 4


- 십만의 자리가 0이라면 공란이 되어야하므로


그림을 삭제해주고 표시할 X좌표를 적당히 감산해줍시다.


숫자하나의 크기가 3x5라면 4정도가 적당할거에요.


설명은 조금뒤에 해드리겠습니다.


 분기종료





 분기종료


- 자 여기까지 하셨으면 10만의 자리의 수를 구해 화면에 표시하게 되었습니다.


이제 만의 자리의 수를 구해보죠.


◆변수의 조작 : [ 0003 : Disp Cal a ] 곱셈 100000


- 10만을 곱하게 되면 만의자리 이하의 수를 버린 값이 됩니다.


(123456의경우 10만으로 나누어 1이된다음, 10만을곱해 100000이 됨)


◆변수의 조작 : [ 0004 : Disp Cal b ] 대입 변수 0005의 값


◆변수의 조작 : [ 0004 : Disp Cal b ] 감산 변수 0003의 값


- 드디어 연산용변수 2의 등장이로군요.


우선 여기에도 표시할 변수를 대입해주고, 연산용 1을 뺍니다.


그럼 십만의 자리가 날아가고 만의자리 이하가 남겠죠.


(123456의 경우 연산용 1이 100000이 되고, 이를 빼면 23456이 남음)

◆변수의 조작 : [ 0004 : Disp Cal b ] 나눗셈 10000

- 이걸 10000으로 나누면 만의자리의 수가 구해지겠죠.


◆변수의 조작 : [ 0001 : Disp X ] 가산 4


- 잊혀질뻔한 변수. 여기에 적당히 더해줍시다.


새삼스레 설명하자면 여기에 4를 가산해주면,


숫자가 이전보다 4픽셀만큼 오른쪽에 나오게 됩니다.


아까 0일경우 4를 뺀이유가,


자릿수가 낮아질수록 표시할 X좌표가 늘어나게 되는데


자리의 수가 0일경우 그림만 삭제하면 여백이생겨 보기싫게 됩니다.


그래서 앞으로 올 그림의 X좌표를 4만큼 앞으로 당긴겁니다


~ 그림의 표시 ~


◆조건 분기 : 변수[0004]이 1


◆그림의 표시 : m , 숫자1 (V[0001],V[0002])


- 아까 했던 그림의 표시를 하되, 번호는 아까와 다르게해주시고,


조건분기에 변수 0003 대신 0004를 씁시다.


 :그 외의 경우


 ◆조건 분기 : 변수[0004]이 2


 ◆그림의 표시 : m , 숫자2 (V[0001],V[0002])





 :그 외의 경우


 ◆조건 분기 : 변수[0004]이 9


 ◆그림의 표시 : m , 숫자9 (V[0001],V[0002])


  :그 외의 경우


  ◆조건 분기 : 변수[0005]이 100000이상


  ◆그림의 표시 : m , 숫자0 (V[0001],V[0002])


  :그 외의 경우


  ◆그림의 삭제 : m


  ◆변수의 조작 : [ 0001 : Disp X ] 감산 4


- 표시할변수가 10만이상이면 만의자리에 0이 올것이고


10만이상이 아니면 만의자리가 비게될것입니다 (만의자리가 0이므로


 분기종료





 분기종료


◆변수의 조작 : [ 0004 : Disp Cal b ] 곱셈 10000


◆변수의 조작 : [ 0004 : Disp Cal b ] 가산 변수 0003의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 대입 변수 0005의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 감산 변수 0004의 값


- 연산용2에 다시 10000을 곱하고, 연산용1의 값을 더한뒤,


연산용1에 표시할변수를 대입하고 연산용2의 값을 뺍니다.


그럼 천의자리 이하가 남겠죠.


(123456의경우 100000으로 나누면 1, 다시 100000을 곱하면 100000이되고, (연산용 1)


123456에 100000을 빼서 23456에 10000을 나눠 2, 10000을곱해 20000이되고, (연산용 2)


이를 더하면 연산용2는 120000의 값을 가지고,


123456에 120000을 빼면 3456이 남습니다, 어후 복잡해라)


◆변수의 조작 : [ 0003 : Disp Cal a ] 나눗셈 1000


~ 그림의 표시 ~


- 1000을 나눠 천의자리의 수를 구하고 그림의 표시를 해줍시다.


다시 처음처럼 조건분기에는 0003을 넣으시되,


0을 표시할때는 만의자리를 표시할때와 같은원리로


표시할변수가 10000이상인지 확인후 0표시or삭제를 결정합시다.


이를 반복하면 끝.


단, 마지막 1의자리의 수표시할때에는, 마지막에 표시할변수가 10이상은 빼셔야 됩니다.


안그럼 숫자가 0일경우 그냥 공백이 되어 변수가 증발해버리는 슬픈상황이 발생하죠


이상 설명은 끝이고 편의를 위해 아래는 설명을 떼고 소스만 나열해드리겠습니다


 


 


---


 


단, ~그림의 표시~ (a, b, c)의 경우


a는 표시할번호,


b는 자릿수 판정에 쓰이는 조건분기 '변수 b가 z' 할때 b


(z는 정수, 1~9)


c는 0을 표기판정할때 '표시할 변수가 c이상' 의 c


 


◆변수의 조작 : [ 0001 : Disp X ] 대입 160


◆변수의 조작 : [ 0002 : Disp Y ] 대입 120


◆변수의 조작 : [ 0003 : Disp Cal a ] 대입 변수 0005의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 나눗셈 100000


◆조건 분기 : 변수[0003]이 1


◆그림의 표시 : n , 숫자1 (V[0001],V[0002])


 :그 외의 경우


 ◆조건 분기 : 변수[0003]이 2


 ◆그림의 표시 : n , 숫자2 (V[0001],V[0002])





 :그 외의 경우


 ◆조건 분기 : 변수[0003]이 9


 ◆그림의 표시 : n , 숫자9 (V[0001],V[0002])


 :그 외의 경우


 ◆그림의 삭제 : n


 ◆변수의 조작 : [ 0001 : Disp X ] 감산 4


 분기종료





 분기종료


◆변수의 조작 : [ 0003 : Disp Cal a ] 곱셈 100000


◆변수의 조작 : [ 0004 : Disp Cal b ] 대입 변수 0005의 값


◆변수의 조작 : [ 0004 : Disp Cal b ] 감산 변수 0003의 값


◆변수의 조작 : [ 0004 : Disp Cal b ] 나눗셈 10000


◆변수의 조작 : [ 0001 : Disp X ] 가산 4


~ 그림의 표시 ~ (m,0004,100000)


◆조건 분기 : 변수[0004]이 1


◆그림의 표시 : m , 숫자1 (V[0001],V[0002])


 :그 외의 경우


 ◆조건 분기 : 변수[0004]이 2


 ◆그림의 표시 : m , 숫자2 (V[0001],V[0002])





 :그 외의 경우


 ◆조건 분기 : 변수[0004]이 9


 ◆그림의 표시 : m , 숫자9 (V[0001],V[0002])


  :그 외의 경우


  ◆조건 분기 : 변수[0005]이 100000이상


  ◆그림의 표시 : m , 숫자0 (V[0001],V[0002])


  :그 외의 경우


  ◆그림의 삭제 : m


  ◆변수의 조작 : [ 0001 : Disp X ] 감산 4


 분기종료





 분기종료


◆변수의 조작 : [ 0004 : Disp Cal b ] 곱셈 10000


◆변수의 조작 : [ 0004 : Disp Cal b ] 가산 변수 0003의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 대입 변수 0005의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 감산 변수 0004의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 나눗셈 1000


~ 그림의 표시 ~ (m2, 0003, 10000)


◆변수의 조작 : [ 0003 : Disp Cal a ] 곱셈 1000


◆변수의 조작 : [ 0003 : Disp Cal a ] 가산 변수 0004의 값


◆변수의 조작 : [ 0004 : Disp Cal b ] 대입 변수 0005의 값


◆변수의 조작 : [ 0004 : Disp Cal b ] 감산 변수 0003의 값


◆변수의 조작 : [ 0004 : Disp Cal b ] 나눗셈 100


~ 그림의 표시 ~ (m3, 0004, 1000)


◆변수의 조작 : [ 0004 : Disp Cal b ] 곱셈 100


◆변수의 조작 : [ 0004 : Disp Cal b ] 가산 변수 0003의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 대입 변수 0005의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 감산 변수 0004의 값


◆변수의 조작 : [ 0003 : Disp Cal a ] 나눗셈 10


~ 그림의 표시 ~ (m4, 0003, 100)


◆변수의 조작 : [ 0003 : Disp Cal a ] 곱셈 10


◆변수의 조작 : [ 0003 : Disp Cal a ] 가산 변수 0004의 값


◆변수의 조작 : [ 0004 : Disp Cal b ] 대입 변수 0005의 값


◆변수의 조작 : [ 0004 : Disp Cal b ] 감산 변수 0003의 값


~ 그림의 표시 ~ (m5, 0004, 조건분기없음)


 


- 그리고 첨부는 만들고있는 게임의 이벤트 일부를 짜집기한 그림.


예제나 다름없으니 지저분해도 참고하세요