2048简单模拟

2、控制层
#include <iostream>
#include <iomanip>
using namespace std;
const int m=4;
int score=0;
inline void swapTwoInt(int &x,int &y)
{
	if (x==y)
	{
		return;
	}
	x^=y;
	y^=x;
	x^=y;
}
void printArray(int arr[][4])
{
	for (int i=0;i<m;++i)
	{
		for (int j=0;j<m;++j)
		{
			cout<<setw(4)<<arr[i][j];
		}
		cout<<endl;
	}
}
int RowAlignLeft(int a[])
{
	int count=0;
	int i=0,j=0;
	for (;i<m;++i)
	{
		if (a[i]==0)
		{
			for (j=i+1;j<m;++j)
			{
				if (a[j]!=0)
				{
					a[i]=a[j];
					a[j]=0;
					break;
				}
			}
		}
		//else
		{
			for (j=i+1;j<m;++j)
			{
				if(a[i]==a[j])
				{
					a[i]+=a[j];
					count+=a[i];
					a[j]=0;
					break;
				}
				else
				{
					if (a[j]==0)
					{
						continue;
					}
					else break;
				}
					
			}
		}
	}	
	return count;
}


void reverseArray(int a[])
{
	int i=0,j=0;
	int count=0;
	for (int i=0;i< m/2;++i)
	{
		swapTwoInt(a[i],a[m-i-1]);
	}

}
void symmetricArray(int a[4][4])
{
	for (int i=0;i<m;++i)
	{
		for(int j=i;j<m;++j)
		{
			swapTwoInt(a[i][j],a[j][i]);
		}
		
	}
}
void toLeft(int ar[][4])
{
	for (int i=0;i<m;++i)
	{
		score+=RowAlignLeft(ar[i]);
	}
	
}
void toRight(int ar[][4])
{
	for (int i=0;i<m;++i)
	{
		reverseArray(ar[i]);
		score+=RowAlignLeft(ar[i]);
		reverseArray(ar[i]);
	}

}
void toTop(int ar[][4])
{
	symmetricArray(ar);
	toLeft(ar);
	symmetricArray(ar);

}
void toBottom(int ar[][4])
{
	symmetricArray(ar);
	toRight(ar);
	symmetricArray(ar);
}
/*int main(int argr,int agrc[])
{

	int TwoArray[][m]={{0,2,2,2},
						{2,2,4,0},
						{8,2,0,4},
						{0,0,2,4}};
	printArray(TwoArray);
	toBottom(TwoArray);
	printArray(TwoArray);
	cout<<"score is "<<score<<endl;
	system("pause");
	return 0;
}*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值