[엑셀마리오게임] 마리오 점프 명령문
마리오 점프 동작 출력하기! (DoEvents 함수 응용)
이 강의에서는 엑셀 VBA 마리오 게임 만들기 시리즈의 마지막 단계로, 마리오가 위쪽 방향키 입력에 반응해 점프하는 동작을 구현하는 방법을 다룹니다. For 문 기반의 Lazy 지연 함수로 동작 속도를 정교하게 제어하고, KeyPressAPI 이벤트와 효과음 재생까지 연결해 마리오 벽돌깨기 게임을 완성하는 흐름을 정리합니다.
실습자료를 준비했어요
수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇
1. 엑셀 VBA 마리오 게임에 사용된 변수와 함수
이번 강의는 엑셀 VBA 마리오 벽돌깨기 게임 만들기 시리즈의 마지막 강의입니다. 게임 제작에 사용된 변수와 보조 명령문에 대한 자세한 설명은 이전 강의에서 단계별로 다루었으므로, 처음 접하시는 분은 아래 강의를 먼저 참고해 주세요.
- 마리오 그림 출력 명령문 만들기
https://www.oppadu.com/엑셀-무료-강의/매크로-vba-범위-이동-확장-셀-선택-그림그리기/ - 엑셀로 배경음악 출력하기
https://www.oppadu.com/엑셀-무료-강의/매크로-엑셀-컴퓨터-배경음악-출력/ - 엑셀 KeyPressAPI (키 입력 받기 이벤트) 사용 방법
https://www.oppadu.com/엑셀-무료-강의/vba-키보드-입력-인식하기-keypressapi/ - 마리오 게임 변수 설정하기
https://www.oppadu.com/엑셀-무료-강의/마리오게임-변수-설정/
2. 명령문 동작 지연 함수 만들기 (Lazy 함수)
엑셀 VBA에서는 Wait 또는 Sleep 함수로 명령문 실행을 지연시킬 수 있습니다. 다만 Wait 함수는 최소 1초 단위로만 지연이 가능하고, Sleep 함수는 별도의 Reference 추가가 필요하다는 단점이 있습니다. 따라서 보다 정교한 단위로 지연을 제어하기 위해 아래와 같이 For 문을 활용한 Lazy 함수를 직접 작성하면 사용자 편의성과 정밀도를 모두 확보할 수 있습니다.
‘// Lazy 지연함수 작성 Sub lazy(Optional lazyTime As Long = 500) Dim i As Long For i = 1 To lazyTime DoEvents Next i End Sub
3. 마리오 그림 출력 명령문 만들기
Boolean 형식으로 지정한 Facing 변수의 값을 판단하여, True 일 경우 오른쪽을 바라보는 마리오 그림을, False 일 경우 왼쪽을 바라보는 마리오 그림을 출력하는 명령문을 작성합니다.
이전에 만들어 둔 init 명령문과 Mario_RW/LW (걷는 모습), Mario_RJ/LJ (점프하는 모습) 을 호출하여 동작을 구현합니다. 자세한 내용은 이전 강의를 참고하세요.
Sub Print_RunMario(Optional SetValue As Long = 0) init pointRng Set pointRng = pointRng.Offset(0, SetValue) If Facing = True Then Mario_RW pointRng Else Mario_LW pointRng End If End Sub Sub Print_JumpMario(Optional SetValue As Long = 0) init pointRng Set pointRng = pointRng.Offset(SetValue, 0) Select Case Facing Case True Mario_RJ pointRng Case False Mario_LJ pointRng End Select End Sub
4. KeyPressAPI – 위쪽 방향키 인식받기
KeyPressAPI 모듈을 활용하여 GameSheet에서 위쪽 방향키가 입력되었을 때 마리오 점프 동작이 실행되도록 명령문을 작성합니다.
기존에 작성해 둔 GameSheet의 KeyPressWatcher_KerPressed 이벤트에 아래 Case 문을 추가합니다.
'// 3. 위쪽방향키 Case 38 If Jump = False Then Jump = True MarioJump End If Case Else
5. 마리오 점프 명령문 작성하기
위쪽 방향키 입력 시 마리오가 점프하는 동작이 구현되도록 아래 명령문을 추가합니다. 점프 효과음을 정상적으로 재생하려면 해당 mp3 파일은 반드시 엑셀 파일과 동일한 폴더에 위치시켜야 합니다.
Sub MarioJump() Dim a As Long PlaySound ActiveWorkbook.Path & "\MarioJump.mp3" For a = 1 To 5 lazy 300 Print_JumpMario -1 Next a For a = 1 To 5 lazy 300 Print_JumpMario 1 Next a Print_RunMario Jump = False End Sub
6. 게임 실행 및 테스트
게임 시트로 이동한 뒤 작성한 코드가 의도한 대로 동작하는지 직접 실행하여 테스트합니다.
