0
已解决
朱瑾文
新手光能
新手光能
#include<iostream>//
#include<math.h>
#include<time.h>
#include<fstream>
#include<windows.h>
using namespace std;
int map1[6][61]={},yhn,jf1=0,gk1=1,pf_I1=0,pf_bei1=0;
//map1地图 yhn用户数量 jf1积分数量 gk1关卡 pf_I1我的皮肤 pf_bei1背景的皮肤
short xz,cnt=0,n=0,num;
//xz用户选择 cnt计数器 n存档注销时备用 num 存档注销时备用2
string name1,mima1,I,bei,beiy;
//name1用户名 mima1密码 I我的皮肤 bei背景的皮肤 beiy备用
struct zh{//用户结构体
int jf,gk,pf_I,pf_bei;
string name,mima;
}zhz[101];//创建结构体数组
int i();//注册登录
void push(string a);//输出
void jfb1(int n);//获得金币
void pifu();//切换皮肤
void cg();//闯关
void cc();//存档
void de(string a);//删除
void print();//打印地图
void shang();//商店
int r(int max,int min); //随机函数
int main(){
if(!(i()))exit(0);//注册登录 如果连续15次登陆失败则退出
jfb1(20);//每次登录都有奖励(20金币)
switch(pf_I1){//皮肤初始化
case 0:{
I="我";
break;
}
case 1:{
I="△";
break;
}
case 2:{
I="▲";
break;
}
case 3:{
I="□";
break;
}
case 4:{
I="■";
break;
}
case 5:{
I="◇";
break;
}
case 6:{
I="◆";
break;
}
case 7:{
I="○";
break;
}
case 8:{
I="●";
break;
}
}
do{//主游戏系统
push(" 0---退出\n 1---更改皮肤\n 2---开始闯关\n 3---存储\n 4---商场\n 5---注销账号\n 6---删除游戏");
cin>>xz;
switch(xz){
case 1:{
pifu();//更改皮肤
break;
}
case 2:{
cg();//开始闯关
break;
}
case 3:{
cc();//存储
break;
}
case 4:{
shang();//商场
break;
}
case 5:{
de("注销");//注销账号
exit(0);
}
case 6:{
de("删除");//删除游戏
exit(0);
}
}
}while(xz!=0);
exit(0);//退出程序
}
int i(){
ifstream fin("fz");//打开文件
fin>>yhn;//输入用户数量
push("目前发现你有");//提示用户
cout<<yhn;//提示用户
push("个账号\n");//提示用户
for(int i=0;i<yhn;i++){//读入姓名 密码 关卡等级 积分
fin>>zhz[i].name>>zhz[i].mima>>zhz[i].gk>>zhz[i].jf>>zhz[i].pf_bei>>zhz[i].pf_I;
}
fin.close();
push("读取完毕\n");//提示用户
if(yhn==0){
push("请输入2注册账号\n"); //提示用户
}
else push("1---登录\n2---注册\n");//提示用户
cin>>xz;//输入选择
switch(xz){//判断
case 1:{//登录
if(yhn==0){//无用户时
push("无用户");
goto g_2;//只能注册
}
cnt=0;//计数器 初始化
while(1){ //循环
xz=0;//标记变量 初始化
push("请输入用户名:");//提示用户
cin>>name1;//输入 用户名
push("请输入密码:");//提示用户
cin>>mima1;//输入密码
cnt++;//计数器+1
for(int i=0;i<yhn;i++){
if(name1==zhz[i].name){//用户命正确
xz=1;//标记
if(mima1==zhz[i].mima){//密码正确
n=1;//存档注销时备用标记
num=i; //记录
jf1=zhz[i].jf;//记录
gk1=zhz[i].gk;//记录
pf_I1=zhz[i].pf_I;//记录
pf_bei1=zhz[i].pf_bei;//记录
return true;//返回
}
else{//密码错误
push("密码错误!\n");//提示用户
Sleep(1000);//等待
break;//跳出
}
}
}
if(!xz){//用户名错误
push("用户名错误!\n"); //提示用户
}
if(cnt==15){//错误次数过多
push("错误次数过多");//提示用户
return 0;//返回并退出
}
if(cnt%3==0){//错误次数/3==0时
push("锁定");//提示用户
cout<<cnt/2;//提示用户
push("分钟");//提示用户
Sleep(cnt/2*60*1000);//等待
}
system("cls");//清屏
}
break;//跳出
}
case 2:{//注册
goto g_2;//注册
return 1;//返回
}
}
g_2:while(1){//循环
push("请输入用户名(无数字,不和用过的账号名重复):");//提示用户
cin>>name1;//输入
xz=0;//标记变量 初始化
for(int i=0;i<name1.length();i++){//遍历数组
if(name1[i]>='0'&&name1[i]<='9'){//查找数字
xz=1;//标记
break;//退出
}
}
if(xz){// 有数字
push("有数字\n");//提示用户
continue;//跳过本次
}
xz=0;//标记变量 初始化
for(int i=0;i<yhn;i++){//遍历
if(name1==zhz[i].name){//查找相同用户名
xz=1;//标记
}
}
if(xz){//和用过的账号名重复
push("和用过的账号名重复\n");
continue;
}
push("请输入密码(长度>=4):");
cin>>mima1;
if(name1.length()<4){
push("长度不够\n");
continue;
}
ofstream fout("fz");
fout<<++yhn<<endl;
if(yhn>1){
for(int i=0;i<yhn-1;i++){
fout<<zhz[i].name<<' '<<zhz[i].mima<<' '<<zhz[i].gk<<' '<<zhz[i].jf<<' '<<zhz[i].pf_bei<<' '<<zhz[i].pf_I<<endl;
}
fout<<name1<<' '<<mima1<<' '<<1<<' '<<0<<' '<<0<<' '<<0;
push("\n\n录入完毕\n\n");
num=yhn;
break;
}
else{
fout<<1<<endl;
fout<<name1<<' '<<mima1<<' '<<1<<' '<<0<<' '<<0<<' '<<0;
push("\n\n录入完毕\n\n");
break;
}
}
return 0;
}
void push(string a){
for(int i=0;i<a.length();i++){
cout<<a[i];
Sleep(40);
}
}
void jfb1(int n){
MessageBox(NULL,"获得","方块游戏",MB_OK);
cout<<n;
push("枚金币\n");
jf1+=n;
push("目前拥有");
cout<<jf1;
push("枚金币\n");
}
void cg(){
for(int i=1;i<=5;i++){
cout<<"-------\n";
cout<<'|'<<"第"<<i<<"关|";
cout<<"-------\n";
cout<<(((gk1+1)>i||(gk1+1)==i)?"已解锁":"未解锁");
}
}
void print(){
for(int i=1;i<=5;i++){
for(int j=1;j<=60;j++){
if(map1[i][j]==0){
cout<<pf_bei1;
}
else if(map1[i][j]==1){
cout<<pf_I1;
}
else if(map1[i][j]==2){
cout<<"█";
}
else{
cout<<"☆";
}
}
cout<<endl;
}
}
//1375991190
void cc(){
ofstream fout("fz");
if(n){
for(int i=0;i<num;i++){
fout<<zhz[i].name<<' '<<zhz[i].mima<<' '<<zhz[i].gk<<' '<<zhz[i].jf<<' '<<zhz[i].pf_bei<<' '<<zhz[i].pf_I<<endl;
}
cout<<name1<<' '<<mima1<<' '<<gk1<<' '<<jf1<<' '<<pf_bei1<<' '<<pf_I1<<endl;
for(int i=num+1;i<yhn;i++)fout<<zhz[i].name<<' '<<zhz[i].mima<<' '<<zhz[i].gk<<' '<<zhz[i].jf<<' '<<zhz[i].pf_bei<<' '<<zhz[i].pf_I<<endl;
}
else{
for(int i=0;i<yhn-1;i++){
fout<<zhz[i].name<<' '<<zhz[i].mima<<' '<<zhz[i].gk<<' '<<zhz[i].jf<<' '<<zhz[i].pf_bei<<' '<<zhz[i].pf_I<<endl;
}
fout<<name1<<' '<<mima1<<' '<<gk1<<' '<<jf1<<' '<<pf_bei1<<' '<<pf_I1<<endl;
push("\n\n存储完毕\n\n");
fout.close();
}
}
void shang(){
while(1){
cout<<"\n 1---皮肤\n 2---道具\n 3---退出\n";
cin>>xz;
switch(xz){
case 1:{
cout<<endl<<"目前拥有"<<jf1<<"枚金币\n";
push("目前拥有:我的皮肤---");cout<<pf_I1;
push("\n 11---\"△\" 300金币\n 12---\"▲\" 700金币\n 13---\"□\" 1100金币\n 14---\"■\" 1700金币\n");
push(" 15---\"◇\" 2400金币\n 16---\"◆\" 3200金币\n 17---\"○\" 4100金币\n 18---\"●\" 5100金币\n 0---退出");
cin>>xz;
switch(xz){
case 11:{
if(jf1<300){
}
break;
}
}
break;
}
// case :{
//
// break;
// }
}
}
}
void de(string a){
ofstream fout("fz");
push("是否开始");
cout<<a;
push("(Y,N)\n");
cin>>xz;
if(xz=='y'||xz=='Y') {
if(a=="注销"){
cout<<yhn--;
if(n){
for(int i=0;i<num;i++){
fout<<zhz[i].name<<' '<<zhz[i].mima<<' '<<zhz[i].gk<<' '<<zhz[i].jf<<' '<<zhz[i].pf_bei<<' '<<zhz[i].pf_I<<endl;
}
for(int i=num+1;i<yhn;i++)fout<<zhz[i].name<<' '<<zhz[i].mima<<' '<<zhz[i].gk<<' '<<zhz[i].jf<<' '<<zhz[i].pf_bei<<' '<<zhz[i].pf_I<<endl;
}
else{
for(int i=0;i<yhn-1;i++){
fout<<zhz[i].name<<' '<<zhz[i].mima<<' '<<zhz[i].gk<<' '<<zhz[i].jf<<' '<<zhz[i].pf_bei<<' '<<zhz[i].pf_I<<endl;
}
}
push("\n\n存储完毕\n\n");
fout.close();
}
if(a=="删除"){
system("del fz");
system("del 方块游戏.cpp");
push("删除完毕");
system("del 方块游戏.exe");
}
fout.close();
}
}
int r(int max,int min){
srand(time(NULL));
int s=(max-min+1);
return (rand()%s)+min-1;
}
void pifu(){
}