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

2021. 3. 18. 18:00C#/수업내용

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;
        }
    }

'C# > 수업내용' 카테고리의 다른 글

0319 Partial Class 분할 클래스  (0) 2021.03.19
0319 2차원 배열 복습  (0) 2021.03.19
2차원 배열 isometric view  (0) 2021.03.18
0318 다차원 배열 (맵 변경하기)  (0) 2021.03.18
0318 다차원 배열 연습 10개  (0) 2021.03.18