如何用C++编写一个小游戏

2024-07-18 11:35:24作者:饭克斯

一个用C++编程的小游戏,可以实现的功能如下:

1、随机生成数字;

2、数字消除合并;

3、判定游戏结束;

一、游戏主体:

因为用C++写的,所以用了类,棋盘用了一个二维数组,m是棋盘规格,取了4。

classgame

{

public:

inti,j;

game(){

count1=0;

for(i=0;i<m;i++)

for(j=0;j<m;j++)

chessboard[i][j]=0;

srand((unsigned)time(NULL));

x=rand()%m;

y=rand()%m;

if(count1==1||count1==0)

chessboard[x][y]=2;

else

chessboard[x][y]=4;

showchessboard();

}//构造初始棋盘

voidadd(intcount1);//新增数字

voidshowchessboard();//显示棋盘

voidup();

voiddown();

voidleft();

voidright();

boolgameover();//游戏失败

private:

intchessboard[m][m];

intx,y,count1,count2,temp1,temp2,k;//c1-连消,c2-空位标记,t1-判连消,t2,k-临时变量

boolflag;//判消

};

二、随机生成数字

voidgame::add(intcount1)

{

for(i=0;i<m;i++)

for(j=0;j<m;j++)

{

if(chessboard[i][j]==0)

gotoloop;

}

showchessboard();

return;

loop:srand((unsigned)time(NULL));

do{

x=rand()%m;

y=rand()%m;

}while(chessboard[x][y]!=0);

if(count1<2)

chessboard[x][y]=2;

else

chessboard[x][y]=4;

showchessboard();

}

三、数字消除合并

voidgame::up()

{

temp1=count1;

flag=false;

for(j=0;j<m;j++)

for(i=0;i<m;)

{

for(;i<4&&chessboard[i][j]==0;i++);//找非零值

if(i==4)

break;

else

{

for(k=i+1;k<4&&chessboard[k][j]==0;k++);//找下一个非零值

if(k==4)

break;

elseif(chessboard[i][j]==chessboard[k][j])//匹配

{

chessboard[i][j]*=2;

chessboard[k][j]=0;

i=k+1;

flag=true;

}

elseif(chessboard[i][j]!=chessboard[k][j]&&k<4)//不匹配

{

i=k;

}

}

}

for(j=0;j<m;j++)//排列棋盘

for(i=0,count2=0;i<m;i++)

{

if(chessboard[i][j]!=0)

{

temp2=chessboard[i][j];

chessboard[i][j]=0;

chessboard[count2][j]=temp2;

count2++;

}

}

}

四、判断游戏结束

boolgame::gameover()

{

if(flag)

count1++;//判连消

if(temp1==count1)

count1=0;//未消除,连消归零

add(count1);

for(i=m-1,j=0;j<m;j++)//最后一行

{

if(j==m-1)//右下角

{

if(chessboard[i][j]==0)

returnfalse;

elseif(chessboard[i][j]==2048)

{

cout<<YouWin~\n;

returntrue;

}

}

else

{

if(chessboard[i][j]==0||chessboard[i][j]==chessboard[i][j+1])

returnfalse;

elseif(chessboard[i][j]==2048)

{

cout<<YouWin~\n;

returntrue;

}

}

}

for(i=0,j=m-1;i<m;i++)//最后一列

{

if(i==m-1)//右下角

{

if(chessboard[i][j]==0)

returnfalse;

elseif(chessboard[i][j]==2048)

{

cout<<YouWin~\n;

returntrue;

}

}

else

{

if(chessboard[i][j]==0||chessboard[i][j]==chessboard[i+1][j])

returnfalse;

elseif(chessboard[i][j]==2048)

{

cout<<YouWin~\n;

returntrue;

}

}

}

for(i=0;i<m-1;i++)

for(j=0;j<m-1;j++)

{

if(chessboard[i][j]==2048)

{

cout<<YouWin!\n;

returntrue;

}

elseif(chessboard[i][j]==chessboard[i][j+1]||chessboard[i][j]==chessboard[i+1][j]||chessboard[i][j]==0)

returnfalse;

}

cout<<Gameover.\n;

returntrue;

}

扩展资料:

C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。

生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。但是该过程实际上分成两个步骤。

第一步是对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);

第二步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。

展开全文

热门推荐

相关攻略

猜你喜欢