맥스스크립트 심화

슬롯머신(1)

스크립팅하는애님 2019. 9. 23. 16:50
728x90
반응형

안녕하세요.

애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.

오늘은 무얼 할까 고민하다가 업무에 직접적으로 도움되는 것은 아니지만, 배열과 랜덤 함수를 사용하는 방법을 알 수 있는 슬롯머신을 만들려고 합니다.

사실저는 슬롯머신을 예전에 오락실에서 꽃놀이라는 게임으로 처음 접했는데, 

 

완성본은 다음과 같이 예상합니다.

 

 

슬롯 머신의 실행 방법을 생각해 보겠습니다.

1. 슬롯의 칸은 3 * 3으로 9칸이다.

2. 코인은 횡으로 3개 라인으로 걸 수 있습니다.

(물론 종으로도 걸수 있고 대각선 2개를 추가해서 총 8개를 걸 수 있지만, 기본개념을 확장하는 것이기 때문에 복잡하게 가지 않겠습니다.)

3. 슬롯은 0~9 까지의 숫자가 랜덤 하게 출력된다.

4. 각각의 라인에 코인은 최대 4까지 걸수 있다.

5. '+'와 '-'로 거는 코인의 양을 조절합니다.

6. Run버튼으로 실행합니다.

7. 슬롯이 맞으면 적당히 코인을 추가해 줍니다.

조금 더 공부하고 싶으신 분은 제가 만든 것에 추가로 더 작업을 하시면 좋을 것 같습니다.

 

우선은 위 이미지와 같이 UI를 이용하여 다이얼 로그를 만들도록 하겠습니다.

다음과 같이 입력하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
try(destroydialog slot_roll) catch()
 
rollout slot_roll "슬롯머신"
(
    label slot11_lab "  0" pos:[30,10] width:20 height:20 style_sunkenedge:true
    label slot12_lab "  0" pos:[70,10] width:20 height:20 style_sunkenedge:true
    label slot13_lab "  0" pos:[110,10] width:20 height:20 style_sunkenedge:true
    
    label slot21_lab "  0" pos:[30,45] width:20 height:20 style_sunkenedge:true
    label slot22_lab "  0" pos:[70,45] width:20 height:20 style_sunkenedge:true
    label slot23_lab "  0" pos:[110,45] width:20 height:20 style_sunkenedge:true
    
    label slot31_lab "  0" pos:[30,80] width:20 height:20 style_sunkenedge:true
    label slot32_lab "  0" pos:[70,80] width:20 height:20 style_sunkenedge:true
    label slot33_lab "  0" pos:[110,80] width:20 height:20 style_sunkenedge:true
    
   label bet2_lab "0" pos:[15,12]
   label bet1_lab "0" pos:[15,47]
   label bet3_lab "0" pos:[15,82]
    
    label coin_lab "0" pos:[5,110]
    
    button add_btn "+" pos:[30,110] width:25 height:25
    button sub_btn "-" pos:[60,110] width:25 height:25
    button run_btn "Run" pos:[90,110] width:40 height:25
)
createdialog slot_roll width:140 height:140
 
cs

 

위 스크립트에 대해서는 따로 설명드리지 않겠습니다.

특별한 기술이 들어가 있는것은 아니고 단순히 UI를 표시하는 것입니다.

(이해하기 어려우시면 '맥스 스크립트 기본 > UI'를 확인해 주세요.)

 

우선 '+' 버튼으로 코인을 추가하는 것에 대해 작업하겠습니다.

25번 라인 밑에 다음과 같이 작업을 하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
on add_btn pressed do
(
    betCoin += 1
    slotCount += 1
    
    if(slotCount == 1) then
    (
        bet1Coin += 1
        bet1_lab.text = (bet1Coin as string)
    )
    else if (slotCount == 2) then
    (
        bet2Coin += 1
        bet2_lab.text = (bet2Coin as string)
    )
    else
    (
        bet3Coin += 1
        bet3_lab.text = (bet3Coin as string)
        slotCount = 0
    )
)
 
cs

 

이상태에서는 실행을 해도 에러가 발생할것입니다.

이유는 여기서 사용한 변수에 대해 정의를 하지 않았기 때문이죠.

변수를 정의하기 전에 스크립트의 내용을 살펴보겠습니다.

 

betCoin은 베팅을 한 코인의 값을 저장하기 위한 'add'버튼을 누를 때마다 1씩 증가합니다.

이후에 작업을 추가하겠지만, 유저가 가지고 있는 코인에서 1씩 빠지는 형식입니다.

slotCount는 코인을 베팅할 때마다 카운트를 하여 베팅을 몇 번째 줄에 하는지를 알 수 있게 합니다.

'+'버튼을 누르면 우선 betCoin에 1을 추가합니다.

만약 처음 누르는 거라면 베팅 값은 1이 될 것입니다.

그 후 slotCount에 1을 추가해서 어느 라인에 베팅을 하는지 결정합니다.

다음으로 slotCount값으로 if문을 돌려 해당 라인에 베팅을 합니다.

slotCount값이 1이면 2번째 라인에, 2면 1번째 라인에,  그리고 3이면 3번째 라인에 베팅을 합니다.

각 라인에 bet1Coin, bet2Coin, bet3Coin 변수를 두어 라인마다 베팅되는 값을 따로 가지고 있습니다.

그리고 그 값을 UI상에 표시하여 사용자가 확인할 수 있도록 합니다.

여기서 확인할 부분은 slotCount가 3이 되어 else문으로 넘어갔을 때 slotCount = 0을 하여 다음에 '+'버튼을 눌렀을 때 다시 1로 돌아가도록 하였습니다.

 

다음으로 변수를 정의해 주겠습니다.

스크립트의 제일 위에 다음과 같이 변수들을 정의해 봅시다.

 

1
2
3
4
5
betCoin = 0
slotCount = 0
bet1Coin = 0
bet2Coin = 0
bet3Coin = 0
cs

 

여기까지 작업하셨다면, 실행해 봅시다.

 

 

'+'버튼을 누를 때 위와 같이 작동한다면 정상 작동합니다.

 

오늘은 여기까지 진행하겠습니다.

다음엔 아마 '-'버튼을 진행하게 될 것 같습니다.

728x90
반응형

'맥스스크립트 심화' 카테고리의 다른 글

슬롯머신(5)  (0) 2019.09.30
슬롯머신(4)  (0) 2019.09.26
슬롯머신(3)  (0) 2019.09.25
슬롯머신(2)  (0) 2019.09.24
Selection Filter확장  (0) 2019.09.19
자식노드 선택(4)  (2) 2019.09.18
자식노드 선택(3)  (0) 2019.09.17
자식노드 선택(2)  (0) 2019.09.16