저희가 만드는 미로는 2개의 워크시트로 구성할 것입니다.

 

첫번째는 게임을 시작하고 플레이어의 점수를 기록하는 시트, 두번째는 미로를 플레이하는 시트입니다.

 

첫번째 시트의 구성은 간단합니다. 

게임시작 버튼, 이름과 크기를 입력하는 셀, 플레이어의 점수를 기록하는 셀로 구성됩니다. 특별한 코드가 없으므로 넘어가겠습니다. 셀의 크기와 버튼의 디자인은 개인의 취향에 맞게 해주시면 됩니다.

 

이젠 본격적으로 두번째 시트를 구성해 봅시다.

 

맨 왼쪽 위의 3x3의 셀은 키보드 이벤트(이하 조이스틱)를 위해 남겨놓고 행의 높이는 1, 열의 너비는 0.1로 설정합니다. 그리고 미로가 아닌 칸은 선택할 수 없도록 모두 숨겨야 합니다.

Sub MakeMaze()
	worksheets("Sheet2").Select
	Dim map_size As Integer
    
	'맵 사이즈 입력받기
	map_size = worksheets("Sheet1").Cells(8,2).value
    
	'셀을 정사각형으로 만들기
	Range("A1:XFD1048576").ColumnWidth = 1.00 
	Range("A1:XFD1048576").RowHeight = 10.00
    
	'조이스틱을 위한 셀 만들기
	Range(Cells(1,1), Cells(3,3)).ColumnWidth = 0.1 
	Range(Cells(1,1), Cells(3,3)).RowHeight = 1.0
    
	'미로가 아닌 셀은 숨기기
	Rows(map_size+6 & ":" & Rows.Count).EntireRow.Hidden = True
	Range(Cells(4,map_size+6), Cells(map_size+5,Columns.Count)).EntireColumn.Hidden = True
End Sub

MakeMaze는 미로를 만드는 프로시저입니다.

 

ColumnWidth 와 RowHeight를 이용해 셀의 크기를 설정해주고, EntireRow.Hidden 과 EntireColumn.Hidden을 이용해 미로가 아닌 칸은 숨겨줍니다.

 

미로가 아닌 셀을 숨길 때,

Rows(map_size+6 & ":" & Rows.Count)로 미로의 아래 행을 모두 선택할 수 있습니다. map_size+6인 이유는

미로크기 + 조이스틱 3칸 + 테두리 2칸 + 1칸 을 해야 미로의 아래행부터 시작할 수 있기 때문입니다.

 

Rows.Count는 해당 시트의 가장 마지막 행을 알 수 있는 변수입니다.

 

이후에 Range를 이용해 미로의 오른쪽 셀들을 전부 선택해 숨겨줍니다.

 

위의 예제와 같이 게임시작 버튼과 매트로를 지정한 뒤 버튼을 눌러 크기가 10인 미로를 생성하게 되면 왼쪽위의 3x3의 조이스틱과 테두리를 포함한 12x12의 미로공간이 만들어지게 됩니다.


WRITTEN BY
컴공학도

,