오른쪽으로 이동하는 코드를 먼저 만들어 보겠습니다. 우선 머리의 위치를 알아야 하기 때문에, 변수를 불러오겠습니다. 머리의 좌표를 AA4와 AA5셀에 기록을 해두었기 때문에 변수를 먼저 불러오겠습니다. 머리의 head와 x 좌표의 x 에서 앞 알파벳을 따서 변수를 정의했습니다.
hx = Cells(4, 27)
hy = Cells(5, 27)
이동시 사과를 먹게 되면 점수가 올라가야 하므로 점수도 불러오겠습니다.
score = Cells(2, 26)
오른쪽으로 이동했음을 알려주기 위해 머리의 좌표 부분에 알파벳 R을 적겠습니다.
Cells(hx, hy) = "R"
뱀이 오른쪽으로 이동을 하면 세가지의 경우가 나올 수 있습니다.
1. 사과를 먹을때 - 뱀이 오른쪽으로 이동하고, 길이가 늘어나며, 사과가 다른 위치에 생성 된다.
2. 그냥 이동할때
3. 맵 밖으로 나가거나 자기 자신을 먹을 때 - 죽음
세가지의 경우를 나눠야 하므로 if 문을 사용하겠습니다.
우선 사과를 먹으면, 오른쪽 칸은 진한 녹색으로 바뀌어야 하고, 점수가 1점 올라야하며, 새로운 사과를 생성해야합니다.
If Cells(hx, hy + 1).Interior.Color = RGB(255, 0, 0) Then '사과 먹음
' 오른쪽을 뱀 색으로 바꾸기
Cells(hx, hy + 1).Interior.Color = RGB(84, 130, 53)
' 점수 1점 올리기
score = score + 1
' 점수 기록
Cells(2, 26) = score
' apple 함수 불러오기
apple
마지막줄에 apple이라고 적게되면, 2-3에서 정의한 apple 함수를 불러오게 됩니다. apple 함수는 사과를 맵에 랜덤하게 생성했습니다.
오른쪽으로 이동하게 되면, 오른쪽 칸은 초록색으로 바뀌고, 꼬리 부분은 사라져야합니다.
ElseIf Cells(hx, hy + 1).Interior.Color = RGB(146, 208, 80) Then ' 오른쪽이 게임판 색일때
Cells(hx, hy + 1).Interior.Color = RGB(84, 130, 53)
' 꼬리 이동하는 함수 불러오기
tail
마지막 줄에 tail이라고 적었기 때문에, tail 함수가 호출이 될 것입니다. tail 함수는 나중에 만들도록 하겠습니다.
마지막으로 나머지 경우에는 죽기때문에, gameover 함수를 호출하겠습니다. gameover함수도 나중에 만들겠습니다.
Else
gameover
End If
이제 머리의 좌표가 바뀌었으므로, 엑셀 시트에 기록해주겠습니다.
Cells(5, 27) = hy + 1
여기까지가 오른쪽으로 이동하는 코드입니다. 상하좌우로 이동하는 코드는 오른쪽으로 이동하는 코드에서 살짝 변형만 해주면, 쉽게 만들 수 있습니다.
tail 함수는 꼬리의 위치를 파악하고, 새로운 꼬리 좌표를 기록하는 간단한 함수로 만들겠습니다. 우선 꼬리의 좌표를 불러옵니다.
tx = Cells(6, 27)
ty = Cells(7, 27)
이제 꼬리부분을 배경색으로 바꿔줍니다.
Cells(tx, ty).Interior.Color = RGB(146, 208, 80)
다음으로 글자를 지우고, 새로운 꼬리의 좌표를 기록하겠습니다.
If Cells(tx, ty) = "R" Then
Cells(tx, ty).ClearContents
ty = ty + 1
ElseIf Cells(tx, ty) = "L" Then
Cells(tx, ty).ClearContents
ty = ty - 1
ElseIf Cells(tx, ty) = "U" Then
Cells(tx, ty).ClearContents
tx = tx - 1
ElseIf Cells(tx, ty) = "D" Then
Cells(tx, ty).ClearContents
tx = tx + 1
End If
내부 문자가 "R"이면, 다음 꼬리의 좌표는 오른쪽으로 이동하기 때문에, ty = ty + 1이 됩니다. 나머지도 같은 원리입니다.
마지막으로 엑셀 시트에 변수를 기록하면, tail함수는 완성입니다.
Cells(6, 27) = tx
Cells(7, 27) = ty
'엑셀 & VBA' 카테고리의 다른 글
2-6. Snake 나머지 이동하는 코드 만들기 (0) | 2021.09.12 |
---|---|
2-4. Snake 랜덤하게 사과 배치하기 (0) | 2021.08.21 |
2-3. Snake 게임판 초기화 VBA 코드 만들기 (0) | 2021.08.21 |
2-2. Snake 게임판 만들기 (0) | 2021.07.31 |
2-1. Snake 게임 만들기 (0) | 2021.07.31 |