C#프로그래밍

2차원 배열

다모아 2023. 7. 25. 14:55
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //배열의 인스턴스화
            int[,] arr = new int[3, 2]; // 행 row , 열 col

            //인덱스로 배열의 요소에 접근
            arr[1, 0] = 1;

            //배열의 순회 (요소를 출력)
            int rowLength = arr.GetLength(0);
            int colLength = arr.GetLength(1);
            Console.WriteLine(arr.GetLength(0)); // 1차원, 행
            Console.WriteLine(arr.GetLength(1)); // 2차원, 열

            for(int i = 0; i < rowLength; i++)
            {
                for(int j = 0; j < colLength; j++)
                {
                    Console.Write("{0},{1}({2})   ", i,j, arr[i,j]); // 행, 열 인덱스
                }
                Console.WriteLine();
            }
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //배열의 인스턴스화
            int[,] arr = new int[2, 3]; // 행 row , 열 col

            //인덱스로 배열의 요소에 접근
            arr[0, 2] = 1;
            arr[1, 1] = 1;

            //배열의 순회 (요소를 출력)
            int rowLength = arr.GetLength(0);
            int colLength = arr.GetLength(1);

            for(int i = 0; i < rowLength; i++)
            {
                for(int j = 0; j < colLength; j++)
                {
                    Console.Write("[{0},{1}] : {2}   ", i,j, arr[i,j]); // 행, 열 인덱스
                }
                Console.WriteLine();
            }
        }
    }
}
//Game game = new Game();
//game.Start();

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //배열의 인스턴스화 및 배열의 요소에 접근
            int[,] arr = new int[,]
            {
                {0, 0, 1 },
                {0, 1, 0 }
            };

            //배열의 순회
            for(int i = 0; i < arr.GetLength(0); i++)
            {
                for(int j = 0; j < arr.GetLength(1); j++)
                {
                    Console.Write("[{0},{1}] : {2}  ", i, j, arr[i, j]);
                }
                Console.WriteLine();
            }
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //배열의 인스턴스화 및 배열의 요소에 접근
            int[,] arr = new int[2,3] {
                {1, 1, 1},
                {1, 1, 2}
            };

            //배열의 순회
            for(int i = 0; i < arr.GetLength(0); i++)
            {
                for(int j = 0; j < arr.GetLength(1); j++)
                {
                    Console.Write("[{0},{1}] : {2}  ", i, j, arr[i, j]);
                }
                Console.WriteLine();
            }
        }
    }
}

 

캐릭터 추가

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //배열의 인스턴스화 및 배열의 요소에 접근
            int[,] arr = new int[2,3] {
                {1, 1, 1},
                {1, 1, 2}
            };

            int[,] playerMap = new int[arr.GetLength(0), arr.GetLength(1)];

            this.PrintMap(playerMap);
            this.PrintMap(arr);
        }
        void PrintMap(int[,] arr)
        {
            //배열의 순회
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    Console.Write("[{0},{1}] : {2}  ", i, j, arr[i, j]);
                }
                Console.WriteLine();
            }
        }
    }
}

 

캐릭터 이동

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Game2048
{
    public class App
    {

        int[,] playerMap;
        int rowIdx;
        int colIdx;

        //생성자
        public App()
        {
            //배열의 인스턴스화 및 배열의 요소에 접근
            int[,] arr = new int[2,3] {
                {1, 1, 1},
                {1, 1, 2}
            };

            this.playerMap = new int[arr.GetLength(0), arr.GetLength(1)];

            this.PrintMap(arr);
            this.PrintSpace();
            this.PrintMap(playerMap);
            //초기 위치 설정
            this.rowIdx = 1;
            this.colIdx = 2;
            playerMap[1, 2] = 100;
            this.PrintSpace();
            this.PrintMap(playerMap);
            this.MoveLeft();
            this.PrintSpace();
            this.PrintMap(playerMap);
            this.PrintSpace();
            this.MoveRight();
            this.PrintMap(playerMap);
            this.MoveRight();
            this.PrintMap(playerMap);
            this.MoveRight();
            this.PrintMap(playerMap);

        }
        void PrintSpace()
        {
            Console.WriteLine();
        }
        //왼쪽이동
        void MoveLeft()
        {
            int nextCol = this.colIdx - 1;
            if(nextCol < 0)
            {
                Console.WriteLine("갈수없습니다.");
                return;
            }
            this.playerMap[this.rowIdx, this.colIdx - 1] = 100;
            this.playerMap[this.rowIdx, this.colIdx] = 0;
            this.colIdx -= 1;
            Console.WriteLine("왼쪽으로 이동했습니다.");
        }
        //오른쪽 이동
        void MoveRight()
        {
            int nextCol = this.colIdx + 1;
            if(nextCol > 0)
            {
                Console.WriteLine("갈수없습니다.");
                return;
            }
            this.playerMap[this.rowIdx, this.colIdx + 1] = 100;
            this.playerMap[this.rowIdx, this.colIdx] = 0;
            this.colIdx += 1;
            Console.WriteLine("오른쪽으로 이동했습니다.");
        }
        //위로 이동
        void MoveUp()
        {
            this.playerMap[this.rowIdx + 1, this.colIdx] = 100;
            this.playerMap[this.rowIdx, this.colIdx] = 0;
            this.rowIdx += 1;
            Console.WriteLine("위로 이동했습니다.");
        }
        //아래로 이동
        void MoveDown()
        {
            this.playerMap[this.rowIdx - 1, this.colIdx] = 100;
            this.playerMap[this.rowIdx, this.colIdx] = 0;
            this.rowIdx -= 1;
            Console.WriteLine("아래로 이동했습니다.");
        }

        void PrintMap(int[,] arr)
        {
            //배열의 순회
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    Console.Write("[{0},{1}] : {2}  ", i, j, arr[i, j]);
                }
                Console.WriteLine();
            }
        }
    }
}

 

'C#프로그래밍' 카테고리의 다른 글

좌표, 인덱스, Utils, Vector2, Hero  (0) 2023.07.25
2048[미완]  (0) 2023.07.25
1차원 배열  (0) 2023.07.25
배열 복습  (0) 2023.07.25
1차원 배열 인벤토리  (0) 2023.07.24