메뉴 건너뛰기

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

전체 코드입니다.

슬슬 길어지니 요약글 기능이 필요해진달지..


-- 플레이어 위치를 저장하는 변수
-- 초기 시작지점은 5, 5로 설정.
playerx = 5
playery = 5

-- 움직인 횟수 저장
moves = 0

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

-- 맵 데이터 초기화
for a = 1, 8 do
    for b = 1, 8 do
        if (a == 1 or a == 8 or b == 1 or b == 8) then
            map[a][b] = 1
        end
    end
end

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

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

while(true) do
    -- 메인 무한 루프
    os.execute("clear") -- 화면을 지운다. OS가 아닌 Scite 환경에서는 제대로 동작하지 않음.
    printmap()
    print("")
    print("움직임: "..moves)
    print("어느 방향으로 이동할까요?")
    print("a: 왼쪽 d: 오른쪽 w: 위 s: 아래 q: 종료 :")
    choose = io.read()
    if (choose == "a") then
        if (map[playery][playerx - 1] == 0) then
            playerx = playerx - 1
            moves = moves + 1
        end
    elseif (choose == "s") then
        if (map[playery + 1][playerx] == 0) then
            playery = playery + 1
            moves = moves + 1
        end
    elseif (choose == "d") then
        if (map[playery][playerx + 1] == 0) then
            playerx = playerx + 1
            moves = moves + 1
        end
    elseif (choose == "w") then
        if (map[playery - 1][playerx] == 0) then
            playery = playery - 1
            moves = moves + 1
        end
    elseif (choose == "q") then
        os.execute("clear")
        print("그럼 안녕!")
        io.read()
        return
    end
end


바뀐 건 if-elseif 부분입니다.

if (choose == "a") then
        if (map[playery][playerx - 1] == 0) then
            playerx = playerx - 1
            moves = moves + 1
        end
    elseif (choose == "s") then
        if (map[playery + 1][playerx] == 0) then
            playery = playery + 1
            moves = moves + 1
        end
    elseif (choose == "d") then
        if (map[playery][playerx + 1] == 0) then
            playerx = playerx + 1
            moves = moves + 1
        end
    elseif (choose == "w") then
        if (map[playery - 1][playerx] == 0) then
            playery = playery - 1
            moves = moves + 1
        end


if 처리가 더 붙었습니다.

플레이어가 앞으로 이동하게 될 좌표의 2차원 배열을 확인해서 0, 즉 빈 공간일 때만 이동할 수 있게 했습니다.

그 이외의 값이 담겨 있다면 벽으로 간주하고 이동의 처리를 생략하고 다름 루프로 넘어갑니다.


그렇게 어려운 처리는 아니었습니다, 다음에는 상자를 만들어보고, 가능하면 상자를 미는 처리도 해보겠습니다.

왠지 날로 먹은 것 같은 포스트 하나지만.. 다음에 봅시다.


다음 Lua 소코반.

언젠가 씁니다.
조회 수 :
696
등록일 :
2013.09.17
08:31:25 (*.209.135.92)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=703458
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
145 또질문 [2] 쿠로쇼우 2008-09-29 2854
144 똥똥배의 게임대회 이야기(2) [2] 혼돈 2007-02-07 2816
143 DirectX 창모드에서 화면 지워지는 문제 [7] file 똥똥배 2010-12-12 2790
142 질문요.C++ [7] 질문자01 2007-05-10 2729
141 SRPG을 구현하게 되면 ... [3] 짜스터 2010-10-05 2708
140 퀴즈소스입니다 허클베리핀님 라컨 2005-08-23 2546
139 2중 for문을 돌릴 때 [3] 똥똥배 2011-04-06 2539
138 이상하군요. [2] 대슬 2008-05-16 2490
137 그림 출력의 순서를 알고 싶습니다. [3] X-tra 2008-03-12 2466
136 데이터 축소에 대하여 [2] 짜스터 2010-10-13 2430
135 흥크립트 기초 질문. [2] 장펭돌 2007-12-03 2430
134 흥크립트 키입력 질문 [1] A.미스릴 2008-03-15 2363
133 흥크립트 0.9 새 기능 소개 [3] file 혼돈 2007-10-15 2289
132 저는 사실 이걸 잘 못해요. [3] 앟랄 2008-03-26 2282
131 명령문 질문드립니다. [1] X-tra 2008-03-26 2244
130 '@클릭'이거 어떻게 사용하는거죠? [4] 네모상자 2008-01-26 2244
129 흥크립트 Ver0.9 변수 안의 변수 기능 [2] 혼돈 2007-10-16 2208
128 조금씩 게임 소스가 완성 되어 가는데요. [2] 짜스터 2010-11-16 2188
127 웹 프로그래밍을 배우려고 합니다. [2] Kadalin 2008-03-22 2171
126 Divx6를 받아서 인코딩을 하려는데... 에러뜸... [3] 장펭돌 2008-02-09 2154