#キーボードで操作するローグライクダンジョンゲームを作成する
#キャラクターは@で表現し、壁は#で表現する
#キャラクターはキーボードの矢印キーで操作する
#キャラクターは壁にぶつかるとその方向に進めない

import numpy as np
import random

# ゲームの状態
class GameState:
    def __init__(self):
        self.stage = [
            "####################",
            "#@                 #",
            "#                  #",
            "#                  #",
            "#                  #",
            "####################",
        ]
        self.player_x = 1
        self.player_y = 1
        self.stage_width = len(self.stage[0])
        self.stage_height = len(self.stage)

    def move_player(self, dx, dy):
        new_x = self.player_x + dx
        new_y = self.player_y + dy
        if self.stage[new_y][new_x] != "#":
            self.player_x = new_x
            self.player_y = new_y

    def draw(self):
        for y in range(self.stage_height):
            for x in range(self.stage_width):
                if x == self.player_x and y == self.player_y:
                    print("@", end="")
                else:
                    print(self.stage[y][x], end="")


# ゲームの初期化
game_state = GameState()

# ゲームのメインループ

while True:
    # ゲームの状態を描画
    game_state.draw()
    print()

    # キー入力を取得
    key = input("w:上 s:下 a:左 d:右 q:終了")
    if key == "w":
        game_state.move_player(0, -1)
    elif key == "s":
        game_state.move_player(0, 1)
    elif key == "a":
        game_state.move_player(-1, 0)
    elif key == "d":
        game_state.move_player(1, 0)
    elif key == "q":
        break

    # ゲームの状態を更新
    game_state.draw()






    # ゲームの終了判定
    if game_state.stage[game_state.player_y][game_state.player_x] == "G":
        print("ゲームクリア")
        break






