본문 바로가기

엑셀 & VBA

2-3. Snake 게임판 초기화 VBA 코드 만들기

 뱀이 죽으면, 처음 상태로 돌아가야 합니다. 이번에는 게임을 시작할 때 게임 판을 초기화 하는 VBA 코드를 짜보겠습니다. 우선, K12부터 M12까지를 뱀의 초기 위치로 설정하겠습니다. 여기서 머리는 M12고, 꼬리가 K12입니다. 처음에 키보드 조작을 하지 않는다면, 오른쪽으로 이동을 합니다.

뱀의 초기 위치

 프로그램에서 뱀의 위치를 어떻게 파악을 하게 만들지에 대해 고민을 좀 해봤었습니다. 어떤 배열이나 행렬을 만들어서 모든 몸통의 좌표를 기록하는 방법이 있을 수도 있고, 다른 기타 방법이 있을 수도 있습니다. 저는 뱀의 몸통 부분에 다음 블럭의 위치가 어디인지 기록하는 방법을 택했습니다.

뱀의 위치 표시

 R은 오른쪽을 의미합니다. 뱀의 몸통에 저렇게 알파벳을 적어두고, 뱀의 꼬리의 좌표를 저장해두면, 뱀의 몸통의 위치를 알 수 있게 됩니다. 지금은 글자의 색을 검정색으로 두었지만, 나중에 초록색으로 바꿔주게 되면, 게임을 할 때 눈에 띄지 않게 됩니다.

 여기서 꼬리의 좌표는 cells(12,11)이고 머리의 좌표는 cells(12,13)이 되므로, 이 값도 저장을 해두겠습니다. 초기 이동 방향은 오른쪽이므로 AA10번 셀에 R 이라는 문자도 적어두겠습니다.

좌표 설정

 이제 이 초기 설정을 게임오버가 될 때마다 자동으로 실행 될 수 있게, VBA 로 코드를 짜보겠습니다.

우선, A1 부터 Y25까지 문자를 다 지우고, 색을 배경색으로 칠한 후, 뱀의 초기 위치를 진한 녹색으로 칠하고 몸통에 알파벳을 적는 코드를 짜겠습니다.

VBA 코드

 코드를 이렇게 짜면, 위에서 언급한 대로 작동을 하게 됩니다. 다음 글에서는 사과의 위치를 랜덤하게 설정을 하는 방법에 대해서 적어보도록 하겠습니다.

 

Sub reset()
'
' reset - 게임의 초기 설정을 자동으로 해준다.
'

'
    
    ' 게임판을 선택한다.
    Range("A1:Y25").Select
    ' 선택한 게임판의 문자를 다 지운다.
    Selection.ClearContents
    ' 선택한 게임판의 색을 바꾼다.
    Selection.Interior.Color = RGB(146, 208, 80)
    
    ' 뱀의 몸통 부분을 선택한다.
    Range("K12:M12").Select
    ' 선택한 뱀의 몸통을 진한 초록색으로 지정한다.
    Selection.Interior.Color = RGB(84, 130, 53)
    
    ' 뱀의 몸통에 R이라는 문자를 기입해준다.
    Cells(12, 11) = "R"
    Cells(12, 12) = "R"
    
    ' 머리와 꼬리의 좌표를 지정해준다.
    Cells(4, 27) = 12
    Cells(5, 27) = 13
    Cells(6, 27) = 12
    Cells(7, 27) = 11

    Cells(10, 27) = "R"
    
    ' 뱀의 몸 부분이 선택되어 있어서, A1을 선택해준다.
    Cells(1, 1).Select
End Sub

 

'엑셀 & VBA' 카테고리의 다른 글

2-5. Snake 이동하는 코드 만들기  (0) 2021.08.22
2-4. Snake 랜덤하게 사과 배치하기  (0) 2021.08.21
2-2. Snake 게임판 만들기  (0) 2021.07.31
2-1. Snake 게임 만들기  (0) 2021.07.31
엑셀 매크로 기록하기  (0) 2021.07.31