메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

-- 맵 데이터를 저장하는 8*8의 2차원 배열 Map 생성
map = {}
for a = 1, 8 do
    map[a] = {}
    for b = 1, 8 do
        map[a][b] = 0
    end
end

-- 맵 데이터 초기화
map[1][1] = 1
map[1][2] = 1
map[1][3] = 1
map[1][4] = 1
map[1][5] = 1
map[1][6] = 1
map[1][7] = 1
map[1][8] = 1
map[2][1] = 1
map[2][8] = 1
map[3][1] = 1
map[3][8] = 1
map[4][1] = 1
map[4][8] = 1
map[5][1] = 1
map[5][8] = 1
map[6][1] = 1
map[6][8] = 1
map[7][1] = 1
map[7][8] = 1
map[8][1] = 1
map[8][2] = 1
map[8][3] = 1
map[8][4] = 1
map[8][5] = 1
map[8][6] = 1
map[8][7] = 1
map[8][8] = 1

function printmap()
-- 맵을 표시하는 printmap 함수
    tempstr = ""

    for a = 1, 8 do
        for b= 1, 8 do
            if (map[a][b] == 0) then
                tempstr = tempstr.." "
            elseif (map[a][b] == 1) then
                tempstr = tempstr.."#"
            end
        end
        print(tempstr)
        tempstr = ""
    end
end

-- 일단 잘 되었는지 확인하고, 추후 메인 무한루프에 편입시킨다.
printmap()

--[[while(true) do
    -- 메인 무한 루프
    
end]]--


뭔가 굉장히 쓸데없이 복잡하게 짰다.

추가/수정된 간단히 설명해봅니다.


-- 맵 데이터 초기화
map[1][1] = 1
map[1][2] = 1
map[1][3] = 1
map[1][4] = 1
map[1][5] = 1
map[1][6] = 1
map[1][7] = 1
map[1][8] = 1
map[2][1] = 1
map[2][8] = 1
map[3][1] = 1
map[3][8] = 1
map[4][1] = 1
map[4][8] = 1
map[5][1] = 1
map[5][8] = 1
map[6][1] = 1
map[6][8] = 1
map[7][1] = 1
map[7][8] = 1
map[8][1] = 1
map[8][2] = 1
map[8][3] = 1
map[8][4] = 1
map[8][5] = 1
map[8][6] = 1
map[8][7] = 1
map[8][8] = 1


이 노가다 부분은 아직까지 맵 데이터를 넣어둘 방법이 없어 임시로 넣은 겁니다.

for문으로 이렇게 간단히 줄일 수 있습니다만 귀찮으니 생략합니다.(야!)


추후 printmap 함수 부분에서 보시면 map에 0이 들어있으면 빈 곳, 1이 들어있으면 벽이 됩니다.

2차원 배열이라는 것은 표나 좌표평면 같은 느낌으로 이해하시면 됩니다.

현재의 map 2차원 배열의 구조를 나타내보자면

...12345678

1 11111111

2 10000001

3 10000001

4 10000001

5 10000001

6 10000001

7 10000001

8 11111111

이렇게 됩니다.

뭔지 모르겠지만 차근차근 봅시다, map[1][3]의 내용물은 무엇일까요?

좌표처럼 생각하시면 편합니다, x축 방향으로 1, y축 방향으로 3이니까 1이 들어있겠군요.

굵게 표시한 부분입니다.


printmap 함수에 대해 설명해 보겠습니다.


function printmap()
-- 맵을 표시하는 printmap 함수

    tempstr = "" '문자열 초기화

    for a = 1, 8 do -- 1에서 8까지
        for b= 1, 8 do -- 1에서 8까지, 8*8번 반복하겠군요.
            if (map[a][b] == 0) then --모든 맵 데이터를 훑으며, 현재 데이터가 0이면
                tempstr = tempstr.." " -- SPAAAAAAAACE문자를 저장한다.
            elseif (map[a][b] == 1) then -- 1이면
                tempstr = tempstr.."#" -- # 문자를 저장한다.
            end
        end
        print(tempstr) '저장해둔 문자들을 화면에 그린다. 보통 뿌린다고 한다.
        tempstr = "" '다음 줄을 출력하기 위해 이전의 문자열이 남아있으면 오동작하므로 깨끗이!
    end
end


프로그래밍은 어렵지 않아요. 인간의 언어로 하나씩 하나씩 고쳐봅시다.


전의 코드의 2차원 배열 전체를 뿜어내는 코드를 살짝 고쳤습니다.

안의 값이 0이면 띄어쓰기 문자를, 1이면 # 문자를 쓰게 만들었습니다.

0이나 1대신 공백이나 #문자가 뜨니 뭔가 좀 더 그럴듯해보일겁니다.


아래의 무한 루프.

무한루프라 함은 무한히 반복되는 루프로 버그라는 인상이 강하지만 게임에서 잘 씁니다.

물론 언젠간 루프를 끝내지만..

무한 루프가 하는 건 계속 기다리는 겁니다. 사용자가 키를 입력할때까지 계속 기다려서 처리하고.

마우스를 클릭할때까지 계속 기다려서 처리하고...

그리고 보통 메인의 무한루프가 끝나면 게임이 끝납니다.

지금은 감이 잘 안 잡히시죠? 저도 그렇습니다.

같이 만들면서 알아갑시다.


아직은 필요없으므로 주석으로 처리했습니다.

주석으로 처리하면 실제로 실행되지 않습니다.

남들 보라고 써놓는 코드의 설명 등에 유용합니다.


다음에는 주인공을 그리고, 주인공이 이동하는 처리까지 했으면 좋겟습니다.

노루 소코반. 언젠가 씁니다.
조회 수 :
833
등록일 :
2013.09.17
08:29:00 (*.209.135.92)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=703452
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
65 [Lua] 테이블 노루발 2013-09-17 1422
64 중력 처리할때 캐릭터가 낍니다. [2] ㅁㄴㅇㄹ 2012-02-12 1395
63 Lua 소코반 EX: 그래픽 준비 노루발 2013-09-18 1084
62 혼돈형한테 질문 (페인트샾 관련) [2] file 장펭돌 2007-11-19 939
61 Lua 소코반 EX: 포팅: 3 (머나먼 여행길 안녕 친구여) 노루발 2013-09-18 913
60 RPG Maker MV 로컬라이징 방법 file 똥똥배 2015-10-27 906
59 Lua 소코반 EX: 포팅: 1 노루발 2013-09-18 856
» Lua 소코반: 맵을 뿌리자. 노루발 2013-09-17 833
57 Lua 소코반 EX: 포팅: 2 (키가 눌리면 이동하게 해 보자) 노루발 2013-09-18 832
56 이미지 그리는 방법: 2편. 부제: 쿼드! 노루발 2013-09-17 821
55 이미지 그리는 방법 1편 노루발 2013-09-17 812
54 cocos2d-x 2.2.2 UILabelBMFont 메모리 누수 해결법 [2] 똥똥배 2014-03-10 783
53 Cocostudio의 ActionNode 메모리 누수 해결법(cocos2d-x 2.2.2) [2] 똥똥배 2014-03-09 776
52 게임의 기본 설정을 담당하는 love.conf 노루발 2013-09-17 763
51 Lua 소코반: 플레이어를 그리고 움직이게 해보자 노루발 2013-09-17 758
50 Lua 소코반: 목표 지점을 만들고, 상자가 모두 옮겨지면 게임을 끝내자! 노루발 2013-09-17 753
49 흥크립트 원인불명 버그... [3] file 네모상자 2008-02-16 738
48 Love2D를 사용하기 위한 Lua 강좌: 입출력과 기본 노루발 2013-09-17 704
47 Lua 소코반: 벽을 뚫고 나가지 않게 해보자! 노루발 2013-09-17 696
46 CCTextFieldTTF 0바이트 메모리 누수 버그 해결법 똥똥배 2014-01-13 692