메뉴 건너뛰기

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

-- 맵 데이터를 저장하는 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 똥똥배의 게임대회 이야기(4) [1] 혼돈 2881   2007-02-10 2011-02-11 12:52
4. 공모전도 커뮤니케이션 게임을 만들기 전에 먼저 생각해야 하는 것은 게임을 하는 사람들입니다. 그래서 게임회사라면 시장조사가 가장 먼저 해야 할 일입니다. 회사에서 만든 게임을 얼마나 많은 게이머들이 즐길지 알고 예상되는 수익을 계산하고 거기에 ...  
64 똥똥배의 게임대회 이야기(3) [1] 혼돈 3007   2007-02-08 2011-02-11 12:53
3. 아마추어다운 게임이란 무엇인가? 아마추어는 자유롭습니다. 자신이 원한다면 무엇이든 표현할 수 있습니다. (심하게 비윤리적이라면 문제가 되겟지만) 하지만 프로는 그렇지 못합니다. 일단 상업성 때문에 '돈이 되는' 게임을 만들어야 하고, 수많은 사람...  
63 똥똥배의 게임대회 이야기(2) [2] 혼돈 2816   2007-02-07 2008-03-17 04:37
2. 100KB 공모전의 추억 1회 규칙이 10M로 제한 된 것은 과거 100KB 공모전이 담겨있어서 입니다. 과거 100KB 공모전이라고 있었는데, 그 제한된 용량을 이용해서 다양한 작품이 나왔었죠. 그 중에 우수상을 탔던 것이 '삭제 되었수다'로서 오히려 제한된 용량...  
62 똥똥배의 게임대회 이야기(1) 혼돈 2953   2007-02-06 2008-03-17 04:37
지금부터 제 이야기를 잘 들어 두시는 게 수상의 열쇠가 될지도 모릅니다. 제가 끝판 보스도 아니고, 공지 내놓고 마감일까지 기다리는 것은 지루하니 이런 저런 이야기를 들려 드리도록 하죠. 1. 지금 여러분이 해야 할 일 지금 개학인데 왜 하필 시작하냐는 ...  
61 안녕하세요~ 질문하러 왔습니다. [6] X-tra 1894   2008-03-09 2008-03-17 04:37
소리재생에 문제가 생겨서 질문드립니다. 제가 대화가 넘어갈때마다 소리를 재생하기 위해서 @소리 1, "MAIN\SE\스킵.ogg" 대화가나불나불~ @소리재생 1 를 메모장에 적었습니다. 그런데 소리가 나오지 않는겁니다. 버그리포트에는 "사운드 파일을 찾을 수 없...  
60 질문 하나더. [3] 흑곰 1715   2008-02-13 2008-03-17 04:37
1 아무 것도 없이 빈 줄 혹은 주석이 속도에 영향을 미치는지. @이동 등에서 영향을 미칠 것으로 추측됨. 2 @이동 -1 을 하면 무시되어 다음 줄을 읽게 되나요? * 똥똥배님에 의해서 게시물 이동되었습니다 (2008-03-11 14:26)  
59 갑자기 급질문.. 궤레브 1737   2008-02-08 2008-03-17 04:37
별 특별한건 아니구요 변수 강좌 보니까 ? 가 사용되더라구요? ?는 무슨 의미인가요? [분기] ([레벨]==16)?91:[분기] [분기] ([레벨]==15)?92:[분기] [분기] ([레벨]==14)?93:[분기] [분기] ([레벨]<=13)?94:[분기] @이동 [분기] 여기서 보면 [레벨]==16 이런...  
58 [re] 갑자기 급질문.. [1] 똥똥배 1548   2008-02-08 2008-03-17 04:37
>별 특별한건 아니구요 >변수 강좌 보니까 ? 가 사용되더라구요? >?는 무슨 의미인가요? > >[분기] ([레벨]==16)?91:[분기] >[분기] ([레벨]==15)?92:[분기] >[분기] ([레벨]==14)?93:[분기] >[분기] ([레벨]<=13)?94:[분기] >@이동 [분기] > >여기서 보면 >[...  
57 마우서 포인트 바꾸기 질문 다시 ㄱ- [2] 장펭돌 1807   2008-02-05 2008-03-17 04:37
똥똥배님이 알려주신대로, DATA 폴더내에 mlc 파일을 하나 생성하고, 커서에 "파일명" 이렇게 재대로 했는데.. 안됩니다. 똥똥배님은, Global.mlc 를 이용할수 있지만, 저는 Global.mlc 내에 그림파일을 추가시킬수가 없어서 안되는거 아닙니까? * 똥똥배님에 ...  
56 마우스 포인터 바꾸기가 안되네요... +질문2 장펭돌 1748   2008-02-04 2008-03-17 04:37
어떻게 해도 자꾸 마우스 모양이 안보이길래... 아예 mlc 파일을 DATA폴더 밖으로 꺼내고... System.txt와 같이 둔 상태로 그림 파일명이 "마우스" 이므로.. {#커서} "마우스" 이렇게 해봤는데도 안되네요... 으음,, 어떻게 해야하는겁니까... ㅇ 질문 2 "DIVX...  
55 {질문}그림에대한 질문일세. [5] 슈퍼타이 1703   2008-01-30 2008-03-17 04:37
뭐 만화에서보면 눈이 빛나거나 빠르게 달리는것처럼 효과주고 점프할때 바닥에 ^^ 이런식으로 효과 주는거나 빙글빙글돌때는 주변에 원같은거 그려주고 그런걸 뭐라고 하죠? * 똥똥배님에 의해서 게시물 이동되었습니다 (2008-03-11 14:26)  
54 혼돈님께 질문 흑곰 1596   2007-12-25 2008-03-17 04:37
혼돈님의 경우에는 게임 그래픽을 언제, 어떻게 준비하나요? 음... 그러니까 대충 뼈대 그래픽을 그려놓고 게임을 완성한 후 그래픽을 고친다 라던가, 그래픽을 전부 작성해두고 게임을 완성한다, 혹은 그래픽을 만들어가며 게임을 제작한다 등등... 다년간의 ...  
53 [re] 혼돈님께 질문 혼돈 2048   2007-12-25 2008-03-17 04:37
옛날에 뼈대를 그려놓고 일단 게임을 만들자는 주의였는데 나중에 완성하고 나면 고치기도 귀찮고, 그 그래픽에 맞춰 만든 거라서 그냥 그대로 쓰게 되는 경우가 많았음. 그래서 그 다음부터는 처음부터 그래픽 소스를 제대로 준비한 뒤 시작하는 식으로 했습...  
52 홍크립트에 질문이 있어서 왔스므니다. [3] X-tra 1699   2007-12-07 2008-03-17 04:37
제가 홍크립트로 와이드 화면의 게임이 만들고 싶어 질문하러 왔습니다. 메모장으로 해결이 가능 하면 좋겠으나 아마도 무리 겠죠 ㅡ.ㅡ;; 소스를 건드려야 하면 어디를 건드려야 하는지 알려 주셨으면 합니다. 직접 건드리고 싶어서도 문제가 발생하면 많은 ...  
51 질문 2가지+1 [2] file Wonder 1964   2007-11-30 2008-03-17 04:37
 
50 혼돈형에게 질문! [3] 장펭돌 1851   2007-11-28 2008-03-17 04:37
만화를 그릴때, 우선 손으로 그리지 않습니까 그럼 그린뒤에 스캔해서 컴퓨터로 옮긴뒤에 펜으로 그려진 선을 잘 보정해 줘야 채색이 가능할텐데, 어떻게 선을 다시 컴퓨터로 그려주나여 그냥, 노가다로 마우스로 원래 펜으로 그린 선을 따라서 그려주는 겅미?...  
49 혼돈형한테 질문 (페인트샾 관련) [2] file 장펭돌 939   2007-11-19 2008-03-17 04:37
 
48 스크립트 질문좀 하겠습니다....이벤트에 대한것!! [2] 여유 1859   2007-04-23 2008-03-17 04:37
Class Quick_status < Game_Player 아니면 Class Quick_status < Game_Event 어떤걸로 하는것이 옳은 선택일까요 그리고 이벤트의 X,Y좌표 이벤트의 Screen_x,y좌표(화면 XY좌표) 이벤트의 ID 이벤트의 이름 이것들을 나타낼 수 있는 방법을 알려주세요 예) a...  
47 [질문]알만툴 게임 [1] 허클베리핀 1974   2006-12-28 2008-03-17 04:37
처음 키면 ascll 로고뜨고 eb!회사 로고뜨는 나오는거 그림 어케바꾸나욤?? * 똥똥배님에 의해서 게시물 이동되었습니다 (2008-03-11 14:24)  
46 여러분 질문있어요. 성심성의껏좀 알려주세요 흑흑 [6] 케르메스 2022   2006-02-11 2008-03-17 04:37
sw = 0; for (j=2; j<WWT; j++) { if ((WWT%j) == 0) { sw = 1; } } if(sw ==1) { cout << "WWT는 정수입니다" } if(sw ==0) { cout << "WWT는 정수가 아닙니다" } -------------------------------------------------------------- 이건 변수인 WWT가 정수인...