'2048 게임소스코드'에 해당되는 글 1건

  1. 2019.10.23 2048 프로그램 (저장기능x)

2048 프로그램 (저장기능x)

C#/실습 2019. 10. 23. 15:02

10.22 step2.exe
0.01MB

출력 예:

초기화면
숫자를 받기전 모습
숫자를 받은 후 모습
방향키로 민 후
다시 숫자를 받는다

코드:


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

namespace _10._22_step2
{
    class App
    {
        int[,] arr = new int[4, 4];
        Random rand = new Random();
        Random rand2 = new Random();
        public App()
        {
            while (true)
            {
                Console.WriteLine("아무 키를 눌러주세요.");
                Console.ReadKey();
                Console.Clear();
                Console.WriteLine("------------------------");
                Show();
                Console.WriteLine("------------------------");
                for (int i = 0; i < 16; i++)
                {
                    int row = rand.Next(0, 4);
                    int col = rand.Next(0, 4);
                    int num = rand2.Next(0, 7);

                    if (num == 0)
                    {
                        num = 2;
                    }
                    else if (num == 1|| num == 2||num==3
                        ||num==4 || num == 5 || num == 6)
                    {
                        num = 0;
                    }                    
                    if (arr[row, col] == 0)
                    {
                        arr[row, col] = num;
                    }
                }
                Console.WriteLine("아무 키를 누르면 숫자를 받아옵니다.");
                Console.ReadKey();
                Console.Clear();
                Console.WriteLine("------------------------");
                Show();
                Console.WriteLine("------------------------");
                Console.WriteLine("방향키를 눌러 미세요.");
                string key = Console.ReadKey().Key.ToString();
                InputKey(key);
                Console.WriteLine("------------------------");
                Show();
                Console.WriteLine("------------------------");

            }
        }
        public void Show()
        {
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    Console.Write(arr[i, j] + "\t");
                }
                Console.WriteLine();
            }
        }
       
        public void InputKey(string input)
        {
            switch (input)
            {
                case "RightArrow":
                    {
                        for(int k = 3; k>=0; k--)//숫자사이 0 제거
                        {
                            for (int i = 3; i >= 0; i--)
                            {
                                for (int j = 3; j >= 0; j--)
                                {
                                    if (j - 1 >= 0 && arr[i, j] == 0)//o이다
                                    {
                                        arr[i, j] = arr[i, j - 1];
                                        arr[i, j - 1] = 0;
                                    }
                                }
                            }
                        }                        
                            for (int i = 3; i >= 0; i--)
                            {
                                for (int j = 3; j >= 0; j--)
                                {
                                    if (j - 1 >= 0 && arr[i, j] != 0)//숫자다
                                    {
                                        if (arr[i, j] == arr[i, j - 1])//앞에 수가 같다
                                        {
                                            arr[i, j] += arr[i, j - 1];
                                            arr[i, j - 1] = 0;
                                        }
                                    }
                                }
                            }
                        for (int k = 3; k >= 0; k--)//숫자사이 0 제거
                        {
                            for (int i = 3; i >= 0; i--)
                            {
                                for (int j = 3; j >= 0; j--)
                                {
                                    if (j - 1 >= 0 && arr[i, j] == 0)//o이다
                                    {
                                        arr[i, j] = arr[i, j - 1];
                                        arr[i, j - 1] = 0;
                                    }
                                }
                            }
                        }
                        break;
                    }
                case "LeftArrow":
                    {
                        for (int k = 0; k <= 3; k++)//숫자사이 0 제거
                        {
                            for (int i = 0; i <= 3; i++)
                            {
                                for (int j = 0; j <= 3; j++)
                                {
                                    if (j + 1 <= 3 && arr[i, j] == 0)//o이다
                                    {
                                        arr[i, j] = arr[i, j + 1];
                                        arr[i, j + 1] = 0;
                                    }
                                }
                            }
                        }
                        for (int i = 0; i <= 3; i++)
                        {
                            for (int j = 0; j <= 3; j++)
                            {
                                if (j + 1 <= 3 && arr[i, j] != 0)//숫자다
                                {
                                    if (arr[i, j] == arr[i, j + 1])//앞에 수가 같다
                                    {
                                        arr[i, j] += arr[i, j + 1];
                                        arr[i, j + 1] = 0;
                                    }
                                }
                            }
                        }
                        for (int k = 0; k <= 3; k++)//숫자사이 0 제거
                        {
                            for (int i = 0; i <= 3; i++)
                            {
                                for (int j = 0; j <= 3; j++)
                                {
                                    if (j + 1 <= 3 && arr[i, j] == 0)//o이다
                                    {
                                        arr[i, j] = arr[i, j + 1];
                                        arr[i, j +1] = 0;
                                    }
                                }
                            }
                        }
                        break;
                    }
                case "UpArrow":
                    {
                        for (int k = 0; k <= 3; k++)//숫자사이 0 제거
                        {
                            for (int i = 0; i <= 3; i++)
                            {
                                for (int j = 0; j <= 3; j++)
                                {
                                    if (j + 1 <= 3 && arr[j, i] == 0)//o이다
                                    {
                                        arr[j, i] = arr[j+1, i];
                                        arr[j+1, i] = 0;
                                    }
                                }
                            }
                        }
                        for (int i = 0; i <= 3; i++)
                        {
                            for (int j = 0; j <= 3; j++)
                            {
                                if (j + 1 <= 3 && arr[j, i] != 0)//숫자다
                                {
                                    if (arr[j, i] == arr[j+1, i])//앞에 수가 같다
                                    {
                                        arr[j, i] += arr[j+1, i];
                                        arr[j+1, i] = 0;
                                    }
                                }
                            }
                        }
                        for (int k = 0; k <= 3; k++)//숫자사이 0 제거
                        {
                            for (int i = 0; i <= 3; i++)
                            {
                                for (int j = 0; j <= 3; j++)
                                {
                                    if (j + 1 <= 3 && arr[j, i] == 0)//o이다
                                    {
                                        arr[j, i] = arr[j+1, i];
                                        arr[j+1, i] = 0;
                                    }
                                }
                            }
                        }
                        break;
                    }
                case "DownArrow":
                    {
                        for (int k = 3; k >= 0; k--)//숫자사이 0 제거
                        {
                            for (int i = 3; i >= 0; i--)
                            {
                                for (int j = 3; j >= 0; j--)
                                {
                                    if (j - 1 >= 0 && arr[j, i] == 0)//o이다
                                    {
                                        arr[j, i] = arr[j-1, i];
                                        arr[j-1,i] = 0;
                                    }
                                }
                            }
                        }
                        for (int i = 3; i >= 0; i--)
                        {
                            for (int j = 3; j >= 0; j--)
                            {
                                if (j - 1 >= 0 && arr[j, i] != 0)//숫자다
                                {
                                    if (arr[j, i] == arr[j-1, i])//앞에 수가 같다
                                    {
                                        arr[j, i] += arr[j-1, i];
                                        arr[j-1,i] = 0;
                                    }
                                }
                            }
                        }
                        for (int k = 3; k >= 0; k--)//숫자사이 0 제거
                        {
                            for (int i = 3; i >= 0; i--)
                            {
                                for (int j = 3; j >= 0; j--)
                                {
                                    if (j - 1 >= 0 && arr[j, i] == 0)//o이다
                                    {
                                        arr[j, i] = arr[j-1, i];
                                        arr[j-1,i] = 0;
                                    }
                                }
                            }
                        }
                        break;
                    }
            }

        }
    }
}


 

: