C 语言编程 2048 小游戏
/*By Reason*/
#include
#include
#include
#include
#include
#include // 为了读取方向键
#include
using namespace std; //srand( (unsigned)time( NULL ) ); // 随机数种子
不能用在这里 int pane[4][4]; // 棋盘
int N=1; //2 的 n 次方
void showpane() // 显示棋盘
{
cout<
cout<
for(int i&#61;0;i<&#61;3;i&#43;&#43;)
{
cout<
for(int j&#61;0;j<&#61;3;j&#43;&#43;)
{
//SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND
_RED);
cout<
if(j&#61;&#61;3)
{
cout<
cout<
}
}
}
}
void newgame() // 开始游戏
{
N&#61;1;
for(int i&#61;0;i<&#61;3;i&#43;&#43;) // 初始化棋盘
for(int j&#61;0;j<&#61;3;j&#43;&#43;)
pane[i][j]&#61;0;
srand( (unsigned)time( NULL ) );
int m&#61;rand()%4;
int n&#61;rand()%4;
int p&#61;rand()%4;
int q&#61;rand()%4;
pane[m][n]&#61;pane[p][q]&#61;2;
showpane();
}
int if2n(int x) // 判断 x 是否是 2 的 n 次方 {
int flag&#61;0;
for(int n&#61;1;n<&#61;11;n&#43;&#43;)
{
if(x&#61;&#61;pow(2,n))
{
flag&#61;1;
if(n>N)
N&#61;n;
return flag;
}
}
return flag;
}
int upmove() // 上移
{
int flag&#61;0;
for(int j&#61;0;j<&#61;3;j&#43;&#43;)
for(int i&#61;0;i<3;i&#43;&#43;)
{
if(if2n(pane[i][j]&#43;pane[i&#43;1][j])&#61;&#61;1)
{
pane[i][j]&#61;pane[i][j]&#43;pane[i&#43;1][j];
pane[i&#43;1][j]&#61;0;
flag&#61;1;
}
}
return flag;
}
int downmove() // 下移
{
int flag&#61;0;
for(int j&#61;0;j<&#61;3;j&#43;&#43;)
for(int i&#61;3;i>0;i--)
{
if(if2n(pane[i][j]&#43;pane[i-1][j])&#61;&#61;1)
{
pane[i][j]&#61;pane[i][j]&#43;pane[i-1][j];
pane[i-1][j]&#61;0;
flag&#61;1;
}
}
return flag;
}
int leftmove() // 左移
{
int flag&#61;0;
for(int i&#61;0;i<&#61;3;i&#43;&#43;)
for(int j&#61;0;j<3;j&#43;&#43;)
{
if(if2n(pane[i][j]&#43;pane[i][j&#43;1])&#61;&#61;1)
{
pane[i][j]&#61;pane[i][j]&#43;pane[i][j&#43;1];
pane[i][j&#43;1