using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2048
{
internal class Program
{
private static int[] Chess = new int[16];
private static void Main(string[] args)
{
Chess[0] = 2;
Chess[1] = 0;
Chess[2] = 0;
Chess[3] = 2;
Chess[4] = 2;
Chess[8] = 2;
Chess[12] = 2;
while (true)
{
Console.WriteLine();
xianShi();
Console.WriteLine(".................");
ConsoleKeyInfo cki = Console.ReadKey();
AllPlus(cki.Key + "");
Gen2();
}
}
public static void AllPlus(string position)
{
if (position.Equals("UpArrow"))
{
Console.WriteLine("进入循环");
for (int i = 4; i < 16; i++)
{
int j = i - 4;
while (true)
{
if (Chess[i] == 0)
break;
if (Chess[i] == Chess[j])
{
Chess[j] += Chess[i];
Chess[i] = 0;
break;
}
if (Chess[j] != 0)
{
break;
}
if ((j - 4) < 0 || Chess[j - 4] != Chess[i] && Chess[j - 4] != 0)
{
Chess[j] += Chess[i];
Chess[i] = 0;
break;
}
else
{
j = j - 4;
}
}
}
Console.WriteLine("循环结束");
return;
}
if (position.Equals("RightArrow"))
{
Console.WriteLine("进入循环");
for (int i = 0; i < 16; i++)
{
if (i == 3 || i == 7 || i == 11 || i == 15)
{
continue;
}
int j = i + 1;
while (true)
{
if (Chess[i] == 0) break;
if (Chess[i] == Chess[j])
{
Chess[j] += Chess[i];
Chess[i] = 0;
break;
}
if (Chess[j] != 0)
{
break;
}
if ((j + 1) == 4 || (j + 1) == 8 || (j + 1) == 12 || (j + 1) == 16 ||
(Chess[j + 1] != Chess[i] && Chess[j + 1] != 0))
{
Chess[j] += Chess[i];
Chess[i] = 0;
break;
}
else
{
j = j + 1;
}
}
}
Console.WriteLine("循环结束");
return;
}
if (position.Equals("DownArrow"))
{
for (int i = 0; i < 12; i++)
{
int j = i + 4;
while (true)
{
if (Chess[i] == 0)
break;
if (Chess[i] == Chess[j])
{
Chess[j] += Chess[i];
Chess[i] = 0;
break;
}
if (Chess[j] != 0)
{
break;
}
if ((j + 4) > 15 || (Chess[j + 4] != Chess[i] && Chess[j + 4] != 0))
{
Chess[j] += Chess[i];
Chess[i] = 0;
break;
}
else
{
j = j + 4;
}
}
}
}
if (position.Equals("LeftArrow"))
{
for (int i = 0; i < 16; i++)
{
if (i == 0 || i == 4 || i == 8 || i == 12)
{
continue;
}
int j = i - 1;
while (true)
{
if (Chess[i] == 0) break;
if (Chess[i] == Chess[j])
{
Chess[j] += Chess[i];
Chess[i] = 0;
break;
}
if (Chess[j] != 0)
{
break;
}
if ((j - 1) == -1 || (j - 1) == 3 || (j - 1) == 7 || (j - 1) == 11 ||
(Chess[j - 1] != Chess[i] && Chess[j - 1] != 0))
{
Chess[j] += Chess[i];
Chess[i] = 0;
break;
}
else
{
j = j - 1;
}
}
}
}
}
public static void Gen2()
{
Random ran = new Random();
int count = 0;
while (count < 2)
{
int getNums = ran.Next(0, 15);
if (Chess[getNums] == 0)
{
Chess[getNums] = 2;
count++;
}
}
}
public static void xianShi()
{
for (int i = 0; i < 16; i++)
{
if (i%4 == 0 && i != 0)
{
Console.WriteLine();
}
if (Chess[i] != 0)
{
Console.Write(Chess[i] + "|");
}
else
{
Console.Write(" |");
}
}
Console.WriteLine();
}
}
}
简单实现的2048算法
最新推荐文章于 2023-12-18 19:10:54 发布