맥스스크립트 심화

슬롯머신(5)

스크립팅하는애님 2019. 9. 30. 18:53
728x90
반응형

안녕하세요.

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

오늘도 역시 지난번에 이어 슬롯머신을 계속 진행하겠습니다.

 

우선은 플레이어가 가지고 있는 코인을 표시하는 것을 만들겠습니다.

'+'버튼 왼쪽에 0으로 표시되어 있는 숫자에 플레이어의 코인을 표시하겠습니다.

지금까지 작업한 스크립트를 열고 'on slot_roll mbuttondown pos do()'을 다음과 같이 수정해 주세요.

 

1
2
3
4
5
on slot_roll mbuttondown pos do
(
    playerCoin += 10
    coin_lab.text = playerCoin as string
)
 
cs

 

이상태로 실행하면 coin_lab의 출력물이 너무 왼쪽으로 치우쳐서 나오기 때문에 위치 조정을 하겠습니다.

 

1
label coin_lab "0" pos:[15,110]
cs

 

 

마우스 미들버튼으로 코인을 늘여 봤습니다.

원하는 대로 들어 갔네요. ㅎㅎ

 

이상태에서 '+', '-'버튼을 눌러도 플레이어의 코인이 줄어들거나 늘어나지 않습니다.

내부적으로는 값이 변하지만 UI상으로 표시하지 않았기 때문에 그렇습니다.

이 부분을 'on add_btn pressed do()'와 'on sub_btn pressed do()'를 수정하여 고치겠습니다.

'on add_btn pressed do()'의 'playerCoin -= 1' 다음과 'on sub_btn pressed do()'의 'playerCoin += 1'의 다음에

아래의 내용을 추가합니다.

 

1
coin_lab.text = playerCoin as string
cs

 

이제 정상적으로 coin_lab에 표시되는 playerCoin의 값이 나옵니다.

 

다음으로 'Run'버튼을 누르고 결과에 따라 Coin을 벌거나 잃는 것을 만들겠습니다.

실제로 가감의 로직을 짜기 전에 배열을 이용해 각 슬롯에 적혀있는 값을 저장하는 배열 변수를 만들겠습니다.

물론 슬롯 label의 Text값을 읽어서 처리할 수 있지만 값을 사용할 때는 가급적이면 변수에 저장하고 사용하는 것을 권장하겠습니다.

스크립트의 상단 변수 정의 부분에 다음을 추가해줍니다.

 

1
slotNumArry = #(#(0, 0, 0), #(0, 0, 0), #(0, 0, 0)
cs

 

사용될 배열은 2중 배열이고 총 9개가 필요하다는 것을 알고 있기 때문에 위와 같이 작업했습니다.

그다음으로 'Run' 버튼을 눌렀을 때 이 배열에 값이 입력되게 하야 합니다.

'on run_btn pressed do()' 이벤트를 다음과 같이 수정해 줍니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
on run_btn pressed do
(        
    for i = 1 to 3 do
    (
        for j = 1 to 3 do
        (
            slotNum = random 1 9
            (execute("slot_roll.slot" + (i as string) + (j as string) + "_lab")).text = "  " + (slotNum as string)
            slotNumArry[i][j] = slotNum
        )
    )
)
 
cs

 

지금 상태에서는 실행을 해도 딱히 바뀐 것을 알 수 없습니다.

 

현재는 각 행에 배팅한 금액이 변수에 저장되기는 했지만 나중에 for문을 사용해 반복 작업을 하기 때문에 편의를 위해서 배열로 바꾸는 게 좋을 것 같습니다.

스크립트 상단의 'bet1Coin = 0', 'bet2Coin = 0', 'bet3Coin = 0'를 다음과 같이 배열 변수로 통합하겠습니다.

 

1
betLineCoin = #(0, 0, 0)
cs

 

이전에 만들어 놓은 변수가 삭제됐기 때문에 스크립트를 실행하면 오류가 뜰 것입니다.

'on add_btn pressed do()' 이벤트와 'on sub_btn pressed do()' 이벤트 안에 있는 bet1Coin, bet2Coin, bet3Coin을 

betLineCoin[1], betLineCoin[2], betLineCoin[3]으로 바꿔 주세요.

 

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
28
29
30
31
32
33
34
35
36
37
38
39
40
.
.
.
if(slotCount == 1) then
(
    betLineCoin[1] += 1
    bet1_lab.text = (betLineCoin[1] as string)
)
else if (slotCount == 2) then
(
    betLineCoin[2] += 1
    bet2_lab.text = (betLineCoin[2] as string)
)
else
(
    betLineCoin[3] += 1
    bet3_lab.text = (betLineCoin[3] as string)
    slotCount = 0
)
.
.
.
if(slotCount == 1) then
(
    betLineCoin[1] -= 1
    bet1_lab.text = (betLineCoin[1] as string)
    slotCount -= 1
)
else if (slotCount == 2) then
(
    betLineCoin[2] -= 1
    bet2_lab.text = (betLineCoin[2] as string)
    slotCount -= 1
)
else
(
    betLineCoin[3] -= 1
    bet3_lab.text = (betLineCoin[3] as string)            
    slotCount = 2
)
 
cs

 

오늘 끝내고 싶었는데 실제 배팅의 결과를 내는 작업은 다음 시간으로 미뤄야 할 것 같습니다.

다음에는 꼭 끝내도록 하죠. ㅎㅎ

728x90
반응형