본문 바로가기

전체 글

(17)
2-7. Snake VBA 키보드 입력 받기 키보드 입력을 받을 수 있는 코드를 짜보겠습니다. 이동을 하기 위해 매번 매크로 창을 열어서 명령을 할 수 없으므로, 키 입력시 매크로의 특정 함수를 동작시키는 코드입니다. 키 입력을 받는 명령어입니다. Application.OnKey "{left}", "left" {left}라는 키 입력을 받았을 때, left 함수를 실행한다는 의미입니다. Application.OnKey "{left}" 위 명령어를 입력하게 되면, left 버튼을 눌렀을때, 원래 해당 키의 기능이 되돌아오게 됩니다. 키 입력을 받았을때 뱀이 움직이는 것이 아니라 일정 시간 후에 뱀이 자동으로 움직여야 합니다. 그러므로 키 입력을 주었을때 뱀이 움직이는 함수를 작동 시키는 것이 아니라 어느 방향으로 움직여야 되는지 알려주는 코드를 작동..
2-6. Snake 나머지 이동하는 코드 만들기 나머지 왼쫀, 위, 아래 이동 하는 코드는 기존의 오른쪽으로 이동하는 코드에서 조금만 바꾸면 나머지 이동하는 코드를 완성할 수 있습니다. Sub left() '변수 불러오기 hx = Cells(4, 27) hy = Cells(5, 27) score = Cells(2, 26) Cells(hx, hy) = "L" 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 ElseIf Ce..
2-5. Snake 이동하는 코드 만들기 오른쪽으로 이동하는 코드를 먼저 만들어 보겠습니다. 우선 머리의 위치를 알아야 하기 때문에, 변수를 불러오겠습니다. 머리의 좌표를 AA4와 AA5셀에 기록을 해두었기 때문에 변수를 먼저 불러오겠습니다. 머리의 head와 x 좌표의 x 에서 앞 알파벳을 따서 변수를 정의했습니다. hx = Cells(4, 27) hy = Cells(5, 27) 이동시 사과를 먹게 되면 점수가 올라가야 하므로 점수도 불러오겠습니다. score = Cells(2, 26) 오른쪽으로 이동했음을 알려주기 위해 머리의 좌표 부분에 알파벳 R을 적겠습니다. Cells(hx, hy) = "R" 뱀이 오른쪽으로 이동을 하면 세가지의 경우가 나올 수 있습니다. 1. 사과를 먹을때 - 뱀이 오른쪽으로 이동하고, 길이가 늘어나며, 사과가 다른..
2-4. Snake 랜덤하게 사과 배치하기 사과를 만들때는, 난수생성과 반복문이 필요합니다. 사과는 랜덤한 위치에서 생성이 되어야 하므로 난수가 필요하고, 뱀의 몸통에는 사과가 만들어지면 안되기 때문에, 사과가 몸통이 아닌곳에 생성이 될 때 까지 반복을 해야합니다. 변수들의 이름은 제가 임의로 지정했습니다. 다른 값으로 코드를 수정해도 작동에는 이상이 없습니다. apx 는 apple x좌표 라는 뜻이고, chk는 check를 줄여서 만든 변수입니다. Sub apple() ' ' 사과의 위치를 랜덤하게 생성한다. ' ' ' 반복문을 끝낼 수 있게 하는 변수 chk = 0 '반복문 시작 Do ' 사과의 좌표가 될 난수를 생성한다. apx = Application.WorksheetFunction.RandBetween(1, 25) apy = Applic..
2-3. Snake 게임판 초기화 VBA 코드 만들기 뱀이 죽으면, 처음 상태로 돌아가야 합니다. 이번에는 게임을 시작할 때 게임 판을 초기화 하는 VBA 코드를 짜보겠습니다. 우선, K12부터 M12까지를 뱀의 초기 위치로 설정하겠습니다. 여기서 머리는 M12고, 꼬리가 K12입니다. 처음에 키보드 조작을 하지 않는다면, 오른쪽으로 이동을 합니다. 프로그램에서 뱀의 위치를 어떻게 파악을 하게 만들지에 대해 고민을 좀 해봤었습니다. 어떤 배열이나 행렬을 만들어서 모든 몸통의 좌표를 기록하는 방법이 있을 수도 있고, 다른 기타 방법이 있을 수도 있습니다. 저는 뱀의 몸통 부분에 다음 블럭의 위치가 어디인지 기록하는 방법을 택했습니다. R은 오른쪽을 의미합니다. 뱀의 몸통에 저렇게 알파벳을 적어두고, 뱀의 꼬리의 좌표를 저장해두면, 뱀의 몸통의 위치를 알 수 ..
2-2. Snake 게임판 만들기 본격적으로 코딩을 시작하기 전에 게임판을 만들어 보도록 하겠습니다. 게임판은 정사각형이 보기 좋으므로, 우선 엑셀을 정사각형으로 만들겠습니다. 전체선택을 하고 열 너비를 2.5로 설정하겠습니다. 위에 알파벳들이 보이는데, A는 1, B는 2 이런 식으로 좌표로 셀을 선택할 수 있습니다. 게임과는 상관 없지만, 좌표를 미리 표시해두면 보기 편하기 때문에 26열 에 1부터 30까지 숫자를 미리 적어두겠습니다. 1부터 30까지 숫자를 적을 때는 다 적지 말고, 3까지만 적은 뒤 십자가를 당기면 편하게 만들 수 있습니다. A1 셀부터 Y25셀 까지 25*25개의 셀을 게임판으로 활용하겠습니다. 해당 셀을 연한 녹색으로 바꾸겠습니다. 이제 게임에 사용할 변수들을 적어두고 마무리 하겠습니다. 제가 사용할 변수들은 ..
2-1. Snake 게임 만들기 다음 게임으로는 Snake를 만들어 보겠습니다. Snake는 과거 핸드폰에 기본 게임으로도 들어 있었던 게임으로 뱀이 사과를 먹으면서 길어지는 게임이며, 자기 자신을 먹거나 맵의 끝에 닿으면 끝나게 되는 게임입니다. 게임에 따라서 맵을 통과하는 경우도 있는데, 두가지 다 만들어보도록 하겠습니다. Snake게임을 시간에 따라 뱀이 이동을 해야하므로, 자동으로 움직여야 하는 요소가 많습니다. 그렇기 때문에 게임을 만들면서 VBA(코딩)을 주로 활용하게 될 것입니다. Snake 게임을 만들고 나면 지뢰찾기를 한번 만들어보겠습니다. 지뢰찾기는 Snake에 비해 VBA를 조금 덜 사용할 듯 합니다.
엑셀 매크로 기록하기 매크로 기록하기 기능을 이용하면, VBA 문법을 잘 몰라도 원하는 기능을 구현할 수 있습니다. 매크로 기록을 누르면 매크로 중지를 하기 전까지의 동작들이 기록이 됩니다. 나중에 기록한 매크로를 실행하게 되면, 매크로 기록중에 한 행동들이 다시 한번 반복해서 일어나게 됩니다. 매크로 보기를 누르면, 기록한 매크로를 확인할 수 있습니다. 매크로 기록을 하면서 A1 셀에 123을 입력하고 엔터를 눌러보겠습니다. 매크로 편집창에 들어가면 방금 기록한 매크로를 확인할 수 있습니다. A1셀에 123을 입력하려면 위와같은 코드가 필요함을 알 수 있습니다. 우선 Range("A1").Select를 통해 A1 셀에 입력을 할 것임을 알려줍니다. 이때 Range()를 이용하면 셀을 선택할 수 있다는 사실을 알 수 있고, ..