用于存储高分的

时间:2017-12-28 15:53:21

标签: turbo-c++

我正在使用turbo c ++创建一个扫雷游戏,并且已经有了合理的部分。

现在我的目标是按时间,升序(最多10条记录)保存高分。 问题是我不得不使用turbo c ++

为此,我创建了一个类成员pname的类播放器,时间存储明显的值。然后,如果文件不存在,则创建一个新文件并将记录发送到该文件中。这里没问题。

当文件已经存在时,问题在于此部分:

player test;
    int flag=-1,count=0; //flag to mark position at which new record will be inserted and count to count total no. of records present
    while(f.read((char*)&test,sizeof(test))&&count<=10) //file is already opened in ifstream mode
    {
        count++;
        if(curr_p.time<=test.time&&flag==-1) //curr_p is the object passed into this fxn and contains the current player's time
        {
            flag=(f.tellg())/sizeof(test)-1;
        }
    }
    f.close();
    f.open("high.dat",ios::binary|ios::in|ios::out);
    if(count<10&&flag==-1)
        flag=count;
    cout<<"\n flag"<<flag<<"\n";
    if(flag!=-1)
    {
        cout<<"\n it's a highscore! now enter your name "<<endl;
        gets(curr_p.pname);
        for(int i=(count-1);i>=flag;i--)
        {
            if(i<10)
            {
                f.seekp((i)*sizeof(test),ios::beg);
                f.read((char*)&test,sizeof(test));
                f.write((char*)&test,sizeof(test));
            }
        }
        f.seekp(flag*sizeof(test),ios::beg);
        f.write((char*)&curr_p,sizeof(test));
    }
    f.close();

这里的问题是一切都很好,直到有2条记录,例如这些是输入2条记录后的内容

   Name                Time                                                     

1. 2nd record          100                                                      

2. 1st record          200  
进入第3条记录后

-

   Name                Time                                                     

1. 3rd record          50                                                       

2. 1st record          200                                                      

3. 1st record          200                                                      

4. 2nd record          100  

我无法弄清楚这里的错误

EDIT1-非常感谢大家的帮助,但我更多地使用了我的代码并将条目数量增加到11并且进行了一些更改,不知何故,所有这些都开始正常工作。猜猜我已经坚持了11人的高分,但听起来比传统的10人高得多。我猜?

0 个答案:

没有答案