用文件记录游戏最高分(C语言)

#玩记分游戏时,有时希望看到历史最高分

##思路

  • 游戏开始,打开最高分存储文件(区分存在和不存在两种情况)
  • 读取文件内容并存储在变量中(一串数字),关闭文件
  • 游戏中及时更新
  • 游戏结束,打开最高分文件并写入新的最高分,关闭文件

##一些准备工作

  • IDE: VC++6.0
  • 了解可能用到的特殊函数: fopen(),fclose(),fscanf(),fprintf()
  • 注意:
  • 文件打开异常的处理(以只读方式r打开不存在的文件会出错)
  • 用什么函数来读取写入数据(处理数字)

##开始写代码

  • 预处理指令:
# include 
  • 主函数:
int main(void)

{
    int highscore = 0;  //存储最高分
    int score = 0;      //当前次,游戏得分

    //获取历史最高分
    getHighScore(&highscore);
    printf("Original high score: %d\n", highscore);

    //假装:游戏中,追踪最高分
    printf("->Start game!\n");
    score = 99;
    if (score > highscore)
        highscore = score;
    printf("->SJL, you win!\n");
    
    //存入当前最高分
    printf("New high score: %d\n", highscore);
    storeHighScore(highscore);

    return 0;
}
  • 获取最高分函数:getHighScore():
//如果把此函数写在main函数后面,记得在main函数前面某行处,加上函数声明!
void getHighScore(int * highscore)
{
    FILE * fp = NULL;   //文件指针,指向成功打开的文件

    //打开文件,以只读的方式r
    fp = fopen("highscore.txt","r");

    //如果文件不存在,打开文件,以写入的方式w
    if (fp == NULL)
    {
        fp = fopen("highscore.txt","w");
        fprintf(fp, "%-10d", *highscore);
    }
    else
        fscanf(fp, "%10d", highscore);

    //关闭文件
    fclose(fp);
}
  • 存入当前最高分函数:storeHighScore():
//如果把此函数写在main函数后面,记得在main函数前面某行处,加上函数声明!
void storeHighScore(int highscore)
{
    FILE * fp = NULL;

    fp = fopen("highscore.txt","w");
    fprintf(fp, "%-10d", highscore);
    fclose(fp);
}
  • 编译链接运行:
    程序运行结果
    文件

##扩展

  • 考虑一下:
    如果是记录前10个玩家的最高分(10行数字),又怎么处理?
    如果是处理字符,而不是数字,该怎么做?
    以不同的方式打开文件,可以用什么函数,把数据读取或写入文件?
    emmmm,暂时只想到这么多……

  • 总结:

  • 目标: 用C语言实现用文件记录最高分的功能

  • 准备工作: 主要是了解文件相关的函数有哪些,怎么用

  • 写查改: 开始撸代码,完成预想的功能

##最后
水平不高,可能还有做得不够好的地方,
希望能和大家交流学习,
转载请注明出处。

你可能感兴趣的:(c)