C# 2048游戏核心逻辑(beta)

核心逻辑:

v2-a01619a5443dd0f2e546db57ff2d048f_b.jpg
        using System;

namespace VSc02
{
    class Program
    {
        static void Main()
        {
            int[,] arr ={
                {4,2,0,2},
                {2,0,2,0},
                {0,0,0,2},
                {2,0,2,2}
            };
            PrintArr(arr);
            MoveUp(arr);
            Console.WriteLine("----------------");
            PrintArr(arr);
            
        }
        //格式化打印二维数组
        private static void PrintArr(int[,] arr){
            for(int i=0;i<arr.GetLength(0);i++){
                for(int j=0;j<arr.GetLength(1);j++){
                    Console.Write(arr[i,j]+"\t");
                }
                Console.WriteLine();
            }
        }
        //上移函数
        private static void MoveUp(int[,] resaveArr)
        {
            int[] temp = new int[4];
            for (int i = 0; i < resaveArr.GetLength(1); i++)
            {
                for (int j = 0; j < resaveArr.GetLength(0); j++)
                {
                    temp[j] = resaveArr[j, i];
                }
                AddLine(temp);
                for(int k=0 ;k< temp.Length;k++){
                    resaveArr[k,i]=temp[k];
                }
            }
        }
        //下移函数
        private static void MoveDown(int[,] resaveArr)
        {
            int[] temp = new int[4];
            for (int i = 0; i < resaveArr.GetLength(1); i++)
            {
                for (int j = 0; j < resaveArr.GetLength(0); j++)
                {
                    temp[j] = resaveArr[3-j, i];
                }
                AddLine(temp);
                for(int k=0 ;k< temp.Length;k++){
                    resaveArr[3-k,i]=temp[k];
                }
            }
        }
        //左移函数
        private static void MoveLeft(int[,] resaveArr)
        {
            int[] temp = new int[4];
            for (int i = 0; i < resaveArr.GetLength(0); i++)
            {
                for (int j = 0; j < resaveArr.GetLength(1); j++)
                {
                    temp[j] = resaveArr[i, j];
                }
                AddLine(temp);
                for(int k=0 ;k< temp.Length;k++){
                    resaveArr[i,k]=temp[k];
                }
            }
        }
        //右移函数
        private static void MoveRight(int[,] resaveArr)
        {
            int[] temp = new int[4];
            for (int i = 0; i < resaveArr.GetLength(0); i++)
            {
                for (int j = 0; j < resaveArr.GetLength(1); j++)
                {
                    temp[j] = resaveArr[i, 3-j];
                }
                AddLine(temp);
                for(int k=0 ;k< temp.Length;k++){
                    resaveArr[i,3-k]=temp[k];
                }
            }

        }
        //排序函数,将为0的值靠后,非0的值提前
        private static void RemvoeZero(int[] arr)
        {
            int index = 0;
            int[] arr0 = new int[4];
            foreach (int each in arr)
            {
                if (each != 0) arr0[index++] = each;
            }
            arr0.CopyTo(arr,0);
        }
        //数组中相邻的同样的数相加的方法
        private static void AddLine(int[] arr){
            RemvoeZero(arr);
            for (int i = 0; i < arr.Length-1; i++)
            {
                if(arr[i]!=0 && arr[i]==arr[i+1]){
                    arr[i] +=arr[i+1];
                    arr[i+1]=0;
                }
            }
            RemvoeZero(arr);
        }
    }
}

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值