如何用C++写一个小游戏
1,随机生成数字;
2.数字淘汰与合并;
3、判断游戏结束;
一、游戏主题:?
因为是用C++写的,所以用的是类,棋盘用的是二维数组,m是棋盘规格,取4。
班级游戏
{
公共:
int i,j;
游戏(){
count 1 = 0;
for(I = 0;我& ltm;i++)
for(j = 0;j & ltm;j++)
棋盘[I][j]= 0;
srand((无符号)时间(空));
x = rand()% m;
y = rand()% m;
if(count 1 = = 1 | | count 1 = = 0)
棋盘[x][y]= 2;
其他
棋盘[x][y]= 4;
show棋盘();
}//构建初始棋盘
void add(int count 1);//添加新图形
void棋盘();//显示棋盘
void up();
void down();
void left();
void right();
bool game over();//游戏失败
私人:
int棋盘[m][m];
int x,y,count1,count2,temp1,temp2,k;//c1-消去,c2-空位标记,t1-判断消去,t2,k-临时变量。
布尔标志;//取消
};
第二,随机生成数字
无效游戏::add(int count1)
{
for(I = 0;我& ltm;i++)
for(j = 0;j & ltm;j++)
{
if(棋盘[i][j] == 0)
转到循环;
}
show棋盘();
返回;
loop:srand((无符号)time(NULL));
做{
x = rand()% m;
y = rand()% m;
} while(棋盘[x][y]!= 0);
if(count 1 & lt;2)
棋盘[x][y]= 2;
其他
棋盘[x][y]= 4;
show棋盘();
}
第三,数字淘汰和合并
void game::up()
{
temp 1 = count 1;
flag = false
for(j = 0;j & ltm;j++)
for(I = 0;我& ltm;)
{
for(;我& lt4 & amp& amp棋盘[I][j]= = 0;i++);//查找非零值
如果(i == 4)
打破;
其他
{
for(k = I+1;k & lt4 & amp& amp棋盘[k][j]= = 0;k++);//查找下一个非零值
如果(k == 4)
打破;
Else if(棋盘[I] [j] = =棋盘[k][j])//匹配
{
棋盘[I][j]* = 2;
棋盘[k][j]= 0;
I = k+1;
flag = true
}
else if(棋盘[i][j]!棋盘[k][j]& amp;& ampk & lt4)//不匹配
{
I = k;
}
}
}
for(j = 0;j & ltm;J++)//排列棋盘
for (i = 0,count 2 = 0;我& ltm;i++)
{
if(棋盘[i][j]!= 0)
{
temp2 =棋盘[I][j];
棋盘[I][j]= 0;
棋盘[count 2][j]= temp 2;
count 2++;
}
}
}
第四,判断游戏结束
布尔游戏::gameover()
{
if(标志)
count 1++;//裁决和撤销
if (temp1 == count1)
count 1 = 0;//没有淘汰,甚至淘汰到零。
add(count 1);
for (i = m - 1,j = 0;j & ltm;J++)//最后一行
{
If (j == m-1)//右下角
{
if(棋盘[i][j] == 0)
返回false
else if(棋盘[i][j] == 2048)
{
cout & lt& lt“你赢了~ \ n”;
返回true
}
}
其他
{
if(棋盘[i][j] == 0 ||棋盘[i][j] ==棋盘[i][j + 1])
返回false
else if(棋盘[i][j] == 2048)
{
cout & lt& lt“你赢了~ \ n”;
返回true
}
}
}
for (i = 0,j = m-1;我& ltm;I++)//最后一列
{
If (i == m-1)//右下角
{
if(棋盘[i][j] == 0)
返回false
else if(棋盘[i][j] == 2048)
{
cout & lt& lt“你赢了~ \ n”;
返回true
}
}
其他
{
if(棋盘[i][j] == 0 ||棋盘[i][j] ==棋盘[i + 1][j])
返回false
else if(棋盘[i][j] == 2048)
{
cout & lt& lt“你赢了~ \ n”;
返回true
}
}
}
for(I = 0;我& ltm-1;i++)
for(j = 0;j & ltm-1;j++)
{
if(棋盘[i][j] == 2048)
{
cout & lt& lt“你赢了!\ n ";
返回true
}
else if(棋盘[i][j] ==棋盘[i][j + 1] ||棋盘[i][j] ==棋盘[i + 1][j] ||棋盘[i][j] == 0)
返回false
}
cout & lt& lt“游戏结束了。\ n ";
返回true
}
扩展数据:
C++语言程序是因为想表现出高性能才编译的。但是,它的开发环境,为了方便测试,将被解释为调试环境。
生成器是指将源代码(C++语句)转换成可运行的应用程序的过程。如果程序编写正确,通常按一个功能键就可以完成这个过程。但是过程其实分两步。
第一步是编译程序,这需要一个编译器。编译器把C++语句转换成机器码(也叫目标码);
第二步是链接程序,这需要一个链接器。链接器将编译后机器码与C++库中的代码合并。C++库包含执行一些常见任务的函数(“函数”是子例程的另一个名称)。
百度百科-C++