728x90
반응형
map_array = []

Start = (0, 0)
Finish = (0, 0)
Player = [0, 0]

def loadMap():
    
    global Start, Finish
    # global map_array
    
    # f = open("level1.map", 'r')
    # line = f.read()
    # print(line)
    with open("level1.map") as f:
        lines = f.readlines()
        # map_array.extend([line.rstrip('\n').split() for line in lines])
        
        y = 0
        for line in lines:
            row = line.rstrip('\n').split()
            # row = line.replace('\n', '')  # 개행 제거
            # row = line.replace(' ', '')   # 공백 제거
            # line = f.readlines().replace('\n', '').replace(' ','') 한줄 표현
            
            # 해당 문자열 안에 S나 F가 있는지 파악하고, 해당 문자의 위치 확인
            # 알아낸 위치가 곧 x 축의 위치
            # if -1 < line.find('S'): # 해당 문자가 있으면 문자의 위치(인덱스) 리턴,없으면 -1
            #     pass
            # if -1 < line.find('F'):
            #     pass
            x = 0
            for temp in row:
                # print(f"{y},{x}")
                if temp == 'S':
                    Start = (y, x)
                    pass
                
                if temp == 'F':
                    Finish = (y, x)
                    pass
                x = x + 1
            y =  y + 1
            
            # index = row.index('P')
            map_array.append(row)
            
            
        # map_array.extend(['o','x','o'])
        # map_array.extend([['o','x','o']])
        
    # map_array = []
    # 위와 같이 사용하려면 global 변수 선언(해당 함수 내)
    # print(map_array)
    
    # print(Start)
    # print(Finish)
    
    pass

def display():
    for y in range(0, len(map_array)):
        row = map_array[y]
        for x in range(0, len(row)):
            item = row[x]
            if Player[0] == y and Player[1] == x:
                print('S', end=" ")
            if Finish[0] == y and Finish[1] == x:
                print('F', end=" ")
            else:
                print(item, end=" ")
        print()

    pass


def prepare():
    # 맵 불러오기
    # 시작, 도착 위치 좌표 파악
    loadMap()
    
    # 플레이어의 시작 위치 == 지도 시작 위치 (파악)
    Player[0] = Start[0]
    Player[1] = Start[1]

    
    pass



class selection():
    def Up():
        if Player[0] + 1 == 'o':
            print("위로 이동 가능")
        pass
    def Down():
        if Player[1] - 1 == 'o':
            print("아래로 이동 가능")
        pass
    def Left():
        print("왼쪽으로 이동 가능")
        pass
    def Right():
        print("오른쪽으로 이동 가능")
        pass
    
dir = {'1' : selection.Up, '2' :selection.East, '3' : Direction.South, '4' : Direction.West}


if __name__ == "__main__": # 소스코드에 각각 이름 부여
    
    # 맵 불러오기
    # 시작, 도착 위치 좌표 파악
    # 플레이어의 시작 위치 == 지도 시작 위치 (파악)
    prepare()
    
    display()
    selection()
    
    # while True:
        
        # 플레이어의 지도와 플레이어의 현재 위치를 표시 <반복>
        
        # 플레이어가 이동 가능한 선택지 표시 <반복>
        
        # 입력한 선택지의 방향으로 플레이어를 한칸 이동 <반복>

        # 플레이어의 이동위치가 도착지인지 파악 <반복>`
    
        # pass
    
    
    
    
    pass
from os import system
import time
map_array = []

Start = (0, 0)  # Start와 Finish는 초기좌표가 계속 동일
Finish = (0, 0)
Player = [0, 0] # Player 는 가변적인 좌표를 가지고 있기 때문에 List

def loadMap():
    global Start, Finish
    with open("level1.map") as f:
        lines = f.readlines()
        y = 0
        for line in lines:
            row = line.rstrip('\n').split()
            x = 0
            for temp in row:
                if temp == 'S':
                    Start = (y, x)
                    pass
                if temp == 'F':
                    Finish = (y, x)
                    pass
                x = x + 1
            y =  y + 1
            map_array.append(row)
            
            
def display():
    for y in range(0, len(map_array)):
        row = map_array[y]
        for x in range(0, len(row)):
            item = row[x]
            if Player[0] == y and Player[1] == x:
                print('P', end=" ")
            # if Finish[0] == y and Finish[1] == x:
            #     print('F', end=" ")
            else:
                print(item, end=" ")
                # time.sleep(0.005)
        print()

def prepare():
    loadMap()
    Player[0] = Start[0]
    Player[1] = Start[1]
    
    # Player = list(Start[:]) list로 복사


offset = ((-1, 0), (0, 1), (1, 0), (0, -1))
# 북동남서
dict = {'1':offset[0], }

def selection():
    tupSum = tuple(sum(elem) for elem in zip(Start, offset[0]))
    Player = tupSum

    # def Up():
    #     North(-1, 0)
    #         print("위로 이동 가능")
    #     pass
    # def Down():
    #     if Player[1] - 1 == 'o':
    #         print("아래로 이동 가능")
    #     pass
    # def Left():
    #     print("왼쪽으로 이동 가능")
    #     pass
    # def Right():
    #     print("오른쪽으로 이동 가능")
    #     pass
    
# dir = {'1' : selection.Up, '2' :selection.Down, '3' : selection.Left, '4' : selection.Right}


if __name__ == "__main__": # 소스코드에 각각 이름 부여
    
    # 맵 불러오기
    # 시작, 도착 위치 좌표 파악
    # 플레이어의 시작 위치 == 지도 시작 위치 (파악)
    while True:
        prepare()
        system('cls')
        display()
        selection()

    # while True:
        
        # 플레이어의 지도와 플레이어의 현재 위치를 표시 <반복>
        
        # 플레이어가 이동 가능한 선택지 표시 <반복>
        
        # 입력한 선택지의 방향으로 플레이어를 한칸 이동 <반복>

        # 플레이어의 이동위치가 도착지인지 파악 <반복>`
    
        # pass
    
    
    
    
    pass
from os import system
import time
map_array = []

Start = (0, 0)  # Start와 Finish는 초기좌표가 계속 동일
Finish = (0, 0)
Player = [0, 0] # Player 는 가변적인 좌표를 가지고 있기 때문에 List

def loadMap():
    global Start, Finish
    with open("level1.map") as f:
        lines = f.readlines()
        y = 0
        for line in lines:
            row = line.rstrip('\n').split()
            x = 0
            for temp in row:
                if temp == 'S':
                    Start = (y, x)
                    pass
                if temp == 'F':
                    Finish = (y, x)
                    pass
                x = x + 1
            y =  y + 1
            map_array.append(row)
            
            
def display():
    for y in range(0, len(map_array)):
        row = map_array[y]
        for x in range(0, len(row)):
            item = row[x]
            if Player[0] == y and Player[1] == x:
                print('P', end=" ")
            # if Finish[0] == y and Finish[1] == x:
            #     print('F', end=" ")
            else:
                print(item, end=" ")
                # time.sleep(0.005)
        print()

def prepare():
    loadMap()
    Player[0] = Start[0]
    Player[1] = Start[1]
    
    # Player = list(Start[:]) list로 복사


offsets = ((-1, 0), (0, 1), (1, 0), (0, -1)) 
# 북동남서
# dict = {'1':offset[0], }

class selection():
    def Up():
        # tupSum = tuple(sum(elem) for elem in zip(Start, offset[0]))
        # Player = tupSum
        offset = offsets[0]
        y = Player[0] + offset[0]
        x = Player[1] + offset[1]
        t = map_array[y][x]
        if t == 'o':
            print("위로 이동 가능")
        else:
            print("이동할 수 없습니다")
        display()
    def Down():
        tupSum = tuple(sum(elem) for elem in zip(Start, offsets[2]))
        Player = tupSum
        print("아래로 이동 가능")
    def Left():
        tupSum = tuple(sum(elem) for elem in zip(Start, offsets[3]))
        Player = tupSum
        print("왼쪽으로 이동 가능")
    def Right():
        tupSum = tuple(sum(elem) for elem in zip(Start, offsets[1]))
        Player = tupSum
        print("오른쪽으로 이동 가능")
    
dir = {'1' : selection.Up, '2' :selection.Down, '3' : selection.Left, '4' : selection.Right}


if __name__ == "__main__": # 소스코드에 각각 이름 부여
    
    # 맵 불러오기
    # 시작, 도착 위치 좌표 파악
    # 플레이어의 시작 위치 == 지도 시작 위치 (파악)
    while True:
        prepare()
        system('cls')
        display()
        command = input("어느곳으로 이동? (ONLY number)\n")
        dir[command]()
    # selection()

    # while True:
        
        # 플레이어의 지도와 플레이어의 현재 위치를 표시 <반복>
        
        # 플레이어가 이동 가능한 선택지 표시 <반복>
        
        # 입력한 선택지의 방향으로 플레이어를 한칸 이동 <반복>

        # 플레이어의 이동위치가 도착지인지 파악 <반복>`
    
        # pass
    
    
    
    
    pass
728x90
반응형

'Data Structure & Algorithm' 카테고리의 다른 글

[C] ArrayBaseStack  (0) 2022.10.26
[Python] Escape from maze  (0) 2022.10.25
Stack write myself  (0) 2022.10.21
Maze.py  (0) 2022.10.21
Bidirectional Linked List(+ Merger)  (0) 2022.10.20

+ Recent posts