数字炸弹1.03

#include<iostream>
#include<fstream>
#include<ctime>
#include<cstdlib>
#include<cmath>
#include<windows.h>
#include<conio.h>
using namespace std;
char c;
long long fengshu=100;
void HideCursor(){
    CONSOLE_CURSOR_INFO cursor_info = {1,0}; 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
string getPasswordInput(){
    char pwd[100];
    char ch;
    int i=0;
    while((ch=_getch())!='\r'){
        if(ch=='\b'&&i>0){
            cout<<"\b\b";
            i--;
        }else{
            if(ch!='\b'){
                pwd[i]=ch;
                cout<<"*";
                i++;
            }
        }
    }
    pwd[i]='\0';
    return string(pwd);
}
void saveScore(long long score){
    string saveName,savePass;
    cout<<"\n存档设置\n";
    cout<<"请输入要保存的用户名: ";
    cin>>saveName;
    cout<<"请输入要设置的密码: ";
    string pwd=getPasswordInput();
    ofstream outFile("score.dat");
    if(outFile.is_open()){
        outFile<<saveName<<" "<<pwd<<" "<<score;
        outFile.close();
        cout<<"\n\n保存成功!账号["<<saveName<<"]的进度已记录。\n";
    }else{
        cout<<"保存失败!无法打开文件\n";
    }
}
void loadScore(long long &currentScore){
    ifstream inFile("score.dat");
    if(!inFile.is_open()){
        cout<<"\n未找到存档文件,请先进行游戏并保存!\n";
        return;
    }
    string fileName,filePass;
    long long fileScore;
    inFile>>fileName>>filePass>>fileScore;
    inFile.close();
    string inputName,inputPass;
    cout<<"\n读取存档\n";
    cout<<"请输入用户名: ";
    cin>>inputName;
    cout<<"请输入密码: ";
    inputPass=getPasswordInput();
    if(inputName==fileName&&inputPass==filePass){
        currentScore=fileScore;
        cout<<"\n\n登录成功!欢迎回来,"<<inputName<<"!\n";
        cout<<"您的历史最高分已加载:"<<currentScore<<endl;
    } else {
        cout<<"\n\n登录失败!用户名或密码错误。\n";
        cout<<"(提示:如果你忘记了,可以直接开始新游戏并重新保存覆盖)\n";
    }
    _getch();
}
int main(){
    system("color 1B");
    srand(time(0));
    system("cls");
    HideCursor();
    while(1){
        system("cls");
        cout<<"数字炸弹\n" 
            <<"分数 "<<fengshu<<'\n'
            <<"1. 开始游戏\n"
            <<"2. 查看作者\n"
            <<"3. 保存\n"
            <<"4. 读取存档\n"
            <<"5. 退出\n";
        cin>>c;
        if(c=='1'){
            cout<<"输入难度 1.菜鸟 2.人类 3.神\n";
            cin>>c;
            while(c<'1'||c>'3'){ 
                cout<<"输入无效\n";
                cin>>c; 
            }
            int shangjie,sh,xiajie=1,zhadan,cishu=1,caideshu;
            if(c=='1')shangjie=100;
            else if(c=='2')shangjie=7198;
            else shangjie=114514;
            sh=shangjie;
            zhadan=rand()%shangjie+1;
            while(shangjie!=zhadan&&xiajie!=zhadan){
                system("cls");
                cout<<xiajie<<"到"<<shangjie<<'\n';
                cin>>caideshu;
                while((caideshu>=shangjie||caideshu<=xiajie)&&caideshu!=zhadan){
                    cout<<"输入无效\n";
                    cin>>caideshu;
                    cishu+=5;
                }
                if(caideshu==zhadan)break;
                if(caideshu<zhadan)xiajie=caideshu;
                if(caideshu>zhadan)shangjie=caideshu;
                cishu++;
            }
            cout<<"猜中了!炸弹是 "<<zhadan<<endl;
            cout<<"1. 不加倍\n"<<"2. 加倍(有概率负数)\n";
            int jb;
            cin>>jb;
            while(jb<1||jb>2){
                cout<<"输入无效\n";
                cin>>jb;
            }
            int p=(jb+1)*sh/cishu/5+1;
            cout<<"增加 ±"<<p<<"分\n";
            if(jb==1){
                fengshu+=p;
                cout<<"得分增加!";
            }else{
                fengshu=fengshu+pow(-1,rand()%2)*p;
                if(fengshu<0)cout<<"运气不好,分数变负了!";
            }
            cout<<"当前分数:"<<fengshu<<endl;
            cout<<"按任意键返回主菜单\n";
            _getch();
        }else if(c=='2'){
            cout<<"作者信息\n";
            cout<<"洛谷: th111\n";
            cout<<"信友队: yhxyd2594\n";
            system("start https://www.luogu.com.cn/user/2086779");
            cout<<"按任意键返回\n";
            _getch();  
        }else if(c=='3'){
            saveScore(fengshu);
            cout<<"按任意键返回\n";
            _getch();  
        }else if(c=='4'){
            loadScore(fengshu);
            
        }else if(c=='5'){
            break;
		}
    }
    return 0;
}

此话题已在最后回复的 15 天后被自动关闭。不再允许新回复。