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 |