파이썬에 관련해서 질문이 있어서 글을 올립니다.
현재 이차원 맵 이동하는 중에 1에서 1만 이동할 수 있고 1 에서 0 으로 이동할 수 없게 만들고 싶은데 어떻게 함수를 만들어야 할지 몰라서
질문을 드립니다. 또한 그것 외로는 설명칸에서 다시 타이틀로 리턴값을 주고 싶은데 어떻게 하면 좋을지 여러분의 지혜를 빌리고싶습니다.
a=1
b=2
c=3
def DrawMap(g_map):
i=0
j=0
for i in range(0,10) :
for j in range(0,10) :
if g_player_x == j and g_player_y == i: #플레이어 위치 선언 플레이어
print("P", end = ' ')
else:
print(I_map[i][j], end = ' ') #플레이어 위치가 아니면 넣어놓은 배열을 선언
print(end = "\n")
print("******************************\n")
print(" ☪☪☪☪☪☪☪☪☪☪☪☪\n")
print(" ❡❡❡ 선택 해라❡❡❡\n")
print(" ☪☪☪☪☪☪☪☪☪☪☪☪\n")
print("******************************\n")
print("타이틀\n\n\n1. 게임시작\n2. 게임 설명\n3. 게임 종료")
play=int(input("선택해주세요.\n\n"))
if play == a :
print(" 게임을 시작하겠습니다 ! \n 혹시 아직 게임 설명도 읽지 않은 흑우는 없으시겠죠 ? 그러면 시작하겠습니다!\n\n press any key!")
input()
name = input("당신의 이름을 입력하세요.\n\n")
name2 = input("당신이 찾는 사람의 이름을 입력해주세요.\n\n")
print("당신이 의 이름은", name, "입니다.", name2, "를 찾기위해 나아가 주세요!\n\n\n\n\n\n")
I_map = [[1,1,1,1,1,1,1,1,0,1],
[0,0,0,0,0,0,0,1,0,1],
[1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,1,0,0,1,0,1],
[1,1,1,0,1,1,1,0,0,0],
[1,0,1,0,0,0,0,1,0,1],
[1,1,1,1,0,1,1,1,0,1],
[1,0,0,1,0,1,0,1,1,1],
[1,0,0,1,0,1,0,1,0,1],
[1,1,1,1,1,1,0,1,1,1]]
g_player_x = 0
g_player_y = 0
while I_map[g_player_x][g_player_y] != '1' :
DrawMap(I_map)
g_input = input("\n명령을 내려주세요(1. 좌 2. 우 3. 하 4. 상) : ")
if g_input == '1':
if g_player_x > 0:
g_player_x = g_player_x - 1
if g_input == '2':
if g_player_x < 9:
g_player_x = g_player_x + 1
if g_input == '3':
if g_player_y < 9:
g_player_y = g_player_y + 1
if g_input == '4':
if g_player_y > 0:
g_player_y = g_player_y - 1
DrawMap(i_map)
print("\n축하합니다. 탈출하셨어요")
else :
if play == b :
print("어서오세요 손님, 이곳은 죽은 사람이 미처 지옥으로 가지 못한채 묶여 있는 황천입니다. 산자로써 이곳에 온 당신은 단 한명만을 구할 수 있는 기회를 드리죠. ")
print("하지만 그것은 쉽지 않을 것 입니다. 당신을 쫓아다니는 무언가가 있기 때문입니다. ")
print("당신은 이곳에서 그저 원하는 것을 찾기만 하면 될 뿐입니다. 그럼 무운을 빌겠습니다.")
input()
else :
if play == c :
print("프로그램 종료를 선택하셨습니다.\n")
print("게임을 종료합니다.\n")
else :
print("아무것도 선택 못한 당신은 이곳에 올 자격이 없습니다.")
print(" 게임을 종료합니다.")
조건문으로 0보다 큰지 검사하면 되잖아
if로 넣어서 했는데 잘 안되서 그러는데 어떤 조건문으로 하면 되나요?
지금 배운지 2달조금 안되서 잘 모르다 보니.....
if면 충분한데 잘 안되는건 다른 문제가 있겠지
if [g_player_x][g_player_y] != '1' :을 if g_input == '1': if g_player_x > 0: if [g_player_x][g_player_y] != '1' : g_player_x = g_player_x - 1 이렇게 넣었는데 잘못된 건지 알려주시면 감사하겠습니다 , 어떻게 적어야하나요 ?
겜 시작하면 while문 먼저 돌리고 설명창에서 input 받아서 continue로 빠져 나오면 될듯
이동과 이동가능여부 판별에 대해서 함수로 만들고 os.[...] 써서 창 클리어 같은거도 넣어보셈