c++简单代码,代码大全
大家好,关于c++简单代码很多朋友都还不太明白,今天小编就来为大家分享关于代码大全的知识,希望对各位有所帮助!
C++做一个小游戏,有源代码的最好,谢谢
#include<iostream>
#include<fstream>
#include<ctime>
#include<cmath>
#include<stdlib.h>
#include<stdio.h>//时间//文件
#include<string>
#define random(x)(rand()%x)
using namespace std;
void thunder(int Dif,int Row,int Column,char*USer)
{
int r,c,alls[22][22],backstage[22][22]={0};
srand((int)time(0));
for(r=1;r<=Row;r++)//生成alls(0~1)1是雷
{
for(c=1;c<=Column;c++)
{
if(random(6)<1){alls[r][c]=1;} else{alls[r][c]=0;};
}
};
for(r=0;r<=Row+1;r++)//生成 backstage(正确答案)
{
for(int c=0;c<=Column+1;c++)
{
if(alls[r][c]==1)
{
(int)backstage[r][c]='*';//将1变为*代表雷
}
else
{
for(int i=r-1;i<=r+1;i++)//将0变为数字(代表周围雷数)
for(int j=c-1;j<=c+1;j++)
{
if(alls[i][j]!=alls[r][c]&&alls[i][j]==1){backstage[r][c]++;};
}
};//else结束
};// for结束
};// for结束
cout<<"======================*********================================"<<endl;
char surface[22][22];//生成surface(用户界面)
for(r=0;r<22;r++)//全部为零
for(c=0;c<22;c++)
{
surface[r][c]='0';
}
for(r=1;r<=Row;r++)//中间化#形成0包围#的形式(通过数#-->(*||数字)的个数赢的时候停止循环)
for(c=1;c<=Column;c++)
{
surface[r][c]='#';
}
for(r=1;r<=Row;r++)//输出 surface界面便于检查
{
for(c=1;c<=Column;c++){cout<<""<<surface[r][c];};
cout<<endl;
};
cout<<"请按格式输入"<<endl
<<"前两个数字为坐标,最后一个数字“1”表示此位置为雷,“0”则表示不是。"<<endl
<<"如:1 3 1表示一行三列是雷;2 4 0表示二行四列不是雷"<<endl
<<"提示:当数字周围雷都被扫出时,可再次按要求输入此位置,可得到周围数字。"<<endl;
long i=10000000L;//计算时间开始
clock_t start,finish;
double duration;
start=clock();
while(i--);//计算时间开始
int num=Row*Column;//计算#号个数
while(num!=0)//控制是否点完所有位置
{
int x,y,judge;
cin>>x>>y>>judge;
if(alls[x][y]!=judge)
{
cout<<"you lose!!!"<<endl;
cout<<"The answer is:"<<endl;
for(r=1;r<=Row;r++)//输了输出backstage显示正确答案
{
for(int c=1;c<=Column;c++)
{
cout<<""<<(char)(backstage[r][c]==42?backstage[r][c]:backstage[r][c]+'0');//输出backstage
}
cout<<endl;
}
break;
}
else
{
if(alls[x][y]==1){if(surface[x][y]=='#'){num--;}surface[x][y]='@';}//雷判断正确显示“@”;数“#”
else
{
if(backstage[x][y]!=0)//数字判断正确显示数字
{
if(surface[x][y]=='#'){num--; surface[x][y]=backstage[x][y]+'0';}//数“#”
else
{
int lei_num=0;
for(int i=x-1;i<=x+1;i++)//数数字周围雷的个数
for(int j=y-1;j<=y+1;j++)
{
if(surface[i][j]=='@')
lei_num++;
}
if(backstage[x][y]==lei_num)//看数字周围雷是否全部扫出提示显示数字周围
{
for(int i=x-1;i<=x+1;i++)
for(int j=y-1;j<=y+1;j++)
if(surface[i][j]=='#')//数“#”
{
surface[i][j]=backstage[i][j]+'0';
num--;
}
}
}
}
else//数字为零时显示零周围的零
{
if(surface[x][y]=='#'){num--;};//数“#”
surface[x][y]=backstage[x][y]+'0';
for(int i=x-1;i<=x+1;i++)//显示零周围的数字
for(int j=y-1;j<=y+1;j++)
if(surface[i][j]=='#')//避免死循环
{
surface[i][j]=backstage[i][j]+'0';
num--;//数“#”
}
for(int k=0;k<20;k++)//最多20层零(点出最边上的零)
{
for(int R=1;R<=Row;R++)//检查所有零
for(int C=1;C<=Column;C++)//再次显示零周围的数字
{
if(surface[R][C]=='0')
{
for(int i=R-1;i<=R+1;i++)
for(int j=C-1;j<=C+1;j++)
{
if(surface[i][j]=='#')//避免死循环数“#”
{
surface[i][j]=backstage[i][j]+'0';
num--;
}
}
}
}//匹配for内
}//匹配 for外
}//匹配else
}//匹配else
}//匹配els
cout<<endl;
cout<<"======================*********================================"<<endl;
for(r=1;r<=Row;r++)//输出界面(已修改)
{
for(c=1;c<=Column;c++){cout<<""<<surface[r][c];};
cout<<endl;
};
}//匹配while
finish=clock();//计算时间结束
duration=(double)(finish-start)/CLOCKS_PER_SEC;//时间变量
if(num==0)//所有
{
cout<<" You win! Congratulations!!"<<endl;
cout<<" Your time is:"<<duration<<endl;
if(Dif==1)//读取简单扫雷的存储文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("扫雷简单.txt");
for(i=0;i<5;i++)//文件中信息导入到数组里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer;//本轮玩家信息
times[5]=duration;
double t1=0;
string t2;
for(int j=0;j<5;j++)//冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("扫雷简单.txt");
for(i=0;i<5;i++)//将前五名玩家信息存储到文件中
{
cout<<name[i]<<""<<i+1<<""<<times[i]<<endl;
outf<<name[i]<<""<<i+1<<""<<times[i]<<endl;
}
outf.close();
}
if(Dif==2)//读取一般扫雷的存储文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("扫雷一般.txt");
for(i=0;i<5;i++)//文件中信息导入到数组里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer;//本轮玩家信息
times[5]=duration;
double t1=0;
string t2;
for(int j=0;j<5;j++)//冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("扫雷一般.txt");
for(i=0;i<5;i++)//将前五名玩家信息存储到文件中并输出
{
cout<<name[i]<<""<<i+1<<""<<times[i]<<endl;
outf<<name[i]<<""<<i+1<<""<<times[i]<<endl;
}
outf.close();
}
if(Dif==3)//读取困难扫雷的存储文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("扫雷困难.txt");
for(i=0;i<5;i++)//文件中信息导入到数组里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer;//本轮玩家信息
times[5]=duration;
double t1=0;
string t2;
for(int j=0;j<5;j++)//冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("扫雷困难.txt");
for(i=0;i<5;i++)//将前五名玩家信息存储到文件中
{
cout<<name[i]<<""<<i+1<<""<<times[i]<<endl;
outf<<name[i]<<""<<i+1<<""<<times[i]<<endl;
}
outf.close();
}
}
}
void scale(int dif,char*User)//选择难度
{
int row,column;
if(dif==1){row=3;column=3;}
if(dif==2){row=7;column=7;}
if(dif==3){row=10;column=10;}
cout<<"The scale is:"<<row<<"*"<<column<<endl;
thunder(dif,row,column,User);
};
int main()
{
int Continue=1;
int difficulty;
char user[10];
cout<<" Welcom to the game!"<<endl
<<"请输入用户名!"<<endl;
cin>>user;
while(Continue==1)
{
cout<<"=======================*******************======================="<<endl
<<"请选择难度!"<<endl
<<"简单——1"<<endl
<<"一般——2"<<endl
<<"困难——3"<<endl;
cin>>difficulty;
scale(difficulty,user);
cout<<"继续游戏——1结束游戏——0"<<endl;
cin>>Continue;
}
return 0;
}
扫雷小游戏,自己编的代码
小游戏的C++代码
1.火脸柴人小游戏的C++代码实现
这是一个简单的火脸柴人游戏,玩家通过方向键控制蓝色小人移动,避开位于(10, 10)位置的红色老女人。一旦小人与老女人相遇,游戏结束。代码使用C++编写,需要在编译时添加 `-std=c++11`参数以确保正确编译。
2.关键函数的代码片段
以下是关键函数的代码片段:
- `void gotoxy(int x, int y)`:用于移动光标到指定坐标。
- `int clean(int mm, int nn)`:清除屏幕上的字符。
- `int men(int x, int y)`:绘制蓝色小人。
- `int women(int i, int j)`:绘制红色老女人。
3.游戏逻辑实现
游戏的核心逻辑在`int womenmove()`和`int menmove()`函数中实现,其中`womenmove()`是红女人的移动逻辑,`menmove()`是玩家控制的小人的移动逻辑。游戏开始后,程序会启动一个线程处理红女人的移动,同时主进程控制玩家小人的移动。
4.游戏界面与提示信息
游戏界面会显示提示信息,如"游戏开始后,随机按下一个键,唤醒你的蓝色小人。如果你被红色的老女人碰到了,那么你就死了",指示使用方向键进行操作。
5.游戏结束提示
游戏结束后,会显示"Game Over"的提示。
一个简单的C++程序
1、一些编译器不支持“voidmain()”,把此行换成“intmain()”
cout<<"Iamastudent";后面加一个return0;
2、第一行换成#include<iostream>,你现在用的是C语言的写法,一些编译器不支持。
3、包含了头文件必须要指定命名空间,在第一行后加一句usingnamespacestd;
(标准命名空间)。
程序如下:(图片)如果不想让程序刚输出完闪一下就退出,在“//”处加一句“system("pause");”
这些错误信息就是英语,很容易看懂,而且编译器给出的错误信息不一定好,还要具体问题具体分析。
关于C++的问题以后还可以问我,我也用DEV-C++,QQ:627861183。
c++简单代码和代码大全的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!