엑셀 마리오 게임 점프 명령문 만들기 :: 오빠두 엑셀 VBA 강의 3-8
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. 게임 실행 및 테스트
게임 시트로 이동한 뒤, 작성한 코드가 잘 동작하는지 테스트 합니다.

엑셀 VBA – 마리오 게임 만들기 프로젝트는 이번 강의를 마지막으로 종료합니다. 여러분의 큰 관심에 감사드립니다.
무작위로 벽돌을 출력하는 방법, 점수 계산 방법, SQL 연결 방법 등등의 더욱 다양하고 자세한 내용들도 이후에 준비해서 여러분께 소개해드리겠습니다.
더욱 자세한 내용은 영상강의를 참고해주세요!