C#/수업내용

0318 다차원 배열에서 캐릭터 이동

피주빈 2021. 3. 18. 18:00
public class App
    {
        //생성자 
        public App()
        {
            Console.WriteLine("App");
            TileMapManager tmm = new TileMapManager();
            tmm.Init();
            tmm.PrintMap();

            Hero hero = new Hero(new Coord(0, 0));
            hero.Move(new Coord(1, 0));
            Coord coord = hero.Coord;
            Console.WriteLine("hero coord: ({0},{1})", coord.x, coord.y);

            MapData data = tmm.GetMapData(coord);
            Console.WriteLine("map data: {0}", data.data);
        }
    }
public class TileMapManager
    {
        private int row;
        private int col;
        public MapData[,] map;
        public int[,] arr = {
            { 101, 100, 100 },
            { 101, 101, 101 },
            { 100, 100, 100 },
        };

        //생성자 
        public TileMapManager()
        {

        }

        public void Init()
        {
            this.row = this.arr.GetLength(0);
            this.col = this.arr.GetLength(1);

            this.map = new MapData[this.row, this.col];

            for (int i = 0; i < this.row; i++)
            {
                for (int j = 0; j < this.col; j++)
                {
                    var data = new MapData(this.arr[i, j]);
                    this.map[i, j] = data;
                }
            }
        }

        public MapData[,] GetMap()
        {
            return this.map;
        }

        public void PrintMap()
        {
            for (int i = 0; i < this.row; i++)
            {
                for (int j = 0; j < this.col; j++)
                {
                    MapData data = this.map[i, j];
                    Console.Write("{0, 2} ", data.data);
                }
                Console.WriteLine();
            }
        }

        public MapData GetMapData(Coord coord)
        {
            return this.map[coord.y, coord.x];
        }
    }
public class Hero
    {
        public Coord Coord
        {
            get; private set;
        }
        //생성자 
        public Hero(Coord coord)
        {
            this.Coord = coord;
        }
        public void Move(Coord coord)
        {
            Console.WriteLine("hero move: ({0},{1}) -> ({2},{3})", this.Coord.x, this.Coord.y, coord.x, coord.y);
            this.Coord = coord;
        }
    }
public struct Coord
    {
        public int x;
        public int y;
        //생성자 
        public Coord(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    }
public class MapData
    {
        public int data;
        //생성자 
        public MapData(int data)
        {
            this.data = data;
        }
    }