c++简单编程代码(简单编程代码)
各位老铁们好,相信很多人对c++简单编程代码都不是特别的了解,因此呢,今天就来为大家分享下关于c++简单编程代码以及简单编程代码的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
如何用C++编写一个小游戏
一个用C++编程的小游戏,可以实现的功能如下:
1、随机生成数字;
2、数字消除合并;
3、判定游戏结束;
一、游戏主体:
因为用C++写的,所以用了类,棋盘用了一个二维数组,m是棋盘规格,取了4。
class game
{
public:
int i, 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();
}//构造初始棋盘
void add(int count1);//新增数字
void showchessboard();//显示棋盘
void up();
void down();
void left();
void right();
bool gameover();//游戏失败
private:
int chessboard[m][m];
int x, y, count1, count2, temp1, temp2, k;//c1-连消,c2-空位标记,t1-判连消,t2,k-临时变量
bool flag;//判消
};
二、随机生成数字
void game::add(int count1)
{
for(i= 0; i< m; i++)
for(j= 0; j< m; j++)
{
if(chessboard[i][j]== 0)
goto loop;
}
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();
}
三、数字消除合并
void game::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;
else if(chessboard[i][j]== chessboard[k][j])//匹配
{
chessboard[i][j]*= 2;
chessboard[k][j]= 0;
i= k+ 1;
flag= true;
}
else if(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++;
}
}
}
四、判断游戏结束
bool game::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)
return false;
else if(chessboard[i][j]== 2048)
{
cout<<"You Win~
";
return true;
}
}
else
{
if(chessboard[i][j]== 0|| chessboard[i][j]== chessboard[i][j+ 1])
return false;
else if(chessboard[i][j]== 2048)
{
cout<<"You Win~
";
return true;
}
}
}
for(i= 0, j= m- 1; i< m; i++)//最后一列
{
if(i== m- 1)//右下角
{
if(chessboard[i][j]== 0)
return false;
else if(chessboard[i][j]== 2048)
{
cout<<"You Win~
";
return true;
}
}
else
{
if(chessboard[i][j]== 0|| chessboard[i][j]== chessboard[i+ 1][j])
return false;
else if(chessboard[i][j]== 2048)
{
cout<<"You Win~
";
return true;
}
}
}
for(i= 0; i< m- 1; i++)
for(j= 0; j< m- 1; j++)
{
if(chessboard[i][j]== 2048)
{
cout<<"You Win!
";
return true;
}
else if(chessboard[i][j]== chessboard[i][j+ 1]|| chessboard[i][j]== chessboard[i+ 1][j]|| chessboard[i][j]== 0)
return false;
}
cout<<"Game over.
";
return true;
}
扩展资料:
C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。
生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。但是该过程实际上分成两个步骤。
第一步是对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);
第二步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。
参考资料来源:
百度百科-C++
菜鸟求c++编程思路
首先,需要有一个判断颜色区别的算法,是否以RGB配色表的下标就可以确定?这个需要根据配色表的特点来决定;也就是说,题目中如何判断延时区别尽量大的算法要设计好,怎么计算;
数据结构:这个应该是二维数组,第一维表示组别,下标取值0~m-1,第二维是颜色,可以用配色表的下标值来表示
算法:要根据具体要求来确定,选取颜色的策略是什么,什么叫每个组的颜色与其他的区别?是否是与临近组的颜色区别?颜色是否可重复?具体计算时可以用辅助数组来表明某个颜色是否已经被选用,利用计算机的穷尽算法找出各种方案的评估取值,最后选用取值最满足要求的方案。
c++游戏编程,写一个游戏编程,简单点
#include<iostream>
#include<iomanip>
usingnamespacestd;
constintX=21;//棋盘行数
constintY=21;//棋盘列数
charp[X][Y];//定义棋盘
intm=0;//定义临时点,保存输入坐标
intn=0;
voiddisplay()//输出棋盘
{
for(inti=0;i<X;i++)
cout<<setw(3)<<setfill('')<<i;
cout<<endl;
for(inti=1;i<Y;i++)
{
cout<<setw(3)<<setfill('')<<i;
for(intj=1;j<X;j++)
cout<<setw(3)<<setfill('')<<p[i][j];
cout<<endl;
}
}
voidblack()//黑方落子
{
cout<<"请黑方输入落子位置:
"
<<"请输入落子的行数:";
cin>>m;
cout<<"请输入落子的列数:";
cin>>n;
if(m<=0||m>=X||n>=Y||n<=0)
{
cout<<"超出棋盘范围,请重新输入正确坐标!
";
black();
}
elseif((p[m][n]==1)||p[m][n]==2)
{
cout<<"该点已有棋子,请重新选取落子点!
";
black();
}
else
p[m][n]=1;//黑方用1来表示
system("cls");
display();
}
voidred()//红方落子
{
cout<<"请红方输入落子位置:
"
<<"请输入落子的行数:";
cin>>m;
cout<<"请输入落子的列数:";
cin>>n;
if(m>=X||m<=0||n<=0||n>=Y)
{
cout<<"超出棋盘范围,请重新输入正确坐标!
";
red();
}
elseif((p[m][n]==1)||p[m][n]==2)
{
cout<<"该点已有棋子,请重新选取落子点!
";
red();
}
else
p[m][n]=2;//红方用2来表示
system("cls");
display();
}
intevalue()//只需要判断落子点为中心的九点“米”字是否连续即可
{
intk=0,r=0;
/*斜线判断*/
for(k=3;k<X-2;k++)//两条,其中的p[k][r]!='-'是排除空子的情况
{
for(r=3;r<Y-2;r++)
{
if(p[k][r]!='-'&&p[k-2][r-2]==p[k][r]&&p[k-1][r-1]==p[k][r]&&p[k+1][r+1]==p[k][r]&&p[k+2][r+2]==p[k][r])
return1;
elseif(p[k][r]!='-'&&p[k+2][r-2]==p[k][r]&&p[k+1][r-1]==p[k][r]&&p[k-1][r+1]==p[k][r]&&p[k-2][r+2]==p[k][r])
return1;
}
}
/*横线判断*/
for(k=1;k<X;k++)//p[k][r]!='-'是排除空子的情况
for(r=3;r<Y-2;r++)
if(p[k][r]!='-'&&p[k][r-2]==p[k][r]&&p[k][r-1]==p[k][r]&&p[k][r+1]==p[k][r]&&p[k][r+2]==p[k][r])
return1;
/*竖线判断*/
for(k=3;k<X-2;k++)//p[k][r]!='-'是排除空子的情况
for(r=1;r<Y;r++)
if(p[k][r]!='-'&&p[k-2][r]==p[k][r]&&p[k-1][r]==p[k][r]&&p[k+1][r]==p[k][r]&&p[k+2][r]==p[k][r])
return1;
return0;
}
intmain()
{
memset(p,'-',441);//初始化为‘-’
cout<<"欢迎使用简易双人对战五子棋游戏
"
<<"五子棋棋谱如下:
";
display();
while(1)
{
red();
if(evalue())
{
cout<<"红方赢!
";
break;
}
black();
if(evalue())
{
cout<<"黑方赢!
";
break;
}
}
return0;
}人人对战五子棋
关于本次c++简单编程代码和简单编程代码的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。